feat: admin user management supports multi-identity bind/unbind

- users list: identity_count column (backend subquery)
- user detail: returns identities array
- POST /users/:id/identities, DELETE /users/:id/identities/:identityId
  (owner protection, dup checks, keep >=1, audit logs)
- users page: identity column in table + manage section in edit modal
- API docs updated
This commit is contained in:
2026-08-17 01:34:20 +08:00
parent 4c221ad6f1
commit 25a766591e
3 changed files with 131 additions and 4 deletions

View File

@@ -212,7 +212,7 @@ Base URL: `http://<host>:3100/api`
## 四、用户管理 Users *(admin/owner)*
### GET /users *(admin/owner)*、GET /users/:id *(admin/owner)*
用户列表 / 详情(含管辖子服务器)。
用户列表(含 `identity_count` 身份数)/ 详情(含 `identities` 全部身份、管辖子服务器)。
### POST /users *(admin/owner)*
创建用户(自动写入 user_identities 主身份)。角色 owner 仅服主可建。
@@ -220,6 +220,16 @@ Base URL: `http://<host>:3100/api`
### PUT /users/:id *(admin/owner)*
更新邮箱/游戏名/UID/来源/角色/状态/密码/管辖服务器。主身份字段变化自动同步 `user_identities`
### POST /users/:id/identities *(admin/owner)*
管理员为用户绑定额外来源身份(多身份管理)。
```json
{ "source": "skin", "game_name": "Alex", "game_uid": "SKIN_UUID" }
```
规则同 `POST /auth/identities`(同来源唯一、游戏名全局唯一、网易端必填 UID)。
### DELETE /users/:id/identities/:identityId *(admin/owner)*
管理员解绑用户身份(至少保留一个)。
### GET /users/:id/servers *(admin/owner)*
管辖子服务器列表。