- 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
1.6 KiB
1.6 KiB
Tasks
1. Репозиторий секретов и миграции
- 1.1 Добавить таблицу
app_settingsмиграциями: PostgreSQL000010_app_settingsи SQLite000002_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стартует.