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

@@ -11,9 +11,10 @@
|------|------|------|------|
| GET | /api/v1/admin/users | admin | 获取用户列表 |
| GET | /api/v1/admin/users/:id | admin | 获取用户详情 |
| PUT | /api/v1/admin/users/:id/status | admin | 更新用户状态 |
| PUT | /api/v1/admin/users/:id/role | admin / super_admin | 分配用户角色 |
| PUT | /api/v1/admin/users/:id/status | admin | 更新用户状态(受角色等级约束) |
| PUT | /api/v1/admin/users/:id/roles | admin / super_admin | 批量设置用户角色(受角色等级约束) |
| POST | /api/v1/admin/users | admin | 管理员创建用户 |
| GET | /api/v1/admin/roles | admin | 获取所有角色列表(含 level |
| GET | /api/v1/admin/users/:id/meetings | admin | 获取用户会议记录Phase 3 实现) |
---
@@ -51,7 +52,10 @@
"phone": "13800138000",
"status": 1,
"status_text": "正常",
"roles": ["user"],
"roles": [
{ "code": "user", "name": "普通用户", "level": 100 }
],
"max_level": 100,
"last_login_at": "2026-02-27 10:00:00",
"last_login_ip": "192.168.1.100",
"created_at": "2026-02-20 08:00:00",
@@ -85,7 +89,10 @@
"phone": "13800138000",
"status": 1,
"status_text": "正常",
"roles": ["user"],
"roles": [
{ "code": "user", "name": "普通用户", "level": 100 }
],
"max_level": 100,
"last_login_at": "2026-02-27 10:00:00",
"last_login_ip": "192.168.1.100",
"created_at": "2026-02-20 08:00:00",
@@ -111,6 +118,7 @@
**说明:**
- 禁用用户后,该用户的所有活跃 Token 将被清除
- 不能禁用自己的账号(返回 400
- 操作者权限等级必须高于目标用户level 数值更小),否则返回 403
- 禁用后用户尝试登录将返回 403
**成功响应:**
@@ -125,9 +133,9 @@
---
## 4. 分配用户角色
## 4. 批量设置用户角色
`PUT /api/v1/admin/users/:id/role`
`PUT /api/v1/admin/users/:id/roles`
**权限:** admin / super_admin
@@ -135,11 +143,49 @@
| 字段 | 类型 | 必填 | 说明 |
|------|------|------|------|
| role_code | string | 是 | 角色代码user / admin / super_admin |
| role_codes | string[] | 是 | 角色代码列表,如 `["user", "admin"]` |
**权限管控规则:**
- 操作者权限等级level必须严格高于目标用户数值更小否则返回 403
- 不能分配等级高于或等于操作者自身的角色,否则返回 403
- 角色列表为全量覆盖(先清除再设置)
- 注:`super_admin` 角色level=1不可通过 API 分配(任何人的 level 都 >= 1超管只能通过数据库直接创建
**成功响应:**
```json
{
"code": 0,
"message": "success"
}
```
**错误响应:**
- 403`权限不足,无法操作更高等级的用户``不能分配高于自身等级的角色`
---
## 5. 管理员创建用户
## 5. 获取所有角色列表
`GET /api/v1/admin/roles`
**权限:** admin
**成功响应:**
```json
{
"code": 0,
"message": "success",
"data": [
{ "code": "super_admin", "name": "超级管理员", "level": 1 },
{ "code": "admin", "name": "管理员", "level": 10 },
{ "code": "user", "name": "普通用户", "level": 100 }
]
}
```
---
## 6. 管理员创建用户
`POST /api/v1/admin/users`
@@ -155,6 +201,14 @@
| nickname | string | 否 | 昵称(默认使用用户名) |
| role_code | string | 否 | 指定角色,默认为 user |
**权限管控规则:**
- 不能为新用户分配等级高于或等于操作者自身的角色,否则返回 403
-adminlevel=10只能分配 level > 10 的角色(如 user不能分配 admin 或 super_admin
**错误响应:**
- 400`用户名或邮箱已被注册` / `无效的角色代码`
- 403`不能分配高于自身等级的角色`
**成功响应:**
```json
{
@@ -169,7 +223,10 @@
"gender": 0,
"status": 1,
"status_text": "正常",
"roles": ["user"],
"roles": [
{ "code": "user", "name": "普通用户", "level": 100 }
],
"max_level": 100,
"created_at": "2026-03-02 11:12:33",
"updated_at": "2026-03-02 11:12:33"
},
@@ -180,7 +237,7 @@
---
## 6. 获取用户会议记录
## 7. 获取用户会议记录
`GET /api/v1/admin/users/:id/meetings`