Пример #1
0
        public ActionResult ResetPasswordPost(VendrPortalResetPasswordDto model)
        {
            if (!ModelState.IsValid)
            {
                return(CurrentUmbracoPage());
            }

            var username = Membership.GetUserNameByEmail(model.Email) ?? model.Email;
            var member   = Membership.GetUser(username, false);

            if (member == null)
            {
                TempData["VendrPortalErrorMessage"] = "Unable to reset password";
                return(RedirectToUmbracoPage(CurrentPage.GetPortalResetPasswordPage()));
            }

            var key  = $"VendrPortal.ResetPassword+{model.Email.ToLower().Trim().GenerateHash()}";
            var code = KeyValueStoreHelper.GetAndDelete(key);

            if (code == null || !TimeBasedCodeHelper.ValidateCode(model.Code))
            {
                TempData["VendrPortalErrorMessage"] = "Unable to reset password";
                return(RedirectToUmbracoPage(CurrentPage.GetPortalResetPasswordPage()));
            }

            // Change the members password
            var tmpPassword = member.ResetPassword();

            member.ChangePassword(tmpPassword, model.Password);

            // Set auth cookie
            FormsAuthentication.SetAuthCookie(username, false);

            // Redirect to protected portal root
            var protectedRoot = CurrentPage.GetPortalProtectedRoot();

            return(protectedRoot != null
                ? RedirectToUmbracoPage(protectedRoot.FirstChild())
                : RedirectToCurrentUmbracoPage());
        }