diff --git a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java index ca6a6d8f6..efb30b956 100644 --- a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java +++ b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/constants/ScannerConstants.java @@ -75,6 +75,6 @@ public interface ScannerConstants { /** * DevOps平台资源汇报路径 */ - String DEVOPS_REQUEST_PATH = "/resource/addExternalResource"; + String DEVOPS_REQUEST_PATH = "/scannerResource/addExternalResource"; } diff --git a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java index f881552e7..fb057717c 100644 --- a/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java +++ b/kernel-s-system/system-api/src/main/java/cn/stylefeng/roses/kernel/system/api/expander/SystemConfigExpander.java @@ -76,5 +76,15 @@ public class SystemConfigExpander { public static String getDefaultPassWord() { return ConfigContext.me().getSysConfigValueWithDefault("SYS_DEFAULT_PASSWORD", String.class, DEFAULT_PASSWORD); } - + + /** + * 获取开发开关的状态 + * + * @return {@link Boolean} + * @author majianguo + * @date 2022/1/17 14:59 + **/ + public static Boolean getDevSwitchStatus() { + return ConfigContext.me().getSysConfigValueWithDefault("DEVOPS_DEV_SWITCH_STATUS", Boolean.class, Boolean.FALSE); + } } diff --git a/kernel-s-system/system-business-user/pom.xml b/kernel-s-system/system-business-user/pom.xml index 0a3cd9e61..2e47dbeaa 100644 --- a/kernel-s-system/system-business-user/pom.xml +++ b/kernel-s-system/system-business-user/pom.xml @@ -113,6 +113,13 @@ ${roses.version} + + + cn.stylefeng.roses + auth-sdk + ${roses.version} + + org.springframework.boot diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java index a255ea6a7..87af90b5a 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/controller/SysUserController.java @@ -256,4 +256,27 @@ public class SysUserController { return new SuccessResponseData<>(sysUserService.selector(sysUserRequest)); } + /** + * 获取所有用户ID和名称列表 + * + * @return {@link ResponseData< List< SysUserRequest>>} + * @author majianguo + * @date 2022/1/17 14:24 + **/ + @GetResource(name = "获取所有用户ID和名称列表", path = "/sysUser/getAllUserIdList") + public ResponseData> getAllUserIdList() { + return new SuccessResponseData<>(sysUserService.getAllUserIdList()); + } + + /** + * 根据用户主键获取用户对应的token + * + * @return {@link ResponseData< List< SysUserRequest>>} + * @author majianguo + * @date 2022/1/17 14:24 + **/ + @GetResource(name = "根据用户主键获取用户对应的token", path = "/sysUser/getTokenByUserId") + public ResponseData getTokenByUserId(Long userId) { + return new SuccessResponseData<>(sysUserService.getTokenByUserId(userId)); + } } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java index 6f3eff808..ad34ea5aa 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/SysUserService.java @@ -246,4 +246,22 @@ public interface SysUserService extends IService, UserServiceApi { */ List getAllUserIds(); + /** + * 获取所有用户ID和名称列表 + * + * @return {@link List< SysUserRequest>} + * @author majianguo + * @date 2022/1/17 15:05 + **/ + List getAllUserIdList(); + + /** + * 根据用户主键获取用户对应的token + * + * @param userId + * @return {@link String} + * @author majianguo + * @date 2022/1/17 15:05 + **/ + String getTokenByUserId(Long userId); } diff --git a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java index e4e27730a..727897a97 100644 --- a/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java +++ b/kernel-s-system/system-business-user/src/main/java/cn/stylefeng/roses/kernel/system/modular/user/service/impl/SysUserServiceImpl.java @@ -33,6 +33,7 @@ import cn.stylefeng.roses.kernel.auth.api.SessionManagerApi; import cn.stylefeng.roses.kernel.auth.api.context.LoginContext; import cn.stylefeng.roses.kernel.auth.api.enums.DataScopeTypeEnum; import cn.stylefeng.roses.kernel.auth.api.exception.enums.AuthExceptionEnum; +import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander; import cn.stylefeng.roses.kernel.auth.api.password.PasswordStoredEncryptApi; import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser; import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo; @@ -42,6 +43,9 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory; import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult; import cn.stylefeng.roses.kernel.file.api.FileInfoApi; import cn.stylefeng.roses.kernel.file.api.constants.FileConstants; +import cn.stylefeng.roses.kernel.jwt.api.context.JwtContext; +import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload; +import cn.stylefeng.roses.kernel.message.api.expander.WebSocketConfigExpander; import cn.stylefeng.roses.kernel.office.api.OfficeExcelApi; import cn.stylefeng.roses.kernel.office.api.pojo.report.ExcelExportParam; import cn.stylefeng.roses.kernel.rule.enums.StatusEnum; @@ -588,6 +592,56 @@ public class SysUserServiceImpl extends ServiceImpl impl return list.stream().map(SysUser::getUserId).collect(Collectors.toList()); } + @Override + public List getAllUserIdList() { + if (!SystemConfigExpander.getDevSwitchStatus()) { + return new ArrayList<>(); + } + LambdaQueryWrapper userLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userLambdaQueryWrapper.select(SysUser::getUserId, SysUser::getRealName); + userLambdaQueryWrapper.eq(SysUser::getStatusFlag, StatusEnum.ENABLE.getCode()); + userLambdaQueryWrapper.ne(SysUser::getDelFlag, YesOrNotEnum.Y.getCode()); + List list = this.list(userLambdaQueryWrapper); + return list.stream().map(item -> BeanUtil.toBean(item, SysUserRequest.class)).collect(Collectors.toList()); + } + + @Override + public String getTokenByUserId(Long userId) { + if (!SystemConfigExpander.getDevSwitchStatus() || !LoginContext.me().getSuperAdminFlag()) { + return null; + } + LambdaQueryWrapper userLambdaQueryWrapper = new LambdaQueryWrapper<>(); + userLambdaQueryWrapper.eq(SysUser::getUserId, userId); + SysUser sysUser = this.getOne(userLambdaQueryWrapper); + + // 获取用户密码的加密值和用户的状态 + UserLoginInfoDTO userValidateInfo = this.getUserLoginInfo(sysUser.getAccount()); + + // 获取LoginUser,用于用户的缓存 + LoginUser loginUser = userValidateInfo.getLoginUser(); + + // 生成用户的token + DefaultJwtPayload defaultJwtPayload = new DefaultJwtPayload(loginUser.getUserId(), loginUser.getAccount(), false, null); + String jwtToken = JwtContext.me().generateTokenDefaultPayload(defaultJwtPayload); + loginUser.setToken(jwtToken); + + synchronized (this) { + + // 获取ws-url 保存到用户信息中 + loginUser.setWsUrl(WebSocketConfigExpander.getWebSocketWsUrl()); + + // 缓存用户信息,创建会话 + sessionManagerApi.createSession(jwtToken, loginUser, false); + + // 如果开启了单账号单端在线,则踢掉已经上线的该用户 + if (AuthConfigExpander.getSingleAccountLoginFlag()) { + sessionManagerApi.removeSessionExcludeToken(jwtToken); + } + } + + return jwtToken; + } + @Override public UserLoginInfoDTO getUserLoginInfo(String account) {