feat: 角色等级体系与权限管控实施

- 数据库:auth_roles 表新增 level 字段(1=超管, 10=管理员, 100=普通用户)
- 后端:新增 GetAllRoles/GetUserMaxLevel/SetUserRoles/FindByCodeList DAO 方法
- 后端:SetRolesRequest 替换 AssignRoleRequest,AdminUserInfo.Roles 改为 []RoleInfo
- 后端:所有管理操作(禁用/启用/角色分配/创建用户)强制层级权限校验
- 后端:PUT /users/:id/roles(批量设置角色)+ GET /roles(角色列表)
- 前端:角色管理改为 Checkbox Group 多选,高等级角色禁用
- 前端:禁用/启用按钮受角色层级约束,列表页操作按钮权限管控
- 前端:创建用户对话框角色选项根据操作者等级动态过滤
- 文档:API 文档、设计方案、集成规范、进度文档同步更新

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-03-02 15:40:02 +08:00
parent dd84e50429
commit fa6f1e5c58
18 changed files with 771 additions and 279 deletions

View File

@@ -81,6 +81,8 @@
- 前台用户和后台管理员共用 `auth_users`
- 通过 `auth_roles``auth_user_roles` 区分角色user / admin / super_admin
- `auth_roles.level` 字段实现角色等级层级管控值越小权限越高1=超管, 10=管理员, 100=用户)
- 管理操作强制执行"高等级管理低等级"规则(操作者 level 必须 < 目标用户 level
- 前台 API 路由`/api/v1/auth/*` 仅需 JWT 验证
- 后台 API 路由`/api/v1/admin/*` JWT 验证 + 角色检查双重中间件
@@ -235,6 +237,7 @@ CREATE TABLE auth_roles (
id SERIAL PRIMARY KEY,
code VARCHAR(50) UNIQUE NOT NULL,
name VARCHAR(50) NOT NULL,
level INT NOT NULL DEFAULT 100,
description VARCHAR(200) DEFAULT '',
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
@@ -243,14 +246,15 @@ COMMENT ON TABLE auth_roles IS '角色表,定义系统中所有
COMMENT ON COLUMN auth_roles.id IS '角色唯一标识,自增主键';
COMMENT ON COLUMN auth_roles.code IS '角色代码唯一标识user=普通用户admin=管理员super_admin=超级管理员';
COMMENT ON COLUMN auth_roles.name IS '角色显示名称,如"普通用户""管理员""超级管理员"';
COMMENT ON COLUMN auth_roles.level IS '角色等级值越小权限越高1=超管, 10=管理员, 100=普通用户,预留间隔便于扩展';
COMMENT ON COLUMN auth_roles.description IS '角色描述说明';
COMMENT ON COLUMN auth_roles.created_at IS '创建时间';
-- 预置角色数据
INSERT INTO auth_roles (code, name, description) VALUES
('user', '普通用户', '系统普通用户,可以使用聊天、会议等功能'),
('admin', '管理员', '后台管理员,可以管理用户、监控会议等'),
('super_admin', '超级管理员', '最高权限管理员,可以管理角色和系统配置');
-- 预置角色数据level 值越小权限越高)
INSERT INTO auth_roles (code, name, level, description) VALUES
('user', '普通用户', 100, '系统普通用户,可以使用聊天、会议等功能'),
('admin', '管理员', 10, '后台管理员,可以管理用户、监控会议等'),
('super_admin', '超级管理员', 1, '最高权限管理员,可以管理角色和系统配置');
-- ============================================================
-- auth_user_roles: 用户角色关联表
@@ -265,8 +269,8 @@ CREATE TABLE auth_user_roles (
#### 权限扩展规划(后期迭代)
> 当前 MVP 阶段使用粗粒度 3 角色(user / admin / super_admin)即可满足需求
> 后期管理员增多、需要区分职责时,引入细粒度权限点机制,扩展如下两张表:
> 当前已实现:3 角色 + level 等级层级管控(super_admin=1, admin=10, user=100),所有管理操作受层级约束
> 后期管理员增多、需要区分职责时,引入细粒度权限点机制,扩展如下两张表level 字段天然支持排序和层级融合)
```sql
-- 预留:权限点表(后期扩展)
@@ -714,8 +718,9 @@ POST /api/v1/admin/auth/login
GET /api/v1/admin/users
GET /api/v1/admin/users/:id
PUT /api/v1/admin/users/:id/status
PUT /api/v1/admin/users/:id/role
PUT /api/v1/admin/users/:id/roles
POST /api/v1/admin/users
GET /api/v1/admin/roles
GET /api/v1/admin/users/:id/meetings
# 会议管理