From d6688a367dc8dee7c489790daa5389de08e0531a Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期二, 09 七月 2024 10:42:40 +0800 Subject: [PATCH] !562 ♥️发布 5.2.1 正式版本 Merge pull request !562 from 疯狂的狮子Li/dev --- ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java | 143 +++++++++++++++++++++++++++++------------------ 1 files changed, 87 insertions(+), 56 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 2bbcd0d..4ab7d4e 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,10 +1,9 @@ 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 lombok.AccessLevel; @@ -34,6 +33,10 @@ public static final String LOGIN_USER_KEY = "loginUser"; public static final String TENANT_KEY = "tenantId"; public static final String USER_KEY = "userId"; + 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"; /** @@ -44,40 +47,34 @@ * @param model 閰嶇疆鍙傛暟 */ public static void login(LoginUser loginUser, SaLoginModel model) { - SaStorage storage = SaHolder.getStorage(); - storage.set(LOGIN_USER_KEY, loginUser); - storage.set(TENANT_KEY, loginUser.getTenantId()); - storage.set(USER_KEY, loginUser.getUserId()); model = ObjectUtil.defaultIfNull(model, new SaLoginModel()); StpUtil.login(loginUser.getLoginId(), model.setExtra(TENANT_KEY, loginUser.getTenantId()) - .setExtra(USER_KEY, loginUser.getUserId())); - StpUtil.getSession().set(LOGIN_USER_KEY, loginUser); + .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); } /** * 鑾峰彇鐢ㄦ埛(澶氱骇缂撳瓨) */ public static LoginUser getLoginUser() { - LoginUser loginUser = (LoginUser) SaHolder.getStorage().get(LOGIN_USER_KEY); - if (loginUser != null) { - return loginUser; - } - SaSession session = StpUtil.getSession(); + 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); } /** * 鑾峰彇鐢ㄦ埛鍩轰簬token */ public static LoginUser getLoginUser(String token) { - Object loginId = StpUtil.getLoginIdByToken(token); - SaSession session = StpUtil.getSessionByLoginId(loginId); + SaSession session = StpUtil.getTokenSessionByToken(token); if (ObjectUtil.isNull(session)) { return null; } @@ -88,48 +85,56 @@ * 鑾峰彇鐢ㄦ埛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; - } - - /** - * 鑾峰彇绉熸埛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(); + return Convert.toLong(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; + } } /** @@ -150,22 +155,48 @@ return UserConstants.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