From 66446915c722294d219dd79e9798bdd8b801e47b Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Tue, 3 Oct 2023 23:20:09 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=908.0=E3=80=91=E3=80=90auth=E3=80=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7=E7=8A=B6=E6=80=81=E7=9A=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/enums/AuthExceptionEnum.java | 2 +- .../roses/kernel/auth/auth/LoginService.java | 2 ++ .../kernel/sys/api/SysUserServiceApi.java | 8 +++++++ .../sys/api/enums/user/UserStatusEnum.java | 9 ++------ .../user/service/impl/SysUserServiceImpl.java | 21 +++++++++++++++++++ 5 files changed, 34 insertions(+), 8 deletions(-) diff --git a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/enums/AuthExceptionEnum.java b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/enums/AuthExceptionEnum.java index ea210e116..fbd48d33e 100644 --- a/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/enums/AuthExceptionEnum.java +++ b/kernel-d-auth/auth-api/src/main/java/cn/stylefeng/roses/kernel/auth/api/exception/enums/AuthExceptionEnum.java @@ -121,7 +121,7 @@ public enum AuthExceptionEnum implements AbstractExceptionEnum { /** * 密码重试次数过多,帐号被锁定 */ - LOGIN_LOCKED(RuleConstants.BUSINESS_ERROR_TYPE_CODE + AuthConstants.AUTH_EXCEPTION_STEP_CODE + "18", "密码重试次数过多,帐号被锁定"); + LOGIN_LOCKED(RuleConstants.BUSINESS_ERROR_TYPE_CODE + AuthConstants.AUTH_EXCEPTION_STEP_CODE + "18", "账号或密码错误!"); /** * 错误编码 diff --git a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginService.java b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginService.java index 4e52eceba..461b550f8 100644 --- a/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginService.java +++ b/kernel-d-auth/auth-sdk/src/main/java/cn/stylefeng/roses/kernel/auth/auth/LoginService.java @@ -239,6 +239,8 @@ public class LoginService { private Integer validatePasswordRetryTimes(LoginRequest loginRequest) { Integer loginErrorCount = loginErrorCountCacheApi.get(loginRequest.getAccount()); if (loginErrorCount != null && loginErrorCount >= LoginConfigExpander.getMaxErrorLoginCount()) { + // 修改用户状态为锁定 + sysUserServiceApi.lockUserStatus(loginRequest.getTenantCode(), loginRequest.getAccount()); throw new AuthException(AuthExceptionEnum.LOGIN_LOCKED); } return loginErrorCount; diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserServiceApi.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserServiceApi.java index 92ff15cb9..5ea50a465 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserServiceApi.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/SysUserServiceApi.java @@ -136,4 +136,12 @@ public interface SysUserServiceApi { */ UserInfoDetailDTO getUserDetail(Long userId); + /** + * 锁定用户状态 + * + * @author fengshuonan + * @since 2023/10/3 22:11 + */ + void lockUserStatus(String tenantCode, String account); + } diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/enums/user/UserStatusEnum.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/enums/user/UserStatusEnum.java index ef996b3a6..ae75a5a5a 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/enums/user/UserStatusEnum.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/sys/api/enums/user/UserStatusEnum.java @@ -46,15 +46,10 @@ public enum UserStatusEnum implements ReadableEnum { */ ENABLE(1, "启用"), - /** - * 禁用 - */ - DISABLE(2, "禁用"), - /** * 冻结 */ - FREEZE(3, "冻结"); + DISABLE(2, "冻结"); private final Integer code; @@ -105,7 +100,7 @@ public enum UserStatusEnum implements ReadableEnum { if (code == null) { throw new ServiceException(UserExceptionEnum.REQUEST_USER_STATUS_EMPTY); } - if (ENABLE.getCode().equals(code) || DISABLE.getCode().equals(code) || FREEZE.getCode().equals(code)) { + if (ENABLE.getCode().equals(code) || DISABLE.getCode().equals(code)) { return; } throw new SysException(UserExceptionEnum.REQUEST_USER_STATUS_ERROR, code); diff --git a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java index 9c70c7cba..1a82d5be5 100644 --- a/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java +++ b/kernel-s-system/system-business-hr/src/main/java/cn/stylefeng/roses/kernel/sys/modular/user/service/impl/SysUserServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.extra.spring.SpringUtil; +import cn.stylefeng.roses.kernel.auth.api.TenantCodeGetApi; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; @@ -65,6 +66,9 @@ public class SysUserServiceImpl extends ServiceImpl impl @Resource private FileInfoApi fileInfoApi; + @Resource + private TenantCodeGetApi tenantCodeGetApi; + @Override @Transactional(rollbackFor = Exception.class) public void add(SysUserRequest sysUserRequest) { @@ -543,6 +547,23 @@ public class SysUserServiceImpl extends ServiceImpl impl return result; } + @Override + public void lockUserStatus(String tenantCode, String account) { + + // 获取租户id + Long tenantId = tenantCodeGetApi.getTenantIdByCode(tenantCode); + + try { + TenantIdHolder.set(tenantId); + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.eq(SysUser::getAccount, account); + lambdaUpdateWrapper.set(SysUser::getStatusFlag, UserStatusEnum.DISABLE.getKey()); + this.update(lambdaUpdateWrapper); + } finally { + TenantIdHolder.remove(); + } + } + /** * 获取信息 *