38 lines
1.9 KiB
Markdown
38 lines
1.9 KiB
Markdown
|
|
# pb_auth_model
|
|||
|
|
|
|||
|
|
> 来源:`script/pocketbase.newpb.js`、当前 hooks 权限实现
|
|||
|
|
> 说明:本文件描述权限模型设计与表间职责,不替代单表结构文档
|
|||
|
|
|
|||
|
|
## 模型目标
|
|||
|
|
|
|||
|
|
当前项目采用 `RBAC + ABAC + 用户覆盖` 的混合权限模型:
|
|||
|
|
|
|||
|
|
- `RBAC` 负责角色级默认权限
|
|||
|
|
- `ABAC` 负责组织、等级、目标表等属性条件
|
|||
|
|
- `用户覆盖` 负责单人例外授权
|
|||
|
|
|
|||
|
|
## 核心表职责
|
|||
|
|
|
|||
|
|
| 文档 | 作用 |
|
|||
|
|
| :--- | :--- |
|
|||
|
|
| [pb_tbl_auth_users.md](/e:/Project_Class/BAI/Web_BAI_Manage_ApiServer/docs/pb_tbl_auth_users.md) | 用户身份源与 PocketBase auth 主表 |
|
|||
|
|
| [pb_tbl_auth_resources.md](/e:/Project_Class/BAI/Web_BAI_Manage_ApiServer/docs/pb_tbl_auth_resources.md) | 资源目录 |
|
|||
|
|
| [pb_tbl_auth_roles.md](/e:/Project_Class/BAI/Web_BAI_Manage_ApiServer/docs/pb_tbl_auth_roles.md) | 角色定义 |
|
|||
|
|
| [pb_tbl_auth_role_perms.md](/e:/Project_Class/BAI/Web_BAI_Manage_ApiServer/docs/pb_tbl_auth_role_perms.md) | 角色权限映射 |
|
|||
|
|
| [pb_tbl_auth_user_overrides.md](/e:/Project_Class/BAI/Web_BAI_Manage_ApiServer/docs/pb_tbl_auth_user_overrides.md) | 单用户权限覆盖 |
|
|||
|
|
| [pb_tbl_auth_row_scopes.md](/e:/Project_Class/BAI/Web_BAI_Manage_ApiServer/docs/pb_tbl_auth_row_scopes.md) | 行级过滤范围 |
|
|||
|
|
|
|||
|
|
## 权限计算路径
|
|||
|
|
|
|||
|
|
1. 从 `tbl_auth_users` 读取用户身份、组织、等级和角色。
|
|||
|
|
2. 从 `tbl_auth_role_perms` 读取角色默认权限。
|
|||
|
|
3. 从 `tbl_auth_user_overrides` 应用用户级覆盖。
|
|||
|
|
4. 从 `tbl_auth_row_scopes` 组合行级过滤条件。
|
|||
|
|
5. 将可原生表达的权限同步到 PocketBase collection rules;复杂业务权限仍由 hooks 判断。
|
|||
|
|
|
|||
|
|
## 当前实现约定
|
|||
|
|
|
|||
|
|
- 管理后台用户通过 `users_idtype = ManagePlatform` 与管理角色识别。
|
|||
|
|
- hooks 页面 `/pb/manage/sdk-permission-manage` 负责维护角色与 collection CRUD 权限。
|
|||
|
|
- 用户登录返回的是 PocketBase 原生可验证 token,可直接给 PocketBase SDK 使用。
|