public ForgotPasswordEmailTemplate GetForgotPasswordEmailTemplate(ForgotPasswordViewModel model, string callbackUrl)
        {
            string username    = db.AspNetUsers.Where(a => a.Email == model.Email).Select(a => a.UserName).DefaultIfEmpty("").FirstOrDefault();
            string websiteName = generalFunction.GetAppSettingsValue("websiteName");
            string subject     = "Reset Password for " + websiteName;
            var    link        = "<a href='" + callbackUrl + "'>here</a>";
            string body        = "<p>Hi " + username + ",<br /><br /> We got a request to reset your password for " + websiteName + ".</p><p>If it is true, Click " + link + " to reset your password.</p>" +
                                 "<p>If you did not do so, please ignore this email.</p>" +
                                 "<p><i>Do not reply to this email.</i></p><br /><br /><p>Regards,<br>" + websiteName + "</p>";
            ForgotPasswordEmailTemplate forgotPasswordEmail = new ForgotPasswordEmailTemplate();

            forgotPasswordEmail.Subject = subject;
            forgotPasswordEmail.Body    = body;
            return(forgotPasswordEmail);
        }
Exemplo n.º 2
0
        internal string GenerateForgotPasswordEmailBody(string linkUrl)
        {
            // Invoke T4 template
            ForgotPasswordEmailTemplate emailTemplate = new ForgotPasswordEmailTemplate
            {
                Session = new Dictionary <string, object>
                {
                    { "ForgotPasswordLinkUrl", linkUrl }
                }
            };

            emailTemplate.Initialize();

            return(emailTemplate.TransformText());
        }
        public async Task <ActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var username = db.AspNetUsers.Where(a => a.Email == model.Email).Select(a => a.UserName).DefaultIfEmpty("").FirstOrDefault();
                var user     = await UserManager.FindByNameAsync(username);

                //if user not exists or the email is not yet confirmed, go to ForgotPasswordConfirmation page instead of showing detail error message, to ensure account security
                if (user == null || !(await UserManager.IsEmailConfirmedAsync(user.Id)))
                {
                    // Don't reveal that the user does not exist or is not confirmed
                    return(View("ForgotPasswordConfirmation"));
                }
                string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);

                var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                ForgotPasswordEmailTemplate forgotPasswordEmailTemplate = GetForgotPasswordEmailTemplate(model, callbackUrl);
                SendEmail(model.Email, forgotPasswordEmailTemplate.Subject, forgotPasswordEmailTemplate.Body);
                return(RedirectToAction("ForgotPasswordConfirmation", "Account"));
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }