public ActionResult ForgotPasswordForm()
 {
     var viewModel = new ForgotPasswordViewModel();
     return View(PathHelper.GetThemePartialViewPath("ForgotPasswordForm"), viewModel);
 }
        public ActionResult ForgotPassword(ForgotPasswordViewModel model)
        {
            var changePasswordSucceeded = true;
            var currentUser = new Member();
            var newPassword = AppHelpers.RandomString(8);

            try
            {
                if (ModelState.IsValid)
                {
                    currentUser = ServiceFactory.MemberService.GetByEmail(model.EmailAddress);
                    if (currentUser != null)
                    {
                        changePasswordSucceeded = ServiceFactory.MemberService.ResetPassword(currentUser, newPassword);
                    }
                    else
                    {
                        changePasswordSucceeded = false;
                    }
                }
            }
            catch (Exception ex)
            {
                LogError(string.Format("Error resetting password for {0}", model.EmailAddress), ex);
                changePasswordSucceeded = false;
            }

            if (changePasswordSucceeded)
            {
                var sb = new StringBuilder();
                sb.AppendFormat("<p>{0}</p>", string.Format(Lang("Members.ForgotPassword.Email"), Settings.ForumName));
                sb.AppendFormat("<p><b>{0}</b></p>", newPassword);
                var email = new Email
                {
                    EmailFrom = Settings.NotificationReplyEmailAddress,
                    EmailTo = currentUser.Email,
                    NameTo = currentUser.UserName,
                    Subject = Lang("Members.ForgotPassword.Subject")
                };
                email.Body = ServiceFactory.EmailService.EmailTemplate(email.NameTo, sb.ToString());
                ServiceFactory.EmailService.SendMail(email);

                // We use temp data because we are doing a redirect
                ShowMessage(new GenericMessageViewModel
                {
                    Message = Lang("Members.ForgotPassword.SuccessMessage"),
                    MessageType = GenericMessages.Success
                });
                return CurrentUmbracoPage();
            }

            ModelState.AddModelError("", Lang("Members.ForgotPassword.ErrorMessage"));
            // Hack to show form validation
            ShowModelErrors();
            return CurrentUmbracoPage();
        }