Example #1
0
        public ActionResult ResetAccount(ResetAccountModel model)
        {
            string recaptchaprivatekey = BgResources.Recaptcha_PrivateKeyHttp;

            try
            {
                if (!ReCaptcha.Validate(privateKey: recaptchaprivatekey))
                {
                    ModelState.AddModelError("recaptcha", Resources.AppMessages.Error_Recaptcha);
                }
            }
            catch (Exception)
            {
                ModelState.AddModelError("recaptcha", Resources.AppMessages.Error_Recaptcha_Key);
            }

            if (ModelState.IsValid)
            {
                User user = AccountServices.FindUser(usr => usr.Email == model.Email);
                if (user == null)
                {
                    ModelState.AddModelError("Email", Resources.AppMessages.Error_Email_Not_Exist);
                    return(View(model));
                }
                try
                {
                    string token = null;
                    token = CodeFirstSecurity.GeneratePasswordResetToken(user.Username, tokenExpirationInMinutesFromNow: 1440);
                    SmtpClient client = new SmtpClient {
                        Host = BgResources.Email_Server, Port = Int32.Parse(BgResources.Email_SmtpPort), EnableSsl = BgResources.Email_SSL, Credentials = new NetworkCredential(BgResources.Email_UserName, BgResources.Email_Password)
                    };
                    UserMailer.PasswordReset(token, user).Send(new SmtpClientWrapper {
                        InnerSmtpClient = client
                    });
                    ViewBag.Email = model.Email;
                    return(View("CompleteResetAccount"));
                }
                catch (InvalidOperationException ex)
                {
                    ModelState.AddModelError("UserName", ex.Message);
                }
                catch (Exception ex)
                {
                    throw new SmtpException(Resources.AppMessages.Error_SendMail);
                }
            }
            return(View(model));
        }
        public ActionResult ForgotPassword(string email)
        {
            int UserId = 0;

            try
            {
                // validate email
                //  UserId = WebSecurity.GetUserId(email);


                if (!WebSecurity.UserExists(email))
                {
                    @ViewBag.Message = "<div class=\"alert alert-danger\">Votre compte n'est pas valide</div>";
                    return(View());
                }

                UserId = WebSecurity.GetUserId(email);
                if (!OAuthWebSecurity.HasLocalAccount(UserId))
                {
                    @ViewBag.Message = "<div class=\"alert alert-danger\">Votre compte est un compte externe. Vous ne pouvez pas changer votre password sur notre site.</div>";
                    return(View());
                }

                // generate token
                string token = WebSecurity.GeneratePasswordResetToken(email, 1440);

                //send email
                _welcomeMailer.PasswordReset(email, token).Send();
            }
            catch (InvalidOperationException exp)
            {
                throw exp;
            }
            catch (Exception exp) {
                @ViewBag.Message = "<div class=\"alert alert-danger\">Une erreur a été pendant la réinitialisation de votre mot de passe.</div>";
                return(View());
            }

            @ViewBag.Message = "<div class=\"alert alert-danger\">La réinitialisation de votre mot de passe a bien été prise en compte.Nous avons envoyé par courrier électronique des instructions pour configurer votre mot de passe à l'adresse e-mail que vous avez soumis. Vous devriez le recevoir sous peu.</div>";
            return(View());
        }
        public ActionResult ForgotPassword(ForgotPasswordModel forgotPasswordModel)
        {
            if (ModelState.IsValid)
            {
                var passwordResetRequest = new PasswordResetRequestCommand(forgotPasswordModel.Email);
                var result = ExecuteCommand(passwordResetRequest);

                if (result)
                {
                    _userMailer.PasswordReset(passwordResetRequest.Name, passwordResetRequest.Token, forgotPasswordModel.Email).Send();

                    return(View("ForgotPasswordMailSent"));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "We couldn't find an account with the given email address. Please check the email address.");
                }
            }

            return(View(forgotPasswordModel));
        }
Example #4
0
        public ActionResult ResetPassword(ResetPasswordModel model)
        {
            UserProfile user         = repository.Users.FirstOrDefault(u => u.UserName == model.UserName);
            string      emailAddress = user == null ? null : user.Email;

            try
            {
                if (!string.IsNullOrEmpty(emailAddress))
                {
                    string confirmationToken =
                        WebSecurity.GeneratePasswordResetToken(model.UserName);

                    userMailer.PasswordReset(emailAddress, model.UserName, confirmationToken).Send();

                    logger.Info("Send reset password email to \"" + model.UserName + "\"");

                    return(RedirectToAction("ResetPasswordStepTwo"));
                }
            }
            catch (Exception) { }

            return(RedirectToAction("InvalidUserName"));
        }