refactor(auth): 权限解析收成深模块 PermissionResolver
将 PermissionServiceImpl(双职责、无接口、吞异常、混合返回类型)重构为深模块:
- PermissionResolver 接口:resolve(userId) + visibleMenuTree(userId)
- PermissionGrant 不可变值对象:结构化分离 permCodes / roleCodes,asAuthorities() 幂等归一 ROLE_ 前缀
- resolve 变纯函数:不装载 DataVisibilityContext,由过滤器负责
- fail-closed:删除 try/catch 吞异常,解析失败即请求失败(ADR-0006)
- 查询链 locality:resolve 与 visibleMenuTree 共用 userRolesOf + authorizedMenus
- JwtAuthenticationFilter / SystemController 切换到新接口
- DataScopeIntegrationTest 迁移到 resolve(),新增 6 个权限码并集场景
|