feat: 增强 PocketBase hooks 认证功能

- 更新微信登录、平台注册/登录、资料更新、token 刷新、认证落库等功能,统一使用 openid 作为全平台身份锚点。
- 新增平台用户注册和登录接口,支持手机号和密码认证。
- 实现系统级 token 刷新接口,支持通过微信 code 重新签发 token。
- 新增用户总数查询接口,返回 tbl_auth_users 表中的用户总数。
- 更新 OpenAPI 文档,反映新的接口和数据结构。
- 修改数据库结构,调整字段名称和索引。
- 新增页面示例,展示基本的 HTML 页面结构。
This commit is contained in:
2026-03-25 20:03:46 +08:00
parent 02d5686c7b
commit 6490fc427f
20 changed files with 971 additions and 90 deletions

View File

@@ -11,13 +11,13 @@
| 字段名 | 类型 | 说明 |
| :--- | :--- | :--- |
| **user_id** | BigInt (PK) | 内部全局唯一 ID |
| **users_convers_id** | String | 会话/对话侧用户标识,允许为空 |
| **openid** | String (Unique) | **全局身份锚点**,微信唯一标识 |
| **user_name** | String | 姓名/昵称 |
| **users_name** | String | 姓名/昵称 |
| **org_id** | Int | 所属组织/部门 ID影响行级权限的关键属性 |
| **rank_level** | Int | 职级/等级(影响动态权限矩阵的关键属性) |
| **status** | Int | 账户状态 (1: 正常, 0: 禁用) |
| **user_type** | Int | 账户类型 (0: 微信小程序1: 管理平台2: 其他) |
| **users_rank_level** | Int | 职级/等级(影响动态权限矩阵的关键属性) |
| **users_status** | Int | 账户状态 (1: 正常, 0: 禁用) |
| **users_auth_type** | Int | 账户类型 (0: 微信小程序1: 管理平台2: 其他) |
---
@@ -47,7 +47,7 @@
| 字段名 | 类型 | 说明 |
| :--- | :--- | :--- |
| **id** | BigInt (PK) | 自增 ID |
| **user_id** | BigInt | 用户 ID(关联 `tbl_auth_users` |
| **users_convers_id** | String | 用户会话标识(关联 `tbl_auth_users.users_convers_id` |
| **res_id** | Int | 资源 ID关联 `tbl_auth_resources` |
| **access_level** | Int | 权限值 (0: 无权, 1: 只读, 2: 读写) |
| **priority** | Int | 优先级(当角色权限与个人设置冲突时,以此为准) |
@@ -63,7 +63,7 @@
| **target_type** | Enum | 目标:`USER``ROLE` |
| **target_id** | BigInt | 对应的 UserID 或 RoleID |
| **table_name** | String | 作用的表名 |
| **filter_sql** | String | 过滤逻辑。例如:`dept_id = {user.org_id}``creator_id = {user.user_id}` |
| **filter_sql** | String | 过滤逻辑。例如:`dept_id = {user.org_id}``creator_id = {user.users_convers_id}` |
---
@@ -73,13 +73,13 @@
#### 1. 权限计算路径 (Effective Permissions)
当用户访问某个数据时,系统按照以下顺序合并权限:
1. **取基础属性**:获取用户的 `org_id``rank_level`
1. **取基础属性**:获取用户的 `org_id``users_rank_level`
2. **取角色权限**:获取该用户所属角色对应的资源权限列表。
3. **应用个性化覆盖**:查询 `tbl_auth_user_overrides`。如果该表中有记录,则**覆盖**(或叠加)角色权限。
4. **注入行级过滤**:如果是查询操作,解析 `tbl_auth_row_scopes` 中的 `filter_sql`,将 `{user.xxx}` 变量替换为当前用户的真实值。
#### 2. 动态更新机制
* **组织/等级变更**:当 `tbl_auth_users` 中的 `org_id``rank_level` 变化时,由于行级过滤表(`tbl_auth_row_scopes`)引用的是动态变量,**权限会自动生效**,无需重新授权。
* **组织/等级变更**:当 `tbl_auth_users` 中的 `org_id``users_rank_level` 变化时,由于行级过滤表(`tbl_auth_row_scopes`)引用的是动态变量,**权限会自动生效**,无需重新授权。
* **缓存策略**:建议将计算后的“最终权限清单”缓存到 Redis。当用户在后台矩阵页面修改权限或者发生组织架构调整时通过 `wx_openid` **主动失效Purge** 该用户的 Redis 缓存。
#### 3. 字段级权限实现 (Field-Level)