1. 清理 iwork 无用的接口。

2. 整合 iwork 用户的密码管理策略。
This commit is contained in:
chenbowen
2025-11-27 20:25:02 +08:00
parent 64d0d4e55e
commit 03ebe21670
15 changed files with 271 additions and 266 deletions

View File

@@ -61,6 +61,7 @@ public interface ErrorCodeConstants {
ErrorCode USER_IMPORT_INIT_PASSWORD = new ErrorCode(1_002_003_009, "初始密码不能为空");
ErrorCode USER_MOBILE_NOT_EXISTS = new ErrorCode(1_002_003_010, "该手机号尚未注册");
ErrorCode USER_REGISTER_DISABLED = new ErrorCode(1_002_003_011, "注册功能已关闭");
ErrorCode USER_PASSWORD_MODIFY_FORBIDDEN = new ErrorCode(1_002_003_012, "该用户来源不支持修改密码");
// ========== 部门模块 1-002-004-000 ==========
ErrorCode DEPT_NAME_DUPLICATE = new ErrorCode(1_002_004_000, "当前上级部门已存在同名子部门");

View File

@@ -0,0 +1,24 @@
package com.zt.plat.module.system.enums.user;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 密码处理策略,用于区分本地账户与外部同步账户的密码存储/校验方式。
*/
@AllArgsConstructor
@Getter
public enum PasswordStrategyEnum {
/**
* 本地创建或注册用户,使用 Spring Security {@code PasswordEncoder}BCrypt
*/
LOCAL_BCRYPT("LOCAL_BCRYPT"),
/**
* iWork 同步的 MD5 密文,直接按大写 MD5 存储及校验。
*/
IWORK_MD5("IWORK_MD5");
private final String label;
}

View File

@@ -3,6 +3,9 @@ package com.zt.plat.module.system.enums.user;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Objects;
/**
* 用户来源枚举
*
@@ -12,9 +15,9 @@ import lombok.Getter;
@Getter
public enum UserSourceEnum {
EXTERNAL(1, "外部用户"), // 系统创建、注册等方式产生的用户
SYNC(2, "同步用户"), // 通过 UserSyncService 同步的用户
IWORK(3, "iWork 用户"); // 通过 iWork 全量/单条同步产生的用户
EXTERNAL(1, "外部用户", PasswordStrategyEnum.LOCAL_BCRYPT), // 系统创建、注册等方式产生的用户
SYNC(2, "同步用户", PasswordStrategyEnum.LOCAL_BCRYPT), // 通过 UserSyncService 同步的用户
IWORK(3, "iWork 用户", PasswordStrategyEnum.IWORK_MD5); // 通过 iWork 全量/单条同步产生的用户
/**
* 类型
@@ -24,5 +27,28 @@ public enum UserSourceEnum {
* 名字
*/
private final String name;
/**
* 默认密码策略
*/
private final PasswordStrategyEnum passwordStrategy;
public static UserSourceEnum of(Integer source) {
if (source == null) {
return null;
}
return Arrays.stream(values())
.filter(item -> Objects.equals(item.source, source))
.findFirst()
.orElse(null);
}
public static PasswordStrategyEnum resolvePasswordStrategy(Integer source) {
UserSourceEnum matched = of(source);
return matched == null ? PasswordStrategyEnum.LOCAL_BCRYPT : matched.getPasswordStrategy();
}
public boolean isExternal() {
return this == EXTERNAL;
}
}