- 在 `AGENTS.md` 中新增后台 RBAC 相关说明,强调 `php artisan lottery:admin-auth-sync --audit` 的使用。 - 更新 `README.md`,明确本地重置演示数据的命令,并补充 `AdminAuthorizationRegistry` 的同步要求。 - 精简 `AdminDashboardAnalyticsBuilder` 中的权限检查逻辑,确保与 `AdminAuthorizationRegistry` 一致。 - 在 `admin-rbac.md` 中添加仪表盘 API 权限要求的详细信息,优化维护命令的描述。
2.3 KiB
2.3 KiB
后台 RBAC 与导航分工
单一真相源
| 能力 | 来源 | 说明 |
|---|---|---|
侧栏 / auth/me 的 navigation |
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)。- 进入仪表盘后,财务/期号/风控、钱包异常计数等子块仍按
AdminDashboardSnapshotBuilder内各prd.*细分(与侧栏其它模块权限一致)。
已废弃的 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 |