/// <summary> /// 更新密码 /// </summary> /// <param name="oldPassword">原密码</param> /// <param name="newPassword">新密码</param> /// <param name="statusCode">返回状态码</param> /// <returns>影响行数</returns> public virtual int ChangePassword(string oldPassword, string newPassword, out string statusCode) { int returnValue = 0; // 密码强度检查 if (SystemInfo.EnableCheckPasswordStrength) { if (String.IsNullOrEmpty(newPassword)) { statusCode = StatusCode.PasswordCanNotBeNull.ToString(); return(returnValue); } //最小长度、字母数字组合等强度检查 if (!ValidateUtil.EnableCheckPasswordStrength(newPassword)) { statusCode = StatusCode.PasswordNotStrength.ToString(); return(returnValue); } } // 加密密码 if (SystemInfo.EnableEncryptServerPassword) { oldPassword = this.EncryptUserPassword(oldPassword); newPassword = this.EncryptUserPassword(newPassword); } // 判断输入原始密码是否正确 PiUserLogOnEntity entity = new PiUserLogOnManager(this.DBProvider, this.UserInfo).GetEntity(UserInfo.Id); if (entity.UserPassword == null) { entity.UserPassword = string.Empty; } // 密码错误 if (!entity.UserPassword.Equals(oldPassword)) { statusCode = StatusCode.OldPasswordError.ToString(); return(returnValue); } // 更改密码,同时修改密码的修改日期,这里需要兼容多数据库 var sqlBuilder = new SQLBuilder(this.DBProvider); sqlBuilder.BeginUpdate(PiUserLogOnTable.TableName); sqlBuilder.SetValue(PiUserLogOnTable.FieldUserPassword, newPassword); sqlBuilder.SetDBNow(PiUserLogOnTable.FieldChangePasswordDate); sqlBuilder.SetWhere(PiUserLogOnTable.FieldId, UserInfo.Id); returnValue = sqlBuilder.EndUpdate(); statusCode = returnValue == 1 ? StatusCode.ChangePasswordOK.ToString() : StatusCode.ErrorDeleted.ToString(); return(returnValue); }