chore(caddy): exempt /trade-in/ui-preview/* from basic_auth (#801) #808

Closed
lekss361 wants to merge 0 commits from chore/caddy-ui-preview-public into main
Owner

Summary

Делает /trade-in/ui-preview/* публичным (без Caddy basic_auth) — это CI-surface для a11y/lighthouse аудита «денежного экрана» (#801).

Проблема: маршрут /ui-preview/estimate (PR #803, рендерит mock-фикстуру результата без бэкенда) задуман как reachable-без-auth для headless axe/lighthouse, но Caddy basic_auth отдавал 401 на всех путях → инструменты не достают страницу. Проверено: GET https://gendsgn.ru/trade-in/ui-preview/estimate → 401.

Фикс: handle /trade-in/ui-preview/* добавлен до import caddy/users.caddy.snippet в route {} (Caddy матчит сверху вниз, handle short-circuit'ит) → проксирует на tradein-frontend:3000 без auth. Без strip — Next.js basePath=/trade-in ждёт префикс (как существующий @tradein).

Безопасность

Страница рендерит статичную mock-фикстуру (собственный QueryClient с моками, без реального API/бэкенда, без клиентских данных) → публичный доступ безопасен. Скоуп узкий — только /trade-in/ui-preview/*, остальное под auth без изменений.

Test plan

  • После deploy (Caddyfile → deploy.yml авто caddy reload): curl -s -o /dev/null -w "%{http_code}" https://gendsgn.ru/trade-in/ui-preview/estimate200 (не 401).
  • Остальное по-прежнему 401 без креды: curl .../trade-in/ → 401, curl .../trade-in/api/v1/trade-in/... → 401.
  • Затем дизайн-луп: axe + lighthouse по /trade-in/ui-preview/estimate → baseline a11y/LCP/CLS (#801 DoD #2/#3).

Refs #801

## Summary Делает `/trade-in/ui-preview/*` публичным (без Caddy `basic_auth`) — это CI-surface для a11y/lighthouse аудита «денежного экрана» (#801). **Проблема:** маршрут `/ui-preview/estimate` (PR #803, рендерит mock-фикстуру результата без бэкенда) задуман как reachable-без-auth для headless axe/lighthouse, но Caddy `basic_auth` отдавал **401** на всех путях → инструменты не достают страницу. Проверено: `GET https://gendsgn.ru/trade-in/ui-preview/estimate` → 401. **Фикс:** `handle /trade-in/ui-preview/*` добавлен **до** `import caddy/users.caddy.snippet` в `route {}` (Caddy матчит сверху вниз, `handle` short-circuit'ит) → проксирует на `tradein-frontend:3000` без auth. Без `strip` — Next.js `basePath=/trade-in` ждёт префикс (как существующий `@tradein`). ## Безопасность Страница рендерит **статичную mock-фикстуру** (собственный QueryClient с моками, без реального API/бэкенда, без клиентских данных) → публичный доступ безопасен. Скоуп узкий — только `/trade-in/ui-preview/*`, остальное под auth без изменений. ## Test plan - [ ] После deploy (Caddyfile → `deploy.yml` авто `caddy reload`): `curl -s -o /dev/null -w "%{http_code}" https://gendsgn.ru/trade-in/ui-preview/estimate` → **200** (не 401). - [ ] Остальное по-прежнему 401 без креды: `curl .../trade-in/` → 401, `curl .../trade-in/api/v1/trade-in/...` → 401. - [ ] Затем дизайн-луп: axe + lighthouse по `/trade-in/ui-preview/estimate` → baseline a11y/LCP/CLS (#801 DoD #2/#3). Refs #801
Author
Owner

Закрываю — ветка оказалась пуста (затёрта git-операциями другого окна в общем репо; мой коммит уехал на чужую ветку). Пересоздано чисто через API: #810.

Закрываю — ветка оказалась пуста (затёрта git-операциями другого окна в общем репо; мой коммит уехал на чужую ветку). Пересоздано чисто через API: #810.
lekss361 closed this pull request 2026-05-30 18:21:50 +00:00
All checks were successful
Deploy Trade-In / test (push) Successful in 26s
Deploy Trade-In / build-backend (push) Successful in 42s
Deploy Trade-In / changes (push) Successful in 5s
Deploy Trade-In / build-frontend (push) Has been skipped
Deploy Trade-In / deploy (push) Successful in 34s

Pull request closed

Sign in to join this conversation.
No reviewers
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#808
No description provided.