From 3c8d864b5f68af5167199e0d5c9ff6c0c5852638 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 20 一月 2025 11:35:45 +0800 Subject: [PATCH] !639 发布 5.3.0-BETA 公测版本 Merge pull request !639 from 疯狂的狮子Li/dev --- ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java | 186 +++++++++++++++++++++++++-------------------- 1 files changed, 103 insertions(+), 83 deletions(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java index 99bd6b5..e2c9236 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java @@ -1,21 +1,20 @@ package org.dromara.common.satoken.utils; -import cn.dev33.satoken.context.SaHolder; -import cn.dev33.satoken.context.model.SaStorage; import cn.dev33.satoken.session.SaSession; import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; -import org.dromara.common.core.constant.TenantConstants; -import org.dromara.common.core.constant.UserConstants; -import org.dromara.common.core.domain.model.LoginUser; -import org.dromara.common.core.enums.DeviceType; -import org.dromara.common.core.enums.UserType; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.constant.TenantConstants; +import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.common.core.enums.UserType; import java.util.Set; + /** * 鐧诲綍閴存潈鍔╂墜 @@ -35,43 +34,29 @@ public static final String LOGIN_USER_KEY = "loginUser"; public static final String TENANT_KEY = "tenantId"; public static final String USER_KEY = "userId"; - - /** - * 鐧诲綍绯荤粺 - * - * @param loginUser 鐧诲綍鐢ㄦ埛淇℃伅 - */ - public static void login(LoginUser loginUser) { - loginByDevice(loginUser, null); - } + public static final String USER_NAME_KEY = "userName"; + public static final String DEPT_KEY = "deptId"; + public static final String DEPT_NAME_KEY = "deptName"; + public static final String DEPT_CATEGORY_KEY = "deptCategory"; + public static final String CLIENT_KEY = "clientid"; /** * 鐧诲綍绯荤粺 鍩轰簬 璁惧绫诲瀷 * 閽堝鐩稿悓鐢ㄦ埛浣撶郴涓嶅悓璁惧 * * @param loginUser 鐧诲綍鐢ㄦ埛淇℃伅 + * @param model 閰嶇疆鍙傛暟 */ - public static void loginByDevice(LoginUser loginUser, DeviceType deviceType) { - SaStorage storage = SaHolder.getStorage(); - storage.set(LOGIN_USER_KEY, loginUser); - storage.set(TENANT_KEY, loginUser.getTenantId()); - storage.set(USER_KEY, loginUser.getUserId()); - SaLoginModel model = new SaLoginModel(); - if (ObjectUtil.isNotNull(deviceType)) { - model.setDevice(deviceType.getDevice()); - } - // 鑷畾涔夊垎閰� 涓嶅悓鐢ㄦ埛浣撶郴 涓嶅悓 token 鎺堟潈鏃堕棿 涓嶈缃粯璁よ蛋鍏ㄥ眬 yml 閰嶇疆 - // 渚嬪: 鍚庡彴鐢ㄦ埛30鍒嗛挓杩囨湡 app鐢ㄦ埛1澶╄繃鏈� -// UserType userType = UserType.getUserType(loginUser.getUserType()); -// if (userType == UserType.SYS_USER) { -// model.setTimeout(86400).setActiveTimeout(1800); -// } else if (userType == UserType.APP_USER) { -// model.setTimeout(86400).setActiveTimeout(1800); -// } - StpUtil.stpLogic.setLoginType(loginUser.getUserType()) - .login(loginUser.getLoginId(), - model.setExtra(TENANT_KEY, loginUser.getTenantId()) - .setExtra(USER_KEY, loginUser.getUserId())); + public static void login(LoginUser loginUser, SaLoginModel model) { + model = ObjectUtil.defaultIfNull(model, new SaLoginModel()); + StpUtil.login(loginUser.getLoginId(), + model.setExtra(TENANT_KEY, loginUser.getTenantId()) + .setExtra(USER_KEY, loginUser.getUserId()) + .setExtra(USER_NAME_KEY, loginUser.getUsername()) + .setExtra(DEPT_KEY, loginUser.getDeptId()) + .setExtra(DEPT_NAME_KEY, loginUser.getDeptName()) + .setExtra(DEPT_CATEGORY_KEY, loginUser.getDeptCategory()) + ); StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); } @@ -79,17 +64,11 @@ * 鑾峰彇鐢ㄦ埛(澶氱骇缂撳瓨) */ public static LoginUser getLoginUser() { - LoginUser loginUser = (LoginUser) SaHolder.getStorage().get(LOGIN_USER_KEY); - if (loginUser != null) { - return loginUser; - } SaSession session = StpUtil.getTokenSession(); if (ObjectUtil.isNull(session)) { return null; } - loginUser = (LoginUser) session.get(LOGIN_USER_KEY); - SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser); - return loginUser; + return (LoginUser) session.get(LOGIN_USER_KEY); } /** @@ -107,55 +86,70 @@ * 鑾峰彇鐢ㄦ埛id */ public static Long getUserId() { - Long userId; - try { - userId = Convert.toLong(SaHolder.getStorage().get(USER_KEY)); - if (ObjectUtil.isNull(userId)) { - userId = Convert.toLong(StpUtil.getExtra(USER_KEY)); - SaHolder.getStorage().set(USER_KEY, userId); - } - } catch (Exception e) { - return null; - } - return userId; + return Convert.toLong(getExtra(USER_KEY)); } /** - * 鑾峰彇绉熸埛ID + * 鑾峰彇鐢ㄦ埛id */ - public static String getTenantId() { - String tenantId; - try { - tenantId = (String) SaHolder.getStorage().get(TENANT_KEY); - if (ObjectUtil.isNull(tenantId)) { - tenantId = (String) StpUtil.getExtra(TENANT_KEY); - SaHolder.getStorage().set(TENANT_KEY, tenantId); - } - } catch (Exception e) { - return null; - } - return tenantId; - } - - /** - * 鑾峰彇閮ㄩ棬ID - */ - public static Long getDeptId() { - return getLoginUser().getDeptId(); + public static String getUserIdStr() { + return Convert.toStr(getExtra(USER_KEY)); } /** * 鑾峰彇鐢ㄦ埛璐︽埛 */ public static String getUsername() { - return getLoginUser().getUsername(); + return Convert.toStr(getExtra(USER_NAME_KEY)); + } + + /** + * 鑾峰彇绉熸埛ID + */ + public static String getTenantId() { + return Convert.toStr(getExtra(TENANT_KEY)); + } + + /** + * 鑾峰彇閮ㄩ棬ID + */ + public static Long getDeptId() { + return Convert.toLong(getExtra(DEPT_KEY)); + } + + /** + * 鑾峰彇閮ㄩ棬鍚� + */ + public static String getDeptName() { + return Convert.toStr(getExtra(DEPT_NAME_KEY)); + } + + /** + * 鑾峰彇閮ㄩ棬绫诲埆缂栫爜 + */ + public static String getDeptCategory() { + return Convert.toStr(getExtra(DEPT_CATEGORY_KEY)); + } + + /** + * 鑾峰彇褰撳墠 Token 鐨勬墿灞曚俊鎭� + * + * @param key 閿�� + * @return 瀵瑰簲鐨勬墿灞曟暟鎹� + */ + private static Object getExtra(String key) { + try { + return StpUtil.getExtra(key); + } catch (Exception e) { + return null; + } } /** * 鑾峰彇鐢ㄦ埛绫诲瀷 */ public static UserType getUserType() { - String loginType = StpUtil.stpLogic.getLoginType(); + String loginType = StpUtil.getLoginIdAsString(); return UserType.getUserType(loginType); } @@ -166,25 +160,51 @@ * @return 缁撴灉 */ public static boolean isSuperAdmin(Long userId) { - return UserConstants.SUPER_ADMIN_ID.equals(userId); - } - - public static boolean isSuperAdmin() { - return isSuperAdmin(getUserId()); + return SystemConstants.SUPER_ADMIN_ID.equals(userId); } /** * 鏄惁涓鸿秴绾х鐞嗗憳 * + * @return 缁撴灉 + */ + public static boolean isSuperAdmin() { + return isSuperAdmin(getUserId()); + } + + /** + * 鏄惁涓虹鎴风鐞嗗憳 + * * @param rolePermission 瑙掕壊鏉冮檺鏍囪瘑缁� * @return 缁撴灉 */ public static boolean isTenantAdmin(Set<String> rolePermission) { + if (CollUtil.isEmpty(rolePermission)) { + return false; + } return rolePermission.contains(TenantConstants.TENANT_ADMIN_ROLE_KEY); } + /** + * 鏄惁涓虹鎴风鐞嗗憳 + * + * @return 缁撴灉 + */ public static boolean isTenantAdmin() { - return isTenantAdmin(getLoginUser().getRolePermission()); + return Convert.toBool(isTenantAdmin(getLoginUser().getRolePermission())); + } + + /** + * 妫�鏌ュ綋鍓嶇敤鎴锋槸鍚﹀凡鐧诲綍 + * + * @return 缁撴灉 + */ + public static boolean isLogin() { + try { + return getLoginUser() != null; + } catch (Exception e) { + return false; + } } } -- Gitblit v1.9.3