Пример #1
0
        public ActionResult ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    UserSignInManager manager = new UserSignInManager();
                    var result = manager.GeneratePasswordResetToken(model.Email);

                    if (result.Status == PasswordResetStatus.Success)
                    {
                        EmailHelpers eh        = new EmailHelpers();
                        string       resetcode = result.ResetToken;

                        string username    = result.EmailAddress;
                        var    callbackUrl = Url.Action("ResetPassword", "Account", new { code = resetcode }, protocol: Request.Url?.Scheme);

                        eh.SendPasswordResetEmail(model.Email, callbackUrl);

                        var logMessage = Helpers.FormatLogMessage(TableNameConstants.UsersTableName, username, model.Email, "Password reset email sent successfully!!!");
                        log.Info(logMessage);

                        return(RedirectToAction("ForgotPasswordConfirmation", "Account"));
                    }
                    else
                    {
                        log.WarnFormat("Unable to reset password for email: {0}", model.Email);
                        ModelState.AddModelError("",
                                                 result.Status == PasswordResetStatus.InvalidEmailAddress
                                ? "Invalid email address provided. Please try again."
                                : $"Unable to reset password for email: {model.Email}");
                    }
                }
                catch (Exception ex)
                {
                    string message = "Exception occurred!!!";
                    log.Error(message, ex);
                    ModelState.AddModelError("Exception", message);
                    return(View(model));
                }
            }

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