public async Task <IHttpActionResult> ForgotPassword(UserForgotPwdModel userModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } string code = await _repo.SendRecoveryToken(userModel); // If we got this far, something failed, redisplay form return(Ok()); }
public async Task <string> SendRecoveryToken(UserForgotPwdModel userModel) { var provider = new DpapiDataProtectionProvider("Sample"); _userManager.UserTokenProvider = new DataProtectorTokenProvider <IdentityUser>(provider.Create("PasswordRecovery")); var user = _userManager.FindByEmail(userModel.Email); if (user != null) { string code = _userManager.GeneratePasswordResetToken(user.Id); string callbackUrl = "http://lekiosktest.azurewebsites.net/#/resetPassword/" + user.Id + "/" + code; MailMessage message = new System.Net.Mail.MailMessage(); string fromEmail = "*****@*****.**"; string fromPW = "xxxxxxxxxx"; string toEmail = userModel.Email; message.From = new MailAddress(fromEmail); message.To.Add(toEmail); message.Subject = "[LeKioskTest] Mot de pass oublié"; message.Body = "Pour redéfinir votre mot de pass suivez ce lien, ou copiez le sur votre navigateur favori: " + callbackUrl; message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; using (SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587)) { smtpClient.EnableSsl = true; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new NetworkCredential(fromEmail, fromPW); smtpClient.Send(message.From.ToString(), message.To.ToString(), message.Subject, message.Body); } //await _userManager.SendEmailAsync(user.Id, "Reset Password", "Please reset your password by clicking <a href=\"" + callbackUrl + "\">here</a>"); return(code); } return(null); }