- 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
2.2 KiB
2.2 KiB
Proposal
Why
JWT_SECRET сейчас обязателен в окружении: его нужно задавать вручную и одинаково на
всех инстансах. Хранение секрета в слое метаданных с автогенерацией убирает обязательный
секрет из env и даёт стабильное значение на инсталляцию.
What Changes
- Убрать обязательный
JWT_SECRETиз конфига и окружения. - Добавить таблицу
app_settings(key/value) в оба бэкенда метаданных (PostgreSQL и SQLite) и репозиторий чтения/создания секрета. - При старте после открытия метаданных читать секрет или генерировать его
(
crypto/rand) и сохранять; использовать дляTokenManagerи как fallback при подписи URL объектов. URL_SECRETостаётся необязательным env-оверрайдом.- Обновить
.env.example,project.md,README.md.
Capabilities
New Capabilities
app-secrets: хранение секретов приложения (JWT) в слое метаданных с автогенерацией при первом использовании.
Modified Capabilities
Impact
backend/internal/config(убратьJWTSecretи его обязательность).backend/internal/app,backend/cmd/server(порядок старта: метаданные → секрет → storage/app).backend/internal/storage(fallback-секрет для подписи URL).- Новая settings-репозиция (
internal/settings), миграции PostgreSQL и SQLite. - Тесты (контрактные, e2e),
.env.example,project.md,README.md. - Не затрагивает формат данных клиента.