fa4127b9e5
Reviewed-on: #128
47 lines
2.3 KiB
Markdown
47 lines
2.3 KiB
Markdown
# PATCH /admin/api/admins/{admin_id} — 改角色/启停/重置密码
|
||
|
||
> 所属:Admin·Accounts 组(前缀 `/admin/api/admins`) | 鉴权:Bearer admin_token(角色:super_admin) | [← 返回 API 索引](../../README.md)
|
||
|
||
## 入参
|
||
**路径参数**:
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|---|---|---|---|
|
||
| `admin_id` | int | ✓ | 目标管理员 id |
|
||
|
||
**application/json**(字段都可选,只改传了的;至少传一个):
|
||
| 字段 | 类型 | 必填 | 说明 |
|
||
|---|---|---|---|
|
||
| `role` | string | ✗ | 改角色:内建 `super_admin` / `finance` / `operator` **或自定义角色 name**(#117/#126,见 [admin-roles](../admin-roles.md)) |
|
||
| `pages_override` | list[string] \| null | ✗ | 个人可见页覆盖(#126):非空优先于角色 pages;传 `null` 清覆盖回归角色 |
|
||
| `status` | string | ✗ | 启停,枚举:`active`(启用)/ `disabled`(禁用) |
|
||
| `password` | string | ✗ | 重置密码,8–72 字(传则覆盖原密码,同时更新 `plain_password` 明文副本) |
|
||
|
||
## 出参
|
||
响应 `200`:`AdminOut`(更新后的管理员)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|---|---|---|
|
||
| `id` | int | 管理员 id |
|
||
| `username` | string | 账号 |
|
||
| `role` | string | 角色 |
|
||
| `status` | string | 状态 |
|
||
| `pages` | list[string] | **有效可见页**(pages_override 优先,否则角色 pages;super_admin 全量) |
|
||
| `created_at` | datetime | 创建时间(UTC) |
|
||
| `last_login_at` | datetime \| null | 上次登录时间 |
|
||
|
||
---
|
||
|
||
## DELETE /admin/api/admins/{admin_id} — 删除管理员(#126)
|
||
物理删除(区别于禁用);**不可删自己**(`400`);带审计(`action=admin.delete`)。鉴权同本组(super_admin)。出参 `{"deleted": true}`。
|
||
|
||
## 错误码
|
||
- `400` 不能禁用自己(`admin_id == 当前 admin.id` 且 `status=disabled`) / 无任何变更字段(三字段全空)
|
||
- `401` 未带 admin token / token 无效或过期 / 管理员被禁用
|
||
- `403` 角色不足(仅 super_admin)
|
||
- `404` 管理员不存在
|
||
- `422` `role`/`status` 非法枚举 / `password` 长度不在 8–72
|
||
|
||
## 说明
|
||
- 更新成功后写一条审计:`action=admin.update`、`target_type=admin`、`target_id=admin_id`、`detail` 为本次实际变更字段(如 `{"role": "...", "status": "...", "password": "reset"}`,密码只记 `reset` 不记明文)。见 [admin_audit_log](../../../database/admin_audit_log.md)。
|
||
- 数据表见 [admin_user](../../../database/admin_user.md)。
|