docs: 记录 RBAC 权限扩展规划

- 设计文档:在角色表后添加细粒度权限点扩展规划(预留表结构、权限点示例、中间件扩展方式)
- 架构文档:auth 模块说明标注当前粗粒度 + 预留扩展

当前 MVP 使用 3 角色(user/admin/super_admin),后期按需引入权限点机制。

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-02-28 10:14:06 +08:00
parent e6c969e232
commit 7dc8a27c89
2 changed files with 32 additions and 1 deletions

View File

@@ -88,7 +88,7 @@ EchoChat 采用 **「精简单体 + 媒体微服务」** 架构,核心思想
| 模块 | 职责 |
|------|------|
| auth | 用户注册/登录、JWT Token 管理、RBAC 角色权限 |
| auth | 用户注册/登录、JWT Token 管理、RBAC 角色权限(当前粗粒度 3 角色,预留细粒度权限点扩展) |
| im | 即时消息收发、会话管理、消息存储 |
| contact | 好友关系管理、好友分组 |
| meeting | 会议创建/管理、信令转发、mediasoup 资源编排 |

View File

@@ -263,6 +263,37 @@ CREATE TABLE auth_user_roles (
PRIMARY KEY (user_id, role_id)
);
#### 权限扩展规划(后期迭代)
> 当前 MVP 阶段使用粗粒度 3 角色(user / admin / super_admin)即可满足需求。
> 后期管理员增多、需要区分职责时,引入细粒度权限点机制,扩展如下两张表:
```sql
-- 预留:权限点表(后期扩展)
-- CREATE TABLE auth_permissions (
-- id SERIAL PRIMARY KEY,
-- code VARCHAR(100) UNIQUE NOT NULL, -- 权限点代码,如 admin:user:list
-- name VARCHAR(100) NOT NULL, -- 权限点名称,如"查看用户列表"
-- module VARCHAR(50) NOT NULL, -- 所属模块user / meeting / system
-- description VARCHAR(200) DEFAULT '',
-- created_at TIMESTAMP NOT NULL DEFAULT NOW()
-- );
--
-- 预留:角色权限关联表(后期扩展)
-- CREATE TABLE auth_role_permissions (
-- role_id INT NOT NULL REFERENCES auth_roles(id),
-- permission_id INT NOT NULL REFERENCES auth_permissions(id),
-- PRIMARY KEY (role_id, permission_id)
-- );
```
扩展时的权限点示例:
- `admin:user:list` / `admin:user:detail` / `admin:user:disable` / `admin:user:role`
- `admin:meeting:list` / `admin:meeting:close` / `admin:meeting:stats`
- `admin:system:config` / `admin:log:list` / `admin:dashboard`
中间件从 `RequireRole("admin")` 扩展为 `RequirePermission("admin:user:list")`,前端管理端菜单根据权限点动态渲染。
COMMENT ON TABLE auth_user_roles IS '用户角色关联表,建立用户与角色的多对多关系';
COMMENT ON COLUMN auth_user_roles.user_id IS '关联的用户 ID';
COMMENT ON COLUMN auth_user_roles.role_id IS '关联的角色 ID';