public async Task <IActionResult> UpdateHouseMate([FromBody] UpdateHouseMateBindingModel model) { //This method is currently used to update HouseId when a housemate joins a House if (ModelState.IsValid) { try { HouseMate houseMate = GetCurrentHouseMate(); if (houseMate.HouseId != 0) { throw new Exception("houseMate already is a member of a house"); } ParseHouseMateFields(houseMate, model); await _houseMateService.UpdateHouseMate(houseMate); return(Ok(houseMate)); } catch (Exception) { throw; } } return(BadRequest("There was a problem updating the HouseMate")); }
public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null) { ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { var houseMate = new HouseMate { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName }; var result = await _userManager.CreateAsync(houseMate, model.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(houseMate); var callbackUrl = Url.EmailConfirmationLink(houseMate.Id, code, Request.Scheme); await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl); await _signInManager.SignInAsync(houseMate, isPersistent : false); _logger.LogInformation("User created a new account with password."); return(RedirectToLocal(returnUrl)); } AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }
private async Task LoadAsync(HouseMate user) { var userName = await _userManager.GetUserNameAsync(user); var phoneNumber = await _userManager.GetPhoneNumberAsync(user); Username = userName; Input = new InputModel { PhoneNumber = phoneNumber }; }
public IActionResult GetHouse(int houseId) { //get current user var currentUserId = _userManager.GetUserId(HttpContext.User); HouseMate currentUser = _houseMateService.GetHouseMate(currentUserId); if (houseId != currentUser.HouseId) { return(BadRequest("Housemate's houseId does not match")); } House house = _houseService.GetHouse(houseId); return(Ok(house)); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (ModelState.IsValid) { var user = new HouseMate { UserName = Input.Email, Email = Input.Email, Name = Input.Name }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); //var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); //code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); //var callbackUrl = Url.Page( // "/Account/ConfirmEmail", // pageHandler: null, // values: new { area = "Identity", userId = user.Id, code = code, returnUrl = returnUrl }, // protocol: Request.Scheme); //await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", // $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); if (_userManager.Options.SignIn.RequireConfirmedAccount) { return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl })); } else { await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(Page()); }
public async Task UpdateHouseMate(HouseMate houseMate) { await _userManager.UpdateAsync(houseMate); }
private void ParseHouseMateFields(HouseMate houseMate, UpdateHouseMateBindingModel model) { houseMate.HouseId = model.HouseId; }