public async Task <EmailTemplate> GetForgotPasswordEmailAsync(ForgotPasswordEmailViewModel forgotPasswordEmailViewModel, CultureInfo cultureInfo) { CultureInfo cultureInfoBackup = CultureInfo.CurrentCulture; CultureInfo.CurrentCulture = cultureInfo; CultureInfo.CurrentUICulture = cultureInfo; string view = GetForgotPasswordEmailView(cultureInfo); if (string.IsNullOrEmpty(view)) { throw new Exception("Forgot password email view model path is empty"); } string subject = GetForgotPasswordEmailSubject(cultureInfo); if (string.IsNullOrEmpty(subject)) { throw new Exception("Forgot password email subject is empty"); } string body = await _templateRenderer.RenderViewAsync(view, forgotPasswordEmailViewModel).ConfigureAwait(false); CultureInfo.CurrentCulture = cultureInfoBackup; CultureInfo.CurrentUICulture = cultureInfoBackup; return(new EmailTemplate(subject, body)); }
public async Task <IActionResult> ResetPassword([FromBody] ForgotPasswordEmailViewModel forgotPasswordEmail) { if (!ModelState.IsValid) { return(BadRequest("Model State Is not valid!")); } var user = await _userManager.FindByEmailAsync(forgotPasswordEmail.Email); if (user == null) { return(BadRequest("Email is incorrect.")); } var code = await _userManager.GeneratePasswordResetTokenAsync(user); var callbackUrlCode = Uri.EscapeDataString(code); var callbackUrlString = $"https://localhost:44312/auth/resetpassword?userId={user.Id}&code={callbackUrlCode}&page=resetpassword"; await _emailSender.SendEmailAsync(forgotPasswordEmail.Email, "Confirm your email", $"Hello, <br /> You can reset your password with <a href='{HtmlEncoder.Default.Encode(callbackUrlString)}'>clicking here</a>."); // await _signInManager.SignInAsync(user, isPersistent: false); return(new OkObjectResult("Message Sent")); }
public async Task <IActionResult> ForgotPassword(ForgotPasswordViewModel model) { if (!ModelState.IsValid) { return(View(model)); } Adherent stolonsUser = _context.Adherents.FirstOrDefault(x => model.Email.Equals(x.Email, StringComparison.CurrentCultureIgnoreCase)); if (stolonsUser == null) { return(View("ForgotPasswordConfirmation")); } ApplicationUser appUser = await _userManager.FindByEmailAsync(stolonsUser.Email.ToString()); string resetPasswordToken = await _userManager.GeneratePasswordResetTokenAsync(appUser); resetPasswordToken = System.Net.WebUtility.UrlEncode(resetPasswordToken); string link = "http://" + Configurations.SiteUrl + "/Account/ResetPassword?token=" + resetPasswordToken + "&mail=" + stolonsUser.Email; //Send mail ForgotPasswordEmailViewModel vmodel = new ForgotPasswordEmailViewModel(stolonsUser, link); AuthMessageSender.SendEmail(Configurations.Application.StolonsLabel, stolonsUser.Email, stolonsUser.Name, "Stolons: Oubli de votre mot de passe", base.RenderPartialViewToString("ResetPasswordEmailTemplate", vmodel), null, null); return(View("ForgotPasswordConfirmation")); }