Exemple #1
0
        public async Task <ActionResult> ForgetPassword(ForgetPasswordViewModel model)
        {
            var forgetPasswordValidation = securityProvider.FindUserByEmailAddress(model.Email);

            if (forgetPasswordValidation != null && this.IsCaptchaValid("Invalid captcha words"))
            {
                var newPassword = securityProvider.ResetPassword(forgetPasswordValidation, model.Email);
                var viewModel   = new ForgetPasswordMailViewModel();
                viewModel.CustomerName = String.Format("{0} {1}",
                                                       forgetPasswordValidation.FirstName,
                                                       forgetPasswordValidation.LastName);
                viewModel.NewPassword = newPassword;


                var template = emailTemplateProvider.GetEmailTemplate(EmailTemplates.ForgetPassword);

                var config = new TemplateServiceConfiguration();
                using (var service = RazorEngineService.Create(config))
                {
                    var subject = service.RunCompile(template.Subject, "subject", typeof(ForgetPasswordMailViewModel),
                                                     viewModel);
                    var content = service.RunCompile(template.Content, "content", typeof(ForgetPasswordMailViewModel),
                                                     viewModel);
                    await mailer.SendMail(model.Email, template.Bcc, subject, content);
                }
                TempData["EmailAddress"] = model.Email;
                return(RedirectToAction("ForgetPasswordSuccess"));
            }
            ModelState.AddModelError("ForgetPassword", "Sorry we are unable to validate your account. Please try again.");
            return(RedirectToAction("ForgetPassword"));
        }