public virtual async Task <IActionResult> EmailRequired(EmailRequiredViewModel model) { var user = await UserManager.FindByIdAsync(HttpContext.User.GetUserId()); if (user == null || !string.IsNullOrWhiteSpace(user.Email)) { return(this.RedirectToSiteRoot(CurrentSite)); } if (!ModelState.IsValid) { return(View(model)); } var emailUser = await UserManager.FindByEmailAsync(model.Email); if (emailUser != null && emailUser.Id != user.Id) { //email already in use but don't disclose that ModelState.AddModelError("invalidEmail", StringLocalizer["The provided email address was not accepted, please use a different email address."]); return(View(model)); } var result = await UserManager.SetEmailAsync(user, model.Email); if (result.Succeeded) { user.RolesChanged = true; //needed to get the new email claim await UserManager.UpdateAsync(user); return(this.RedirectToSiteRoot(CurrentSite)); } return(View(model)); }
public virtual async Task <IActionResult> EmailRequired() { if (!AccountService.IsSignedIn(User)) { return(this.RedirectToSiteRoot(CurrentSite)); } var user = await UserManager.FindByIdAsync(HttpContext.User.GetUserId()); if (user == null || !string.IsNullOrWhiteSpace(user.Email)) { return(this.RedirectToSiteRoot(CurrentSite)); } var model = new EmailRequiredViewModel { }; return(View(model)); }