Пример #1
0
        public void ChangePassword(ChangePasswordParameter param)
        {
            using (var context = base.CreateUserContext())
            {
                EmailAuth  emailAuth  = null;
                MobileAuth mobileAuth = null;
                if (param.AuthCode != null)
                {
                    Guid emailAuthCode;
                    if (Guid.TryParse(param.AuthCode, out emailAuthCode))
                    {
                        emailAuth = this.CheckUserEmailAuth(context, emailAuthCode);
                    }
                    else
                    {
                        string[] mobileAuthCode = param.AuthCode.Split(',');
                        if (mobileAuthCode.Length != 2)
                        {
                            throw new InvalidInvokeException("参数错误");
                        }
                        mobileAuth     = this.CheckUserMobileAuth(context, mobileAuthCode[0], int.Parse(mobileAuthCode[1]));
                        param.UserName = mobileAuth.UserName;
                    }
                }

                var id = this.SignIn(new SignInParameter()
                {
                    AppID    = param.AppID,
                    UserName = param.UserName,
                    Password = param.OldPassword
                });
                if (!id.IsAuthenticated)
                {
                    throw new InvalidInvokeException("账户不存在或密码错误");
                }

                using (var scope = DbScope.Create())
                {
                    scope.BeginTransaction();

                    param.NewPassword = CryptoManaged.MD5Hex(param.NewPassword);
                    context.Accounts.Update(t => t.RowID == id.UserID, t => new Account()
                    {
                        Password = param.NewPassword
                    });
                    if (emailAuth != null)
                    {
                        emailAuth.Status = (int)ActivationStatus.Activated;
                    }
                    if (mobileAuth != null)
                    {
                        mobileAuth.Status = (int)ActivationStatus.Activated;
                    }
                    context.SaveChanges();

                    scope.Complete();
                }
            }
        }
Пример #2
0
        public async Task <bool> Execute(ChangePasswordParameter changePasswordParameter)
        {
            if (changePasswordParameter == null)
            {
                throw new ArgumentNullException(nameof(changePasswordParameter));
            }

            var resourceOwner = await _userActions.GetUser(changePasswordParameter.Subject).ConfigureAwait(false);

            if (resourceOwner == null)
            {
                throw new IdentityServerException(Core.Errors.ErrorCodes.InternalError, Core.Errors.ErrorDescriptions.TheResourceOwnerDoesntExist);
            }

            var passwordSettings = await _credentialSettingActions.Get(Constants.AMR).ConfigureAwait(false);

            var opts = JsonConvert.DeserializeObject <PwdCredentialOptions>(passwordSettings.Options);

            if (opts.IsRegexEnabled)
            {
                var regex = new Regex(opts.RegularExpression, RegexOptions.Compiled);
                if (!regex.IsMatch(changePasswordParameter.NewPassword))
                {
                    throw new IdentityServerException(Core.Errors.ErrorCodes.InternalError, string.Format(Core.Errors.ErrorDescriptions.ThePasswordMustRespects, opts.PasswordDescription));
                }
            }

            var credential = resourceOwner.Credentials.FirstOrDefault(c => c.Type == Constants.AMR);

            if (credential == null)
            {
                await _userActions.AddCredentials(new[]
                {
                    new AddUserCredentialParameter
                    {
                        CredentialType = Constants.AMR,
                        UserId         = changePasswordParameter.Subject,
                        Value          = PasswordHelper.ComputeHash(changePasswordParameter.NewPassword)
                    }
                });

                return(true);
            }

            if (!string.IsNullOrWhiteSpace(credential.Value) && credential.Value != PasswordHelper.ComputeHash(changePasswordParameter.ActualPassword))
            {
                throw new IdentityServerException(Core.Errors.ErrorCodes.InternalError, Core.Errors.ErrorDescriptions.ThePasswordIsNotCorrect);
            }


            await _userActions.UpdateCredential(new UpdateUserCredentialParameter
            {
                CredentialType = Constants.AMR,
                NewValue       = PasswordHelper.ComputeHash(changePasswordParameter.NewPassword),
                UserId         = resourceOwner.Id
            }).ConfigureAwait(false);

            return(true);
        }
Пример #3
0
        public void ChangePassword(ChangePasswordParameter param)
        {
            param.OldPassword = HexPassword(param.OldPassword);
            param.NewPassword = HexPassword(param.NewPassword);
            using (var context = base.CreateContext())
            {
                var entrty = context.UserInfoes.Where(m => m.UserName == param.UserName && m.Password == param.OldPassword).FirstOrDefault();
                if (entrty == null)
                {
                    throw new InvalidInvokeException("原始密码错误");
                }

                entrty.Password = param.NewPassword;
                context.SaveChanges();
            }
        }
Пример #4
0
        public void ChangePassword(ChangePasswordParameter param)
        {
            var repository = new AdminRepository();

            repository.ChangePassword(param);
        }
Пример #5
0
 public UizaData ChangePassword(ChangePasswordParameter param)
 {
     param.DescriptionLink = DescriptionLinkUtility.GetDescriptionLink(DescriptionLinkConstants.USER.CHANGE_PASSWORD);
     return(this.PostRequest <UizaData>(Constants.ApiAction.USER_CHANGE_PASSWORD, param));
 }
Пример #6
0
 public void ChangePassword(ChangePasswordParameter param)
 {
     mgr.ChangePassword(param);
 }