コード例 #1
0
        public ChangePasswordResult ChangePassword(ChangePasswordModel model)
        {
            var validationResult = ValidateChangeModel(model);

            if (validationResult != null)
            {
                return(validationResult);
            }

            try
            {
                var currentPasswordOkay = WebSecurity.Login(model.UserName, model.CurrentPassword, false);

                if (!currentPasswordOkay)
                {
                    var badPasswordResult = new ChangePasswordResult
                    {
                        Success = false, Message = "The Current Password supplied is incorrect"
                    };

                    badPasswordResult.AddFailingField(x => x.CurrentPassword);

                    return(badPasswordResult);
                }

                WebSecurityService.UpdatePasswordAndActivate(model.UserName, model.NewPassword);
                return(ChangePasswordResult.Successful);
            }
            catch (Exception e)
            {
                _log.Error("ChangePassword", e);
                return(DatabaseUnreachableResult <ChangePasswordResult>());
            }
        }
コード例 #2
0
        private ChangePasswordResult ValidateChangeModel(ChangePasswordModel model)
        {
            var failedRequiredField =
                ValidateRequired <ChangePasswordResult, ChangePasswordModel>(x => x.CurrentPassword, model) ??
                ValidateRequired <ChangePasswordResult, ChangePasswordModel>(x => x.NewPassword, model) ??
                ValidateRequired <ChangePasswordResult, ChangePasswordModel>(x => x.ConfirmPassword, model);

            if (failedRequiredField != null)
            {
                return(failedRequiredField);
            }

            var confirmationMismatch = !model.NewPassword.Equals(model.ConfirmPassword);

            if (confirmationMismatch)
            {
                var mismatchResult = new ChangePasswordResult
                {
                    Message = "New Password and Confirm Password must match.",
                    Success = false
                };

                mismatchResult.AddFailingField(x => x.NewPassword)
                .AddFailingField(x => x.ConfirmPassword);

                return(mismatchResult);
            }

            if (!_passwordService.PasswordIsStrong(model.NewPassword))
            {
                return(new ChangePasswordResult
                {
                    Success = false,
                    Message = "NewPassword is invalid"
                }
                       .AddFailingField(x => x.NewPassword));
            }

            return(null);
        }
コード例 #3
0
        public async Task <ChangePasswordResult> ChangePassword(ChangePasswordModel model)
        {
            var validationResult = ValidateChangeModel(model);

            if (validationResult != null)
            {
                return(validationResult);
            }

            try
            {
                var currentPasswordOkay = await _identityProvider.VerifyUserPassword(model.UserName, model.CurrentPassword);

                if (!currentPasswordOkay)
                {
                    var badPasswordResult = new ChangePasswordResult
                    {
                        Success = false,
                        Message = "The Current Password supplied is incorrect"
                    };

                    badPasswordResult.AddFailingField(x => x.CurrentPassword);

                    return(badPasswordResult);
                }

                await _identityProvider.ResetUserPassword(model.UserName, model.NewPassword);

                return(ChangePasswordResult.Successful);
            }
            catch (Exception e)
            {
                _log.Error("ChangePassword", e);
                return(DatabaseUnreachableResult <ChangePasswordResult>());
            }
        }