feat: 注册策略、用户邮箱可空与安全审计基础 #79

Open
opened 2026-08-29 21:00:36 +08:00 by ila · 2 comments
Owner

基本信息

  • 类型:单元任务(生产实现)
  • 所属 MVP:#76
  • 所属 Epic:#75
  • 前置工单:#77、#78(已验收)
  • 状态:待验收
  • 提出时间:2026-08-29
  • 需求来源:用户确认的 #77 技术设计

目标

通过 migration 12 和共享存储层交付默认关闭的注册策略、users.email 可空、注册安全事件以及 Admin 权限种子,为 Portal 与 Admin 提供稳定契约。

范围

  • 新增 000012 up/down SQL。
  • users.email 改为可空;down 遇到 NULL email 明确失败。
  • 新增 portal_registration_policy 单例表并默认 enabled=false。
  • 新增不含个人信息的 portal_auth_events。
  • 新增 Admin 注册策略 API、菜单与 Casbin 配置种子。
  • 在共享数据层实现策略读取、锁定复核、事件写入和错误分类。
  • migration up/down/up 与结构测试。

非目标

Portal HTTP 注册、页面、Admin Vue 页面、公开注册开启、数据删除。

风险与回退

生产禁止 AutoMigrate。回退前先关闭注册并确认不存在 NULL email;否则 down 必须停止。

验收标准

  • 迁移默认关闭注册且不修改既有用户。
  • up/down/up 通过,NULL email down 门禁有测试。
  • 策略与安全事件不记录账号、邮箱、密码、IP 或 User-Agent。
  • Admin 权限种子可逆。
  • 单元测试通过。

文档影响

完成后更新 Architecture-and-Code-Map、Business-Rules-and-Glossary。

## 基本信息 - 类型:单元任务(生产实现) - 所属 MVP:#76 - 所属 Epic:#75 - 前置工单:#77、#78(已验收) - 状态:待验收 - 提出时间:2026-08-29 - 需求来源:用户确认的 #77 技术设计 ## 目标 通过 migration 12 和共享存储层交付默认关闭的注册策略、users.email 可空、注册安全事件以及 Admin 权限种子,为 Portal 与 Admin 提供稳定契约。 ## 范围 - 新增 000012 up/down SQL。 - users.email 改为可空;down 遇到 NULL email 明确失败。 - 新增 portal_registration_policy 单例表并默认 enabled=false。 - 新增不含个人信息的 portal_auth_events。 - 新增 Admin 注册策略 API、菜单与 Casbin 配置种子。 - 在共享数据层实现策略读取、锁定复核、事件写入和错误分类。 - migration up/down/up 与结构测试。 ## 非目标 Portal HTTP 注册、页面、Admin Vue 页面、公开注册开启、数据删除。 ## 风险与回退 生产禁止 AutoMigrate。回退前先关闭注册并确认不存在 NULL email;否则 down 必须停止。 ## 验收标准 - [ ] 迁移默认关闭注册且不修改既有用户。 - [ ] up/down/up 通过,NULL email down 门禁有测试。 - [ ] 策略与安全事件不记录账号、邮箱、密码、IP 或 User-Agent。 - [ ] Admin 权限种子可逆。 - [ ] 单元测试通过。 ## 文档影响 完成后更新 Architecture-and-Code-Map、Business-Rules-and-Glossary。
Author
Owner

开始实施(2026-08-29)。前置 #77、#78 已验收。工作区既有且不属于本工单的改动:config/local-services.yml、未跟踪 admin/config/settings.yml、PixPin 截图;本工单保留不动。先实现 migration 12、共享存储契约和迁移测试。

开始实施(2026-08-29)。前置 #77、#78 已验收。工作区既有且不属于本工单的改动:config/local-services.yml、未跟踪 admin/config/settings.yml、PixPin 截图;本工单保留不动。先实现 migration 12、共享存储契约和迁移测试。
Author
Owner

实现完成,待用户验收。

最终差异:

  • 新增 migration 12:users.email 可空、默认关闭的注册策略单例、安全事件表和 Admin API/Casbin 种子。
  • down 在存在 NULL email 时先失败,不会伪造邮箱或继续删除权限/表。
  • 新增 internal/core/registration 存储层,提供策略读取、事务内共享锁复核和无个人信息安全事件写入。
  • 调整 User GORM 声明与迁移契约/集成测试。

验证:

  • go test ./internal/core/registration ./internal/core/model ./migrations:通过。
  • 专用 127.0.0.1:3308/chorus_test migration 1→12、NULL email down 阻断、恢复后 down/up:通过。
  • 未调用 Provider,未使用真实用户数据。

提交:a079a1d(已推送 main)

文档影响:长期页面将在 #83 按确认后的完整实现统一更新并同步镜像。

实现完成,待用户验收。 最终差异: - 新增 migration 12:users.email 可空、默认关闭的注册策略单例、安全事件表和 Admin API/Casbin 种子。 - down 在存在 NULL email 时先失败,不会伪造邮箱或继续删除权限/表。 - 新增 internal/core/registration 存储层,提供策略读取、事务内共享锁复核和无个人信息安全事件写入。 - 调整 User GORM 声明与迁移契约/集成测试。 验证: - go test ./internal/core/registration ./internal/core/model ./migrations:通过。 - 专用 127.0.0.1:3308/chorus_test migration 1→12、NULL email down 阻断、恢复后 down/up:通过。 - 未调用 Provider,未使用真实用户数据。 提交:a079a1d(已推送 main) 文档影响:长期页面将在 #83 按确认后的完整实现统一更新并同步镜像。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/chorus#79