feat(admin): 更新后台权限管理与同步逻辑,简化权限检查并优化文档

- 新增后台 RBAC 相关文档,提供权限目录与维护命令说明。
- 移除不必要的角色资源同步检查,简化权限审计命令。
- 更新权限描述与同步逻辑,确保一致性与可维护性。
- 统一权限注册表,替换过时的权限别名,增强代码可读性。
This commit is contained in:
2026-05-22 16:11:48 +08:00
parent 2e8ab58970
commit 1d31f9e872
24 changed files with 489 additions and 238 deletions

35
docs/admin-rbac.md Normal file
View File

@@ -0,0 +1,35 @@
# 后台 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 # 仅体检路由覆盖与 binding
```
## 已废弃的 `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` |