public async Task <IActionResult> ChangeEmail(EmailFieldModel model) { string confirmText = null; var user = await _userManager.FindByNameAsync(model.UserName); if (new EmailAddressAttribute().IsValid(model.Email)) { if (model.Email != user.Email) { if (!((await _userManager.FindByEmailAsync(model.Email)) is AppUser)) { if (user is AppUser) { user.Email = model.Email; user.EmailConfirmed = true; var result = await _userManager.UpdateAsync(user); if (result.Succeeded == true) { confirmText = "The email was successfully changed"; } else { foreach (var error in result.Errors) { ModelState.AddModelError("", error.Description); } } } else { ModelState.AddModelError("", "The user doesn't found. Please, reload page or refer to administrator."); } } else { ModelState.AddModelError("Email", "The email is already busy"); } } else { ModelState.AddModelError("", "Old and new email match up"); } } else { ModelState.AddModelError("", "Input correct email adress"); } var returnModel = await getUserProps(model.UserName); return(PartialView("Settings/EmailField", new EmailFieldModel() { Email = user.Email, ContentOpened = true, ConfirmText = confirmText, UserName = model.UserName })); }
public async Task <IActionResult> ChangeEmail(EmailFieldModel model) { string confirmText = null; var user = await _userManager.FindByNameAsync(User.Identity.Name); if (new EmailAddressAttribute().IsValid(model.Email)) { if (model.Email != user.Email) { if (!((await _userManager.FindByEmailAsync(model.Email)) is AppUser)) { if (user is AppUser) { var token = await _userManager.GenerateChangeEmailTokenAsync(user, model.Email); var resetUrl = Url.Action( "ConfirmChangeEmail", "Account", new { userId = user.Id, newEmail = model.Email, token = token }, protocol: Request.Scheme); await SendEmail(model.Email, "Email change request", $"Please confirm your new email by <a href='{HtmlEncoder.Default.Encode(resetUrl)}'>clicking here</a>." + $"If you didn't do it, please ignore the message."); confirmText = $"We send you you a message by {user.Email} with request to change to new email. Please check your email."; } else { ModelState.AddModelError("", "The user doesn't found. Please, reload page or refer to administrator."); } } else { ModelState.AddModelError("Email", "The email is already busy"); } } else { ModelState.AddModelError("", "Old and new email match up"); } } else { ModelState.AddModelError("", "Input correct email adress"); } var returnModel = await getUserProps(User.Identity.Name); return(PartialView("Settings/EmailField", new EmailFieldModel() { Email = user.Email, ContentOpened = true, ConfirmText = confirmText })); }
public void BeforeEach() { _classUnderTest = new EmailFieldModel(); }