Пример #1
0
        public ActionResult ForgotPassword(AuthForgottenPasswordModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var user = FindUser(model.Email);

            if (user == null)
            {
                ModelState.AddModelError("", "The e-mail address you entered does not match any accounts on record.");
                return(View());
            }

            var resetToken    = user.GenerateResetToken(TimeSpan.FromHours(24));
            var emailTemplate = _emailTemplatesRepository.GetTemplateByName(Utilities.ToDescriptionString(EmailTemplateCode.ForgotPassword));

            model.ResetPasswordUrl = $"{Request.Url.Authority}/auth/resetpassword?email={model.Email}&resettoken={resetToken}";

            emailTemplate = EmailTemplateFactory.ParseTemplate(emailTemplate, model);
            var mailMessage = MailMessageMapper.ConvertToMailMessage(emailTemplate);

            var sent = EmailServiceFactory.GetEmailService().SendMail(mailMessage);

            return(RedirectToAction("forgotpasswordemail"));
        }
Пример #2
0
        public void T04_ForgotPassword()
        {
            var result = _controller.ForgotPassword() as ViewResult;

            Assert.IsNotNull(result);
            var model = result.Model as AuthForgottenPasswordModel;

            Assert.IsNull(model);

            model = new AuthForgottenPasswordModel {
                Email = "*****@*****.**"
            };
            // Wrong email
            var wrongPostResult = _controller.ForgotPassword(model) as ViewResult;

            Assert.IsNotNull(wrongPostResult);
            Assert.IsFalse(wrongPostResult.ViewData.ModelState.IsValid);

            // Correct email
            model.Email = _user.Email;
            _controller.ModelState.Clear();

            var correctResult = _controller.ForgotPassword(model) as RedirectToRouteResult;

            Assert.IsNotNull(correctResult);
            Assert.AreEqual(correctResult.RouteValues["action"], "forgotpasswordemail");
        }
Пример #3
0
        public void T04_ForgotPassword()
        {
            var result = Controller.ForgotPassword() as ViewResult;

            Assert.IsNotNull(result, "Forgot password view result is null");
            var model = result.Model as AuthForgottenPasswordModel;

            Assert.IsNull(model, "Forgot password model is null");

            model = new AuthForgottenPasswordModel {
                Email = "*****@*****.**"
            };
            // Wrong email
            var wrongPostResult = Controller.ForgotPassword(model) as ViewResult;

            Assert.IsNotNull(wrongPostResult, "Forgot password with wrong email view result is null");
            Assert.IsFalse(wrongPostResult.ViewData.ModelState.IsValid, "Forgot password  model with wrong email have incorrect validation");

            // Correct email
            model.Email = User.Email;
            Controller.ModelState.Clear();

            var correctResult = Controller.ForgotPassword(model) as RedirectToRouteResult;

            Assert.IsNotNull(correctResult, "Forgot password with correct email view result is null");
            Assert.AreEqual(correctResult.RouteValues["action"], "forgotpasswordemail", "Forgot password with correct email have incorrect redirect");
        }