public ActionResult MemberResetPasswordSetRenderForm()
        {
            var model = new MemberResetPasswordSetModel();

            model.Email        = Request.QueryString["email"] ?? string.Empty;
            model.ValidateGUID = Request.QueryString["validateGUID"] ?? string.Empty;
            var memberService = Services.MemberService;
            var member        = memberService.GetByEmail(model.Email);

            if (member != null)
            {
                string   resetPasswordGuid       = member.GetValue <string>("validateGUID");
                DateTime resetPasswordGuidExpiry = member.GetValue <DateTime>("validateGUIDExpiry");

                if (model.ValidateGUID != String.Empty && resetPasswordGuid == model.ValidateGUID && DateTime.Now < resetPasswordGuidExpiry && model.PasswordNew == model.PasswordNew2)
                {
                    TempData["Success"] = "False";
                    return(PartialView("Account/MemberResetPasswordSet", model));
                }
                else
                {
                    TempData["Status"] = "Your password link is invalid - please request a new link.";
                    return(PartialView("Account/MemberResetPassword", model));
                }
            }
            else
            {
                TempData["Status"] = "Your password link is invalid - please request a new link.";
                return(PartialView("Account/MemberResetPassword", model));
            }
        }
        public ActionResult MemberResetPasswordSetPost(MemberResetPasswordSetModel model)
        {
            if (ModelState.IsValid)
            {
                var memberService = Services.MemberService;
                var member        = memberService.GetByEmail(model.Email);

                if (member != null)
                {
                    string   resetPasswordGuid       = member.GetValue <string>("validateGUID");
                    DateTime resetPasswordGuidExpiry = member.GetValue <DateTime>("validateGUIDExpiry");

                    if (model.ValidateGUID != String.Empty && resetPasswordGuid == model.ValidateGUID && DateTime.Now < resetPasswordGuidExpiry && model.PasswordNew == model.PasswordNew2)
                    {
                        member.IsLockedOut = false; // if the user has tried repeatedly they might have locked their account
                        member.SetValue("validateGUIDExpiry", DateTime.Now.AddHours(-1));
                        member.IsApproved = true;   // depending on your security rules this might not be right for you.

                        // remember to save
                        memberService.Save(member);

                        // save their password
                        memberService.SavePassword(member, model.PasswordNew);

                        TempData["Success"] = "True";
                        TempData["Status"]  = "Your password has been changed - you can now login.";
                        return(CurrentUmbracoPage());
                    }
                    else
                    {
                        TempData["Status"] = "Your link has expired - please try requesting the new password again.";
                        return(CurrentUmbracoPage());
                    }
                }
                else
                {
                    // model is invalid
                    TempData["Status"] = "Invalid information supplied.";
                    return(CurrentUmbracoPage());
                }
            }
            else
            {
                // model is invalid
                TempData["Status"] = "Invalid information supplied.";
                return(CurrentUmbracoPage());
            }
        }