Przeglądaj źródła

feat: 文档更新

BaiLuoYan 3 dni temu
rodzic
commit
d6c33643e7
1 zmienionych plików z 25 dodań i 0 usunięć
  1. 25 0
      README.md

+ 25 - 0
README.md

@@ -412,6 +412,7 @@ flowchart LR
 | 冻结/解冻用户 | 通过 `CheckManageAccess` | 不可冻结自己和超管 |
 | 绑定角色 | 通过 `CheckManageAccess` | 目标用户的成员状态必须启用 |
 | 设置权限覆盖 | 通过 `CheckManageAccess` | 目标用户的成员状态必须启用;产品必须启用 |
+| 查看权限覆盖 | 本人自查无需额外检查;查他人需通过 `CheckManageAccess` | userId 枚举防护:非超管非本人时先检查产品管理员身份 |
 | **成员管理** | | |
 | 添加成员 | 通过 `CheckManageAccess` + `CheckMemberTypeAssignment` | 不可分配同级或更高类型;产品必须启用 |
 | 更新成员 | 通过 `CheckManageAccess` + `CheckMemberTypeAssignment` | 不可降级最后一个 ADMIN |
@@ -1394,6 +1395,30 @@ Content-Type: application/json
 | perms[].permId | int64 | 是 | 权限 ID |
 | perms[].effect | string | 是 | `ALLOW`(额外授予)或 `DENY`(强制拒绝) |
 
+#### POST /api/user/userPerms — 查看用户权限覆盖
+
+查询指定用户在当前产品下已配置的个性化 ALLOW/DENY 覆盖记录。供管理后台在打开「设置权限」抽屉时回填当前状态,使编辑页能正确展示现有的授权/拒绝项。
+
+**调用场景:**
+
+- **管理后台权限设置面板初始化**:打开某用户的「权限覆盖」设置抽屉时,前端调用此接口获取该用户已有的 ALLOW/DENY 记录,结合角色继承权限计算出「当前有效选中项」,回填权限树的勾选状态
+- **权限配置审计**:管理员查看某用户有哪些独立于角色的额外授权或强制拒绝项,评估权限是否合理
+
+**访问控制:**
+
+- 用户查询自己的覆盖记录:无需管理员权限,直接允许
+- 非超管查询他人记录:需先通过产品管理员身份检查(`RequireProductAdminFor`),再通过 `CheckManageAccess` 校验是否有权管理目标用户,防止普通成员枚举其他用户 ID
+
+| 字段 | 类型 | 必填 | 说明 |
+| ------ | ------ | ------ | ------ |
+| userId | int64 | 是 | 目标用户 ID |
+
+> `productCode` 从 JWT 中间件注入的产品上下文获取,无需在请求体传入。
+
+**响应 data:** `{"perms": [{"permId": 1, "effect": "ALLOW"}, {"permId": 5, "effect": "DENY"}, ...]}`
+
+仅返回状态为启用(`status=1`)的权限项的覆盖记录。前端须结合用户的角色继承权限 (`/user/detail` 中的 `roleIds` → `/role/detail` 中的 `permIds`) 计算最终有效选中状态:有效 = 角色继承 ∪ ALLOW - DENY。
+
 #### POST /api/user/updateStatus — 更新用户状态(需管理权限)
 
 冻结或解冻用户账号。冻结后用户立即无法访问任何产品。需通过 `CheckManageAccess` 权限检查。