tradein/auth: переключить AUTH_MODE=db_only после обкатки cutover #2572

Open
opened 2026-07-30 21:18:08 +00:00 by lekss361 · 0 comments
Owner

Завершающий шаг эпика #2549. Делать после мержа #2569 (снятие basic_auth с /trade-in) и нескольких дней нормальной работы.

Контекст

AUTH_MODE в tradein-backend не выставлен → действует default "dual" (app/core/config.py), то есть rbac.py продолжает принимать legacy-путь X-Authenticated-User + X-Internal-Auth-Secret.

После cutover Caddy удаляет X-Authenticated-User на всех trade-in-маршрутах (header_up -X-Authenticated-User), поэтому снаружи legacy-путь недостижим — он остаётся живым только изнутри сети gendesign_shared при наличии 64-символьного секрета (проверено на проде: секрет проставлен и в caddy, и в backend).

То есть код есть, а пользы от него для trade-in уже нет — это лишняя поверхность.

Что сделать

  1. Выставить AUTH_MODE=db_only в .env.runtime для tradein-backend (ручной шаг на VPS — security-hook не даёт Claude трогать .env*).
  2. Перезапустить контейнер, проверить: вход через форму работает, /me с сессией отдаёт DB-роль, запрос с X-Authenticated-User + секретом но без cookie → 401.
  3. После подтверждения — можно удалить legacy-ветку из rbac.py отдельным PR (или оставить под флагом, если Site Finder ещё зависит от общего кода — сверить).

Важно

auth/roles.yaml и caddy/users.caddy.snippet не удалять — Site Finder (/, /api/*) остаётся под basic_auth и продолжает ими пользоваться.

Проверить перед переключением, что все, кому нужен доступ к Мере, реально заходили через форму (по user_events.login_success) — иначе кто-то останется за дверью.

Завершающий шаг эпика #2549. Делать **после** мержа #2569 (снятие basic_auth с `/trade-in`) и нескольких дней нормальной работы. ## Контекст `AUTH_MODE` в `tradein-backend` не выставлен → действует default `"dual"` (`app/core/config.py`), то есть `rbac.py` продолжает принимать legacy-путь `X-Authenticated-User` + `X-Internal-Auth-Secret`. После cutover Caddy **удаляет** `X-Authenticated-User` на всех trade-in-маршрутах (`header_up -X-Authenticated-User`), поэтому снаружи legacy-путь недостижим — он остаётся живым только изнутри сети `gendesign_shared` при наличии 64-символьного секрета (проверено на проде: секрет проставлен и в caddy, и в backend). То есть код есть, а пользы от него для trade-in уже нет — это лишняя поверхность. ## Что сделать 1. Выставить `AUTH_MODE=db_only` в `.env.runtime` для `tradein-backend` (ручной шаг на VPS — security-hook не даёт Claude трогать `.env*`). 2. Перезапустить контейнер, проверить: вход через форму работает, `/me` с сессией отдаёт DB-роль, запрос с `X-Authenticated-User` + секретом но без cookie → 401. 3. После подтверждения — можно удалить legacy-ветку из `rbac.py` отдельным PR (или оставить под флагом, если Site Finder ещё зависит от общего кода — сверить). ## Важно `auth/roles.yaml` и `caddy/users.caddy.snippet` **не удалять** — Site Finder (`/`, `/api/*`) остаётся под basic_auth и продолжает ими пользоваться. Проверить перед переключением, что все, кому нужен доступ к Мере, реально заходили через форму (по `user_events.login_success`) — иначе кто-то останется за дверью.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2572
No description provided.