# 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 使用。
