public IActionResult ActivateAccountAndResetPassword(string?accountCode = null, string?passwordCode = null) { if (accountCode == null || passwordCode == null) { return(BadRequest("A codes must be supplied for account activation and password reset.")); } var activateAccountAndResetPasswordViewModel = new ActivateAccountAndResetPasswordViewModel { AccountActivationCode = accountCode, PasswordResetCode = passwordCode }; return(View(activateAccountAndResetPasswordViewModel)); }
public async Task <IActionResult> ActivateAccountAndResetPassword(ActivateAccountAndResetPasswordViewModel vm) { if (!ModelState.IsValid) { return(View()); } var user = await _userManager.FindByEmailAsync(vm.Email); if (user == null) { // Don't reveal that the user does not exist return(RedirectToAction("Index", "Home", new { userActivated = true })); } var confirmEmail = await _userManager.ConfirmEmailAsync(user, Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(vm.AccountActivationCode))); if (!confirmEmail.Succeeded) { foreach (var error in confirmEmail.Errors) { ModelState.AddModelError(string.Empty, error.Description); } return(View()); } var result = await _userManager.ResetPasswordAsync(user, Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(vm.PasswordResetCode)), vm.Password); if (result.Succeeded) { var signInResult = await _signInManager.PasswordSignInAsync(vm.Email, vm.Password, false, false); if (signInResult.Succeeded) { return(RedirectToAction("Index", "Home", new { Area = "Admin" })); } return(RedirectToAction("Index", "Home", new { userActivated = true })); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } return(View()); }