feat: add portal api key management
This commit is contained in:
+22
@@ -753,3 +753,25 @@
|
||||
- 阻塞:T-501 功能无阻塞。生产邮箱验证需要配置真实邮件服务;当前默认 console backend 只适合本地开发。allauth 的 `EmailAddress` 条件唯一约束在 MySQL 上有第三方模型警告,但本项目账本唯一性由 `user.email` 唯一约束承担。
|
||||
- 决策:不引入 crispy-forms;T-501 只需要简单 allauth 表单,MVP 先用 Django form + Bootstrap 模板。注册路径只初始化 0 点钱包,不创建 `PointsLedger`,避免被误解为注册赠点。
|
||||
- 下一步:领取 T-502 API Key 自助管理页。
|
||||
|
||||
## 2026-07-03 T-502 API Key 自助管理页
|
||||
|
||||
- 状态:DONE
|
||||
- 变更:
|
||||
- `apps/portal/forms.py`:新增 `ApiKeyCreateForm`,用于用户端填写 Key 名称。
|
||||
- `apps/portal/views.py` / `urls.py`:新增 `/apikeys` 列表 + 生成页,以及 `/apikeys/<id>/delete` 删除动作;生成复用 `ApiKey.create_for_user()`,完整明文只放入 session 供重定向后的首个页面显示一次;删除写为 `revoked`,不物理删除。
|
||||
- `apps/portal/templates/portal/apikeys.html` / `base.html` / `dashboard.html`:新增 API Key 管理页、导航入口和 dashboard 入口;列表只显示 prefix、名称、状态和时间。
|
||||
- `apps/portal/tests.py`:新增 6 条用户端 API Key 测试,覆盖登录保护、明文只显示一次、库内只存 hash、列表只见本人 prefix、CSRF 保护、删除后外部 API 返回 403。
|
||||
- 同步更新 `README.md`、`docs/00-ai-start-here.md`、`docs/03-tech-stack.md`、`docs/04-architecture.md`、`docs/api.md`、`docs/routes.md`、`docs/06-tasks.md`、`docs/current-state.md`、`docs/project-brief.md`、`docs/project-onepager.md`。
|
||||
- 验证:
|
||||
- `py -3.12 -m py_compile apps\portal\forms.py apps\portal\views.py apps\portal\urls.py apps\portal\tests.py`:通过。
|
||||
- `py -3.12 manage.py check`:通过,0 issues。
|
||||
- `py -3.12 manage.py test apps.portal --noinput --keepdb --verbosity 2`:通过,11 tests OK。
|
||||
- `py -3.12 manage.py makemigrations --check --dry-run`:通过,No changes detected。
|
||||
- `py -3.12 -m compileall apps config`:通过。
|
||||
- `py -3.12 manage.py test apps.users apps.portal apps.api --noinput --keepdb --verbosity 2`:通过,52 tests OK。
|
||||
- `./init.ps1`:通过,Python 3.12.3、依赖已满足、`manage.py check` 0 issues。
|
||||
- `git diff --check`:通过,仅 Windows CRLF 提示。
|
||||
- 阻塞:无。测试阶段仍有 allauth `account.EmailAddress` 条件唯一约束在 MySQL 上不可创建的 `models.W036` 警告;本项目账本邮箱唯一性由 `user.email` 唯一约束承担。
|
||||
- 决策:T-502 原任务写“删除后该 Key 调用 401”,但项目架构和 T-301 已明确 `revoked` Key 返回 403、缺失/无效/不存在 Key 才返回 401;本轮将用户端“删除”定义为吊销 `revoked`,保留审计与调用记录关联,并同步修正文档口径。
|
||||
- 下一步:领取 T-503 个人中心 / 记录页。
|
||||
|
||||
Reference in New Issue
Block a user