60 lines
3.3 KiB
Markdown
60 lines
3.3 KiB
Markdown
## ADDED Requirements
|
||
|
||
### Requirement: 后台新登录密码统一校验
|
||
|
||
后台既有设置新登录密码的表单 SHALL 按用户最新确认使用专用统一校验:长度 8~12 位,仅允许 ASCII 英文字母和数字,必须同时包含大写字母、小写字母和数字。特殊符号、空白、中文、emoji 和其他非英文字母数字字符 MUST 拒绝;用户确认 MUST 优先于原对接说明的四类字符规则。
|
||
|
||
#### Scenario: 有效新密码
|
||
|
||
- **WHEN** 用户在后台本人改密、账号创建、店铺初始账号、企业创建或企业改密入口输入 `Abc12345`
|
||
- **THEN** 新密码校验 MUST 通过
|
||
- **AND** 新密码/确认密码输入限制及说明 MUST 为 8~12 位,仅英文字母和数字,且大写、小写和数字三类均必需
|
||
- **AND** 需要确认密码的表单 MUST 验证其与新密码一致
|
||
|
||
#### Scenario: 无效新密码
|
||
|
||
- **WHEN** 用户输入 7 位、13 位、缺少大写/小写/数字任一类的密码,或包含特殊符号、空白、中文、emoji 等非法字符的密码
|
||
- **THEN** 前端 MUST 阻止提交并展示具体规则提示
|
||
- **AND** MUST NOT 静默 trim 密码后当作合法值提交
|
||
|
||
#### Scenario: 字符类别齐全但含特殊符号
|
||
|
||
- **WHEN** 用户输入 `Abc1234!`,长度符合且已包含大写、小写和数字
|
||
- **THEN** 前端 MUST 因 `!` 是禁止的特殊符号拒绝该密码
|
||
- **AND** MUST 提示只允许英文字母和数字,不能按原四类字符规则放行
|
||
|
||
#### Scenario: 修改账号未设置新密码
|
||
|
||
- **WHEN** 既有账号修改操作未提供可选 `password`
|
||
- **THEN** 页面 MUST NOT 因缺少密码阻止其他字段修改
|
||
- **AND** MUST NOT 提交空密码覆盖原值
|
||
- **AND** 本批次 MUST NOT 仅为接口清单补建当前没有的账号密码编辑入口
|
||
|
||
### Requirement: 后台密码接口字段与旧密码兼容
|
||
|
||
后台密码服务 SHALL 保持各接口规定的请求字段;本人改密和账号独立改密的新密码使用 `new_password`,账号创建/可选修改及企业创建/改密使用 `password`,店铺初始密码使用 `init_password`。后端字段级错误 MUST 以既有 `msg` 或提供的 `message` 展示,不替换为笼统提示,不记录密码。
|
||
|
||
#### Scenario: 独立修改账号密码
|
||
|
||
- **WHEN** 既有服务调用 `PUT /api/admin/accounts/{id}/password`
|
||
- **THEN** 请求体 MUST 按本批次说明使用 `new_password`,而不是当前旧封装的 `password`
|
||
- **AND** 本批次 MUST NOT 将其他账号接口的 `password` 改名
|
||
|
||
#### Scenario: 使用旧密码登录和本人改密
|
||
|
||
- **WHEN** 用户使用仍被后端接受的旧密码登录或填写本人改密 `old_password`
|
||
- **THEN** 前端 MUST NOT 对这些旧密码输入套用新的 8~12 位/三类/禁止特殊符号限制
|
||
- **AND** 本人改密成功后的清理表单、清理登录态和返回登录页行为 MUST 保留
|
||
|
||
#### Scenario: 非登录密码与 C 端保持不变
|
||
|
||
- **WHEN** 实施本批次密码适配
|
||
- **THEN** 操作密码、WiFi 密码和通用校验器其他调用行为 MUST 保持不变
|
||
- **AND** 本仓库公开扫码注册页面和所有 `/api/c/v1` 服务 MUST 不修改
|
||
|
||
#### Scenario: 展示后端字段级原因
|
||
|
||
- **WHEN** 密码相关请求返回包含具体校验原因的 `msg` 或 `message`
|
||
- **THEN** 页面 MUST 展示该原因且不重复弹错
|
||
- **AND** 请求、日志和错误反馈 MUST NOT 输出输入的密码值
|