From a8c0793a92566cb8631f668fa7772ba430425f22 Mon Sep 17 00:00:00 2001 From: chenxing Date: Tue, 11 Aug 2026 12:20:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=8E=88=E6=9D=83=E4=BF=AE?= =?UTF-8?q?=E8=AE=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../userbase/service/impl/GroupAuthzService.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/yunhai/userbase/service/impl/GroupAuthzService.java b/src/main/java/com/yunhai/userbase/service/impl/GroupAuthzService.java index 5196c6b..d6a1827 100644 --- a/src/main/java/com/yunhai/userbase/service/impl/GroupAuthzService.java +++ b/src/main/java/com/yunhai/userbase/service/impl/GroupAuthzService.java @@ -611,17 +611,14 @@ public class GroupAuthzService implements IGroupAuthzService { allChainIds.addAll(chain); } - // 3. 收集这些组已开通的应用 + // 3. 收集「用户归属组 + 其祖先链」所有组已开通的应用并集。 + // 安全:hasUserModulePermission 仍会判定 groupId(当前归属组)必须在 openedApps 链上(即归属组或其祖先开通应用), + // 不会出现“无组归属、父级未开”的越权;此处只是把过滤和写面板(GroupModuleTreeByCategory)联动对齐, + // 解决之前“管理员在组8面板勾了checked=true,但UserPermissionTree返回空”的对称bug。 Map> groupToApps = new HashMap<>(); Set allAppIds = new LinkedHashSet<>(); for (Integer groupIdItem : selfGroupIds) { - List appRels = sysGroupAppRelRepository.findByGroupId(groupIdItem); - Set apps = new LinkedHashSet<>(); - for (SysGroupAppRel rel : appRels) { - if (rel.getAppId() != null) { - apps.add(rel.getAppId()); - } - } + Set apps = collectAppIdsForAuthzScope(groupIdItem); groupToApps.put(groupIdItem, apps); allAppIds.addAll(apps); }