feat(auth): 动态权限拦截 + 封遗留写路径
基于 apiUrl 的动态权限拦截机制(fail-open,Ant 风格匹配):
- ApiPermissionCache:Caffeine 缓存 button 节点 apiUrl→perms 规则
- ApiPermissionInterceptor:HandlerInterceptor 匹配 URL 校验 authority
- ApiPermissionRule:pattern→perms 映射 record
- WebMvcConfig:注册拦截器 /api/**
- ResourceServiceImpl:save/delete 后触发缓存失效
封遗留写路径 + 收拢 Mapper 到 Service 层:
- 删除 /menus/save 和 /menus/delete(ResourceController 已覆盖)
- ISysRoleService.assignMenus() + deleteRoleCascade() 事务保护
- IAuthUserService.assignRoles() 事务保护
- SystemController 不再持有 SysRoleMenuMapper/SysUserRoleMapper
测试:ApiPermissionInterceptorTest 7 个 + ResourceServiceImplTest 缓存失效验证
|