Files
ds-galo/openspec/changes/metadata-managed-jwt-secret/tasks.md
T
iu cb272398ce feat(auth): store the token signing secret in the metadata layer
- app_settings table (PostgreSQL migration 000010, SQLite 000002)
- internal/settings repository (Get/Set/Ensure) wired into store.Repos
- secret generated with crypto/rand on first start and persisted; reused on restart
- drop required JWT_SECRET from env/config; app.New takes a TokenManager and
  storage.Open takes the resolved secret (URL_SECRET still overrides)
- docs updated
2026-10-11 10:18:31 +03:00

1.6 KiB
Raw Blame History

Tasks

1. Репозиторий секретов и миграции

  • 1.1 Добавить таблицу app_settings миграциями: PostgreSQL 000010_app_settings и SQLite 000002_app_settings; проверка — применение на временных БД и идемпотентность.
  • 1.2 Реализовать internal/settings (Get/Set/Ensure) для pg и sqlite и добавить в store.Repos; проверка — контрактный тест: Ensure идемпотентен и возвращает одно значение.

2. Проводка и конфиг

  • 2.1 Убрать Auth.JWTSecret и его обязательность из конфига; app.New принимает готовый *auth.TokenManager; storage.Open принимает секрет-fallback; проверка — go build ./....
  • 2.2 В cmd/server после открытия метаданных получить/сгенерировать секрет и собрать TokenManager и storage; проверка — e2e: перезапуск процесса даёт тот же секрет (токен, выпущенный до перезапуска, валиден после).

3. Документация

  • 3.1 Обновить .env.example, project.md, README.md: убрать JWT_SECRET, описать автогенерацию секрета в слое метаданных и роль URL_SECRET; проверка — документированный запуск без JWT_SECRET стартует.