コード例 #1
0
        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());
        }
コード例 #2
0
        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);
        }