public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (ModelState.IsValid) { var result = await _platoUserManager.GetForgotPasswordUserAsync(model.UserIdentifier); if (result.Succeeded) { var user = result.Response; if (user != null) { // Ensure account has been confirmed if (await _userManager.IsEmailConfirmedAsync(user)) { user.ResetToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(user.ResetToken)); var emailResult = await _userEmails.SendPasswordResetTokenAsync(user); if (!emailResult.Succeeded) { foreach (var error in emailResult.Errors) { ViewData.ModelState.AddModelError(string.Empty, error.Description); } return(View(model)); } } } } } return(RedirectToAction(nameof(ForgotPasswordConfirmation))); }
public async Task <IActionResult> ResetPassword() { // Get user var user = await _contextFacade.GetAuthenticatedUserAsync(); // Ensure user exists if (user == null) { return(NotFound()); } var result = await _platoUserManager.GetForgotPasswordUserAsync(user.UserName); if (result.Succeeded) { // Ensure account has been confirmed if (await _userManager.IsEmailConfirmedAsync(user)) { user.ResetToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(result.Response.ResetToken)); var emailResult = await _userEmails.SendPasswordResetTokenAsync(result.Response); if (emailResult.Succeeded) { _alerter.Success(T["Check your email. We've sent you a password reset link!"]); } else { foreach (var error in emailResult.Errors) { _alerter.Danger(T[error.Description]); } } } else { _alerter.Danger(T["You must confirm your email before you can reset your password!"]); } } else { foreach (var error in result.Errors) { _alerter.Danger(T[error.Description]); //ViewData.ModelState.AddModelError(string.Empty, error.Description); } } return(RedirectToAction(nameof(EditAccount))); }