Files
junhong_cmp_fiber/openspec/specs/global-operation-password/spec.md
huang 4aab0bcbf2
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 4m39s
提案以及归档
2026-04-18 09:10:29 +08:00

57 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### Requirement: 超级管理员可设置和修改全局操作密码
系统 SHALL 提供 `POST /api/admin/super-admin/operation-password` 接口,仅允许 `user_type=1`(超级管理员)调用,用于设置或修改全局操作密码。密码以 bcrypt 哈希值存储于 Redis。
#### Scenario: 超级管理员首次设置操作密码
- **WHEN** 超级管理员调用 `POST /api/admin/super-admin/operation-password`,传入合法的 `password``confirm_password`(两者一致)
- **THEN** 系统将 bcrypt 哈希后的密码写入 Redis返回 200 成功
#### Scenario: 超级管理员修改已有操作密码
- **WHEN** 操作密码已存在,超级管理员重新调用设置接口传入新密码
- **THEN** 系统覆盖 Redis 中的旧哈希值,返回 200 成功
#### Scenario: 非超级管理员调用被拒绝
- **WHEN** `user_type != 1` 的账号调用 `POST /api/admin/super-admin/operation-password`
- **THEN** 系统返回 403错误消息"仅超级管理员可设置操作密码"
#### Scenario: 两次密码不一致
- **WHEN** 超级管理员传入的 `password``confirm_password` 不一致
- **THEN** 系统返回 400错误消息"两次输入的密码不一致"
### Requirement: 可查询操作密码设置状态
系统 SHALL 提供 `GET /api/admin/super-admin/operation-password/status` 接口,返回操作密码是否已设置(布尔值),不返回密码本身,仅超级管理员可调用。
#### Scenario: 查询已设置状态
- **WHEN** 操作密码已设置,超级管理员调用状态查询接口
- **THEN** 返回 `{"is_set": true}`
#### Scenario: 查询未设置状态
- **WHEN** 操作密码未设置Redis 中无对应 key超级管理员调用状态查询接口
- **THEN** 返回 `{"is_set": false}`
### Requirement: 操作密码验证使用全局操作密码
系统 SHALL 将所有需要操作密码验证的接口(目前为 `agent-recharges` 线下充值确认)改为验证全局操作密码,而非当前登录用户的登录密码。
#### Scenario: 操作密码正确时通过验证
- **WHEN** 调用需要操作密码的接口,传入正确的全局操作密码
- **THEN** 验证通过,接口正常执行后续业务逻辑
#### Scenario: 操作密码错误时拒绝
- **WHEN** 调用需要操作密码的接口,传入错误的密码
- **THEN** 系统返回 400错误消息"操作密码错误"
#### Scenario: 操作密码未设置时拒绝
- **WHEN** Redis 中无操作密码,调用需要操作密码的接口
- **THEN** 系统返回 400错误消息"操作密码未设置,请联系超级管理员"