3.5 KiB
3.5 KiB
ADDED Requirements
Requirement: Self-service password menu entry
系统 SHALL 在顶部用户菜单“个人中心”和“锁定屏幕”之间提供“修改密码”入口,点击后显示当前登录用户的修改密码弹窗,不跳转页面。
Scenario: 打开修改密码弹窗
- WHEN 当前登录用户点击顶部菜单“修改密码”
- THEN 系统 MUST 关闭用户菜单浮层并显示修改密码弹窗
- AND 弹窗 MUST 包含旧密码、新密码、确认新密码、取消及确认操作
- AND 输入 MUST 默认隐藏密码并支持切换可见
Requirement: Password form validation
系统 SHALL 校验旧密码必填、新密码及确认新密码长度为 8–32 位且两次新密码一致,在校验通过前不得发送修改密码请求。系统 MUST NOT 自动裁剪或修改用户输入的密码,也不得对旧密码新增长度限制。
Scenario: 密码长度边界
- WHEN 新密码或确认新密码长度为 7 或 33 位
- THEN 表单 MUST 提示长度要求并阻止提交
- AND 长度为 8 或 32 位且其他校验通过时 MUST 允许提交
Scenario: 必填及一致性校验
- WHEN 任一密码字段为空,或者两次新密码不一致
- THEN 表单 MUST 展示对应字段错误并阻止提交
Requirement: Unified authentication password contract
系统 SHALL 通过现有统一认证请求层调用 PUT /api/auth/password,请求体 MUST 仅包含 old_password 和 new_password,Bearer 认证 MUST 沿用当前登录会话,确认密码 MUST NOT 发送到服务端。
Scenario: 提交有效表单
- WHEN 用户提交通过校验的密码表单
- THEN 系统 MUST 发送旧密码至
old_password、新密码至new_password - AND 请求方法 MUST 为 PUT,请求路径 MUST 为
/api/auth/password - AND 请求 MUST 沿用现有请求层的 Bearer 认证
Requirement: Password submission lifecycle
系统 SHALL 在提交期间提供加载状态并阻止重复提交;成功后提示、关闭弹窗并清空敏感字段及记住密码凭证;普通失败时保留弹窗并展示后端错误;认证过期 MUST 沿用现有请求层处理。成功后系统 MUST NOT 主动退出登录或改变锁屏密码。
Scenario: 重复点击提交
- WHEN 修改密码请求尚未完成时用户再次确认
- THEN 系统 MUST 保持加载状态且不得发送重复请求
Scenario: 修改成功
- WHEN 修改密码请求成功
- THEN 系统 MUST 提示成功并关闭弹窗
- AND 系统 MUST 清空全部密码字段及保存的旧登录凭证
- AND 系统 MUST 保留当前登录状态,不修改锁屏密码
Scenario: 修改失败
- WHEN 接口返回普通错误,如旧密码错误或服务器错误
- THEN 系统 MUST 通过现有请求层展示错误并保留弹窗
- AND 系统 MUST 解除提交中状态以允许用户更正后重试
Scenario: 取消后重新打开
- WHEN 用户取消或关闭弹窗后重新打开
- THEN 所有密码字段及校验状态 MUST 为空
Requirement: Password dialog interface consistency
修改密码弹窗 SHALL 复用现有 Element Plus 组件和主题,支持中英文、键盘操作及窄屏展示,密码输入 MUST 具备可识别标签和可见校验反馈。
Scenario: 窄屏及键盘操作
- WHEN 用户在窄屏设备或通过键盘打开弹窗
- THEN 弹窗 MUST 不产生水平溢出,且可访问全部输入、取消及确认操作