public ActionResult ForgotPassword(ForgotPasswordViewModel model) { // Get the userName by the email address string userName = Membership.GetUserNameByEmail(model.Email); if (String.IsNullOrEmpty(userName)) { ModelState.AddModelError("", ErrorCodeToString(AccountCreateStatus.InvalidUserName)); return View(model); } // Get the user by the userName MembershipUser user = Membership.GetUser(userName); if (user == null) { ModelState.AddModelError("", ErrorCodeToString(AccountCreateStatus.InvalidUserName)); return View(model); } else if (!user.IsApproved) { ModelState.AddModelError("", ErrorCodeToString(AccountCreateStatus.UserNotYetApproved)); return View(model); } else if (user.IsLockedOut) { ModelState.AddModelError("", ErrorCodeToString(AccountCreateStatus.UserAccountLocked)); return View(model); } else { if (ModelState.IsValid) { RegisterPasswordSuccessModel rpsModel = new RegisterPasswordSuccessModel(); rpsModel = ResetPassword(userName, model.PasswordAnswer, GetLoginUrl()); if (rpsModel.RegisterPasswordSuccess) { return RedirectToAction("ForgotPasswordSuccess", new { userName = userName }); } else { ModelState.AddModelError("", rpsModel.ErrorMessage); return View(model); } } } return View(model); }
/// <summary> /// This allows the non-logged on user to have his password /// reset and emailed to him. /// </summary> /// <returns></returns> public ActionResult ForgotPassword() { var viewModel = new ForgotPasswordViewModel() { RequiresQuestionAndAnswer = Membership.RequiresQuestionAndAnswer }; return View(viewModel); }