feat(auth): 邮件重设密码与旧会话撤销 #43

Merged
Zayden-Jung merged 2 commits from codex/account-recovery into main 2026-11-01 16:45:17 +00:00
Collaborator

问题与目标

已有已验证账户的持有人不知道原密码时,需要通过邮箱安全设置新密码,而不是要求提供未知原密码或删除账户。

改动

  • 017_password_reset.sql:扩展令牌种类,支持 reset,沿用仅保存摘要的令牌存储。
  • account.ts:发送 30 分钟有效的密码恢复链接;用户主动提交新密码后单次消费令牌,保留账户内容并撤销旧会话与其他恢复链接。按账户加锁,避免并发恢复或旧密码登录越过撤销。
  • account-handler.ts:新增 forgot/reset POST,保留来源检查、大小限制及频率限制,申请链接使用统一回复避免直接暴露账户存在性;重设后清除当前 Cookie。
  • account-integration.ts / integration.test.ts:增加真实 HTTP 恢复端点、来源拒绝、统一回复、Cookie 清除和消费后重用拒绝;真实 PostgreSQL 检查并发恢复只有一次成功、旧密码失效、旧会话撤销、过期和重复链接拒绝、验证令牌不能代替恢复令牌。

验证与依赖

  • git diff --check 通过;本机未编译或构建,ces-control CI #685 全部成功:类型检查、单元测试、生产构建及冒烟、真实 PostgreSQL 与 HTTP 恢复和整套浏览器集成、动态验证码认证均通过。
  • 前端入口位于 PR #42:应先合并本 PR,再合并 #42,待两者部署后使用恢复链接。
  • 已转为可评审,等待用户手动合并;前端 #42 的组合验证另行跟进。
## 问题与目标 已有已验证账户的持有人不知道原密码时,需要通过邮箱安全设置新密码,而不是要求提供未知原密码或删除账户。 ## 改动 - 017_password_reset.sql:扩展令牌种类,支持 reset,沿用仅保存摘要的令牌存储。 - account.ts:发送 30 分钟有效的密码恢复链接;用户主动提交新密码后单次消费令牌,保留账户内容并撤销旧会话与其他恢复链接。按账户加锁,避免并发恢复或旧密码登录越过撤销。 - account-handler.ts:新增 forgot/reset POST,保留来源检查、大小限制及频率限制,申请链接使用统一回复避免直接暴露账户存在性;重设后清除当前 Cookie。 - account-integration.ts / integration.test.ts:增加真实 HTTP 恢复端点、来源拒绝、统一回复、Cookie 清除和消费后重用拒绝;真实 PostgreSQL 检查并发恢复只有一次成功、旧密码失效、旧会话撤销、过期和重复链接拒绝、验证令牌不能代替恢复令牌。 ## 验证与依赖 - git diff --check 通过;本机未编译或构建,ces-control CI #685 全部成功:类型检查、单元测试、生产构建及冒烟、真实 PostgreSQL 与 HTTP 恢复和整套浏览器集成、动态验证码认证均通过。 - 前端入口位于 PR #42:应先合并本 PR,再合并 #42,待两者部署后使用恢复链接。 - 已转为可评审,等待用户手动合并;前端 #42 的组合验证另行跟进。
codex-bot added 1 commit 2026-11-01 15:51:32 +00:00
feat(auth): add single-use email password recovery and session revocation
creative workspace review checks / verify-deployed-canvas (pull_request) Successful in 58s
creative workspace review checks / verify (pull_request) Has been cancelled
6800a1b1c4
codex-bot added 1 commit 2026-11-01 16:02:37 +00:00
test(auth): verify recovery endpoints over HTTP with real storage
creative workspace review checks / verify-deployed-canvas (pull_request) Successful in 53s
creative workspace review checks / verify (pull_request) Successful in 25m37s
b31a4835ee
codex-bot marked the pull request as ready for review 2026-11-01 16:40:33 +00:00
Zayden-Jung merged commit 7656f0438c into main 2026-11-01 16:45:17 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Zayden-Jung/probably-rendering-one-more-pixel-tonight#43