Перейти к основному содержимому

Routes и middleware

Где объявлены routes

Routes распределены по нескольким местам.

ГдеЧто объявляет
routes/web.phpPreview/debug/static web routes
routes/api.phpAPI hooks и export endpoints
routes/console.phpScheduler
ModernCatalogServiceProvider/catalog/{path?} или другой MODERN_CATALOG_URL
ModernRoadmapProvider/program/...
ProxyPageServiceProviderRoutes из таблицы landing_proxy_pages
BannerServiceProvider/banner, /v2/banner, close routes
AppPanelProviderFilament admin routes

Если route не найден в routes/web.php, это нормально. Проверяйте providers и БД.

routes/web.php

Файл содержит в основном preview/debug routes.

Примеры:

  • /preview/cache-page;
  • /preview/product/list;
  • /preview/product/page;
  • /preview/product/card;
  • /preview/sale;
  • /preview/roadmap-prototype;
  • /blank;
  • /gk;
  • /iframe;
  • /debug/loginus/callback.

/debug/loginus/callback вручную обменивает OAuth code на token и userinfo через https://lk.systematika.org/api/v2/oauth/token. В route есть dump/dd, поэтому это debug endpoint, а не production API.

routes/api.php

API реализовано closure-ами.

WP hook group

Middleware: CheckWpHookKey.

Header:

X-WP-HOOK-KEY: <secret>

Endpoints:

EndpointМетодНазначение
/api/page-cache/wp-hookPOSTПоставить задачу прогрева WP/Laravel page cache
/api/debug-dumpлюбой/route-definedЗаписать request/app dump в storage/logs

API key group

Middleware: CheckApiKey.

Header:

X-API-KEY: <secret>

Endpoint:

EndpointМетодНазначение
/api/export-group-discipline-gk-dtosGETВернуть JS с window.COURSES_CATALOG

Middleware

CheckApiKey

Сравнивает header X-API-KEY с config('systematika.api_key').

Если не совпало, возвращает unauthorized response.

CheckWpHookKey

Сравнивает header X-WP-HOOK-KEY с config('systematika.wp_hook_key').

Redirect

Глобальный middleware для redirect rules из БД.

Кэширует карту активных redirects. Сбрасывается при сохранении/удалении LandingRedirect.

LoginByGkUHash

Глобальный middleware для auto-login через gk_uhash.

Поток:

  1. Если пользователь уже authenticated и gk_uhash нет, пропускает запрос.
  2. Если gk_uhash есть, ищет GKUser.
  3. Если найден member email, ищет или создаёт локального User.
  4. Логинит пользователя.

Это мощная auth-граница. Изменять осторожно.

Debug endpoints и риски

В проекте есть debug endpoints, которые выглядят production-visible:

  • /api/debug-dump пишет headers/session/config sample в файл;
  • /debug/loginus/callback содержит dump/dd.

Перед production deploy нужно явно решить, должны ли эти endpoints существовать и чем они защищены.