You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

15 lines
1.3 KiB

# 05 — 权限码并集注入(按钮级鉴权)
**What to build:** 用户登录后,`PermissionServiceImpl.initDataScopeContext` 在计算数据范围时顺带计算权限码并集——查用户所有角色授权的按钮节点(`type=button 且 status=enabled`),收集各节点的 `perms` 字符串,与 `roleCode` 一起填入 Spring Security authority。停用的权限点(`status=disabled`)不进并集——全局断路,无需逐角色取消授权。重新启用后原授权自动恢复。
**Blocked by:** 01(需要 SysMenu 的 perms/status 字段 + MenuType 枚举)。
**Status:** ready-for-agent
- [ ] `initDataScopeContext` 在现有数据范围计算后追加权限码并集:查 `sys_user_role``sys_role_menu``sys_menu`(过滤 `menuType=3 且 status='enabled'`)→ 收集 `perms` 去重
- [ ] 权限码(`perms`)与角色码(`roleCode`)一起填入 `SecurityUtils.getAuthorities()`,使 `@PreAuthorize("hasAuthority('crm:xxx:yyy')")` 可用
- [ ] 停用的权限点(status=disabled):即使角色已授权,perms 不进并集
- [ ] 重新启用后(status=enabled):perms 自动恢复进并集,无需管理员重新勾选
- [ ] 现有 `JwtAuthenticationFilter` 的 authority 注入逻辑不退化
- [ ] TDD 测试覆盖:有按钮权限时 authority 含 perms、停用按钮不进并集、重新启用恢复