From cea2f5013782770a2cc99cc89b14cf5c2869bca5 Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期二, 18 八月 2026 11:29:32 +0800
Subject: [PATCH] feat(security): add role codes to LoginUser info and provide utility methods

---
 yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java |   22 +++++++++++++++++++---
 1 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java
index 8bcff76..da7b82f 100644
--- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java
+++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/oauth2/OAuth2TokenServiceImpl.java
@@ -39,7 +39,7 @@
 /**
  * OAuth2.0 Token Service 瀹炵幇绫�
  *
- * @author 鑺嬮亾婧愮爜
+ * @author 瓒呯骇绠$悊鍛�
  */
 @Service
 public class OAuth2TokenServiceImpl implements OAuth2TokenService {
@@ -57,6 +57,12 @@
     @Resource
     @Lazy // 鎳掑姞杞斤紝閬垮厤寰幆渚濊禆
     private AdminUserService adminUserService;
+    @Resource
+    @Lazy
+    private cn.iocoder.yudao.module.system.service.permission.PermissionService permissionService;
+    @Resource
+    @Lazy
+    private cn.iocoder.yudao.module.system.service.permission.RoleService roleService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -226,8 +232,18 @@
         }
         if (userType.equals(UserTypeEnum.ADMIN.getValue())) {
             AdminUserDO user = adminUserService.getUser(userId);
-            return MapUtil.builder(LoginUser.INFO_KEY_NICKNAME, user.getNickname())
-                    .put(LoginUser.INFO_KEY_DEPT_ID, StrUtil.toStringOrNull(user.getDeptId())).build();
+            java.util.Map<String, String> info = new java.util.HashMap<>();
+            info.put(LoginUser.INFO_KEY_NICKNAME, user.getNickname());
+            info.put(LoginUser.INFO_KEY_DEPT_ID, cn.hutool.core.util.StrUtil.toStringOrNull(user.getDeptId()));
+            // Fetch roles and put into info
+            java.util.Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(userId);
+            if (cn.hutool.core.collection.CollUtil.isNotEmpty(roleIds)) {
+                java.util.List<cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO> roles = roleService.getRoleList(roleIds);
+                if (cn.hutool.core.collection.CollUtil.isNotEmpty(roles)) {
+                    info.put(LoginUser.INFO_KEY_ROLE_CODES, cn.hutool.core.collection.CollUtil.join(roles, ",", cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO::getCode));
+                }
+            }
+            return info;
         } else if (userType.equals(UserTypeEnum.MEMBER.getValue())) {
             // 娉ㄦ剰锛氱洰鍓� Member 鏆傛椂涓嶈鍙栵紝鍙互鎸夐渶瀹炵幇
             return Collections.emptyMap();

--
Gitblit v1.9.3