Files
lotteryLaravel/docs/admin-rbac.md
kang 1dcd4716c5 refactor: 更新权限管理与请求验证逻辑
- 在多个控制器中将权限检查从 hasAdminPermission 更新为 hasPermissionCode,以增强权限管理的灵活性。
- 引入 AdminScopePolicy,优化基于代理节点的权限和数据过滤逻辑,确保管理员能够更精确地控制访问权限。
- 在请求验证中添加 agent_node_id 字段,确保 API 接口支持代理节点的相关操作。
- 更新 AdminUser 模型,新增 hasPermissionCode 方法,以支持更细粒度的权限检查。
- 优化审计日志记录逻辑,确保在处理请求时能够准确记录管理员的操作。
2026-06-03 10:07:38 +08:00

2.6 KiB
Raw Blame History

后台 RBAC 与导航分工

单一真相源

能力 来源 说明
侧栏 / auth/menavigation App\Support\AdminAuthorizationRegistry::navigationDefinitions() 代码注册表,改菜单需发版
角色可勾选的产品权限 prd.* 同上 permissionDefinitions() UI 展示名与 permission_code 映射
API 鉴权 permission_code 库表 admin_menu_actions 运行时校验
路由资源 库表 admin_api_resources + admin_api_resource_bindings php artisan lottery:admin-auth-sync 从 Registry 同步

admin_menus 不是侧栏配置

  • admin_menus:仅用于 admin_menu_actions 的业务分组(权限模块树)。
  • 不要通过改 admin_menus 期望侧栏变化;侧栏只看 Registry + 用户拥有的 prd.*

角色权限如何存储

  • 权威数据admin_role_menu_actions(角色 ↔ 动作权限)。
  • prd.* 展示:由 AdminPermissionBridge::legacySlugsGrantedByMenuActionCodes() 从已授权动作反推,不单独落库。
  • 用户直接授权:admin_user_menu_actions(可选,与角色权限合并生效)。

维护命令

php artisan lottery:admin-auth-sync --audit   # 同步 API 资源与 bindings并体检
php artisan lottery:admin-auth-audit          # 仅体检受保护路由是否登记、permission_required 是否已绑定

migrate:fresh --seed 会跑完全部迁移(含将 Registry 写回库的 resync 类迁移)与 DatabaseSeeder仅修改 AdminAuthorizationRegistry.php 时,在已有库上执行 lottery:admin-auth-sync --audit,不要依赖单独补丁 migration。

仪表盘 API 与子块权限

  • GET /api/v1/admin/dashboard…/analytics:中间件要求 dashboard.view(对应产品权限 prd.dashboard.view)。
  • 子块权限判定统一按 permission_code(如 draw.results.viewrisk.monitor.viewservice.reconcile.viewprd.* 仅作为展示映射。

站点优先作用域约束2026-06

  • 后台查询范围统一为:site_scope ∩ agent_subtree_scope
  • 新增统一入口 App\Support\AdminScopePolicy,查询应优先通过该策略应用数据范围。
  • auth/me 继续返回 permissionsprd.*)兼容前端,同时新增 operational_permissions 字段用于显式表达可操作权限集合。

已废弃的 prd.*(请求体仍可传入,会自动归一)

旧 slug 归一为
prd.audit.all / prd.audit.self / prd.audit.finance prd.audit.view
prd.report.all / prd.report.risk / prd.report.finance / prd.report.player prd.report.view