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

49 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 后台 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`(可选,与角色权限合并生效)。
## 维护命令
```bash
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.view``risk.monitor.view``service.reconcile.view``prd.*` 仅作为展示映射。
## 站点优先作用域约束2026-06
- 后台查询范围统一为:`site_scope ∩ agent_subtree_scope`
- 新增统一入口 `App\Support\AdminScopePolicy`,查询应优先通过该策略应用数据范围。
- `auth/me` 继续返回 `permissions``prd.*`)兼容前端,同时新增 `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` |