public async Task <IActionResult> ForgotPassword(InputModels.ForgotPasswordInput input) { if (ModelState.IsValid) { var serviceResponse = await AccountRepository.ForgotPassword(input); return(await this.RedirectFromService(serviceResponse, FailureCallback)); } return(await FailureCallback()); async Task <IActionResult> FailureCallback() { await AccountRepository.SignOut(); var viewModel = new ViewModels.Account.ForgotPasswordPage { Email = input.Email }; return(View(viewModel)); } }
public async Task <ServiceModels.ServiceResponse> ForgotPassword(InputModels.ForgotPasswordInput input) { var serviceResponse = new ServiceModels.ServiceResponse(); var account = await UserManager.FindByNameAsync(input.Email); if (account != null && await UserManager.IsEmailConfirmedAsync(account)) { var code = await UserManager.GeneratePasswordResetTokenAsync(account); var callbackUrl = ResetPasswordCallbackLink(account.Id, code); if (!EmailSender.Ready) { serviceResponse.RedirectPath = callbackUrl; return(serviceResponse); } await EmailSender.SendEmailAsync(input.Email, "Reset Password", $"Please reset your password by clicking here: <a href='{callbackUrl}'>link</a>"); } serviceResponse.RedirectPath = UrlHelper.Action(nameof(Account.ForgotPasswordConfirmation)); return(serviceResponse); }