diff --git a/Api/Ewide.Core/Enum/ErrorCode.cs b/Api/Ewide.Core/Enum/ErrorCode.cs
index c6c76e5..a9dc1ba 100644
--- a/Api/Ewide.Core/Enum/ErrorCode.cs
+++ b/Api/Ewide.Core/Enum/ErrorCode.cs
@@ -38,6 +38,12 @@ namespace Ewide.Core
[ErrorCodeItemMetadata("旧密码输入错误")]
D1004,
+ ///
+ /// 新旧密码不可一致
+ ///
+ [ErrorCodeItemMetadata("新旧密码不可一致")]
+ D10041,
+
///
/// 测试数据禁止更改admin密码
///
diff --git a/Api/Ewide.Core/Ewide.Core.xml b/Api/Ewide.Core/Ewide.Core.xml
index c9fbb76..f81a9b2 100644
--- a/Api/Ewide.Core/Ewide.Core.xml
+++ b/Api/Ewide.Core/Ewide.Core.xml
@@ -1927,6 +1927,11 @@
旧密码不匹配
+
+
+ 新旧密码不可一致
+
+
测试数据禁止更改admin密码
@@ -6755,6 +6760,11 @@
用户Id
+
+
+ 用户Id
+
+
密码
@@ -6765,6 +6775,11 @@
新密码
+
+
+ 确认密码
+
+
用户参数
diff --git a/Api/Ewide.Core/Service/User/Dto/UserInput.cs b/Api/Ewide.Core/Service/User/Dto/UserInput.cs
index 8789f39..13b0740 100644
--- a/Api/Ewide.Core/Service/User/Dto/UserInput.cs
+++ b/Api/Ewide.Core/Service/User/Dto/UserInput.cs
@@ -118,19 +118,31 @@ namespace Ewide.Core.Service
}
- public class ChangePasswordUserInput : UpdateUserInput
+ public class ChangePasswordUserInput
{
+ ///
+ /// 用户Id
+ ///
+ [Required(ErrorMessage = "用户Id不能为空")]
+ public string Id { get; set; }
+
///
/// 密码
///
[Required(ErrorMessage = "旧密码不能为空")]
- public override string Password { get; set; }
+ public string Password { get; set; }
///
/// 新密码
///
- [Required(ErrorMessage = "新密码不能为空"), Compare(nameof(Password), ErrorMessage = "新旧密码不能一致")]
+ [Required(ErrorMessage = "新密码不能为空")]
[StringLength(32, MinimumLength = 5, ErrorMessage = "密码需要大于5个字符")]
public string NewPassword { get; set; }
+
+ ///
+ /// 确认密码
+ ///
+ [Required(ErrorMessage = "确认密码不能为空"), Compare(nameof(NewPassword), ErrorMessage = "两次密码不一致")]
+ public string Confirm { get; set; }
}
}
diff --git a/Api/Ewide.Core/Service/User/SysUserService.cs b/Api/Ewide.Core/Service/User/SysUserService.cs
index 89af90c..6a5b5ee 100644
--- a/Api/Ewide.Core/Service/User/SysUserService.cs
+++ b/Api/Ewide.Core/Service/User/SysUserService.cs
@@ -233,7 +233,12 @@ namespace Ewide.Core.Service
public async Task UpdateUserInfo(UpdateUserInput input)
{
var user = input.Adapt();
- await user.UpdateAsync();
+ await user.UpdateExcludeAsync(new string[] {
+ nameof(SysUser.Account),
+ nameof(SysUser.Password),
+ nameof(SysUser.AdminType),
+ nameof(SysUser.Status)
+ }, true);
}
///
@@ -247,6 +252,8 @@ namespace Ewide.Core.Service
var user = await _sysUserRep.FirstOrDefaultAsync(u => u.Id == input.Id);
if (MD5Encryption.Encrypt(input.Password) != user.Password)
throw Oops.Oh(ErrorCode.D1004);
+ if (MD5Encryption.Encrypt(input.NewPassword).Equals(user.Password))
+ throw Oops.Oh(ErrorCode.D10041);
user.Password = MD5Encryption.Encrypt(input.NewPassword);
}