feat: 增加客户端采购员归属管理 (#54)
This commit is contained in:
@@ -31,6 +31,8 @@
|
||||
- 密码哈希校验:正确密码成功,错误密码失败,数据库不出现明文密码;
|
||||
- 角色校验:管理员可以管理用户,采购员访问用户管理返回 `403`;
|
||||
- 最后管理员保护:不能禁用最后一个有效管理员。
|
||||
- 客户端归属:一人多客户端、一台客户端唯一当前负责人、转交/解绑历史完整;
|
||||
- 归属权限:采购员只看到自己的客户端,不能绑定、解绑或删除;禁用采购员不能成为新目标。
|
||||
|
||||
`[必须]` 导入相关的测试用 `admin/testdata/` 下的**小样本**(几十行),
|
||||
不要读完整报表。
|
||||
@@ -68,6 +70,8 @@
|
||||
- 未登录访问业务页面跳转登录页,登录后正常渲染;
|
||||
- 退出、Session 过期、密码重置和账号禁用后不能继续访问;
|
||||
- Client API 不返回登录页或 302 重定向。
|
||||
- 管理员客户端页显示全量和负责人;采购员客户端页只读且只显示自己的客户端;
|
||||
- 绑定/转交弹窗有明确标签和焦点,解绑有二次确认,操作结果可被辅助技术读到。
|
||||
|
||||
### 2.4 契约测试
|
||||
|
||||
@@ -107,6 +111,7 @@
|
||||
- `[必须]` 登录 Cookie 设置 `HttpOnly`、`SameSite=Lax`、`Path=/`;HTTPS 部署时设置 `Secure`。
|
||||
- `[必须]` Session 默认 12 小时过期;退出、密码重置和账号禁用立即撤销对应 Session。
|
||||
- `[必须]` `/setup`、`/login`、`/logout` 和用户管理写操作都保留 CSRF 防护。
|
||||
- `[必须]` 客户端绑定、转交、解绑和删除只能由管理员执行,并保留 CSRF 防护。
|
||||
- `[必须]` Web 登录中间件只保护 HTML 路由,不得覆盖 `/api/v1/client/*`。
|
||||
- `[建议]` 对连续登录失败做简单限速;错误提示不区分用户名不存在和密码错误。
|
||||
|
||||
@@ -149,6 +154,7 @@
|
||||
- `client_registered`
|
||||
- `admin_initialized`、`user_login_succeeded`、`user_login_failed`
|
||||
- `user_created`、`user_disabled`、`user_enabled`、`user_password_reset`
|
||||
- `client_assignment_changed`、`client_assignment_ended`(只记录管理员用户名和相关 ID)
|
||||
|
||||
`[必须]` **不得记录** token、密码、Cookie,也不要把完整请求体无脑打进日志。
|
||||
|
||||
@@ -178,6 +184,7 @@
|
||||
| 11 | 登录与角色测试通过 | 初始化、登录、退出、禁用、最后管理员保护 | 开发者 |
|
||||
| 12 | Client API 回归通过 | 四接口不重定向、不返回 HTML,契约测试全绿 | 开发者 |
|
||||
| 13 | Session 安全属性正确 | 检查 Cookie 属性、过期和撤销 | 开发者 |
|
||||
| 14 | 客户端归属正确 | 唯一当前负责人、历史、角色可见范围、既有任务不变 | 开发者 |
|
||||
|
||||
第 10 项开发者**不要自己判断放行**,把包名和许可证类型报给项目负责人。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user