Skip to content

fix(api): stop loading storefront routes via manager connector#401

Open
Ibochkarev wants to merge 4 commits into
betafrom
fix/issue-384-index-manager-routes-only
Open

fix(api): stop loading storefront routes via manager connector#401
Ibochkarev wants to merge 4 commits into
betafrom
fix/issue-384-index-manager-routes-only

Conversation

@Ibochkarev

@Ibochkarev Ibochkarev commented Jul 16, 2026

Copy link
Copy Markdown
Member

Описание

Processors\Api\Index (Vue Manager через connector.php) подключал web.php и ms3.routes.d/web/. Storefront /api/v1/* шёл через TokenMiddleware без mgr Auth / PermissionMiddleware — шире, чем у Processors\Api\Router.

Index и Router грузят только manager-роуты через Router::loadManagerRoutes(). Запросы с route=/api/v1… отклоняются до dispatch (Router::isStorefrontRoute()). Storefront — api.php + Router::loadWebRoutes().

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #384

Как это было протестировано?

  • Ручное тестирование
  • Автоматические тесты (PHPStan, ESLint)
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: ветка fix/issue-384-index-manager-routes-only
  • MODX: n/a (unit)
  • PHP: локальный CLI

Команды (exit 0):

  • php -l на затронутых PHP
  • php tests/RouterRoutePlansTest.php — behavioral: managerRoutePlan / webRoutePlan disjoint, storefront detect, wiring
  • остальные tests/*.php

Ручной сценарий connector.php?route=/api/v1/cart/get на стенде не гоняли.

Скриншоты (если применимо)

До После
n/a n/a

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах
  • Изменения не ломают существующую функциональность
  • Лексиконы добавлены на двух языках (ru/en)
  • PHPStan проходит без новых ошибок
  • ESLint проходит без ошибок (для JS/Vue изменений)
  • Обновлён CHANGELOG.md (для значимых изменений)

Дополнительные заметки

  • Политика путей живёт в Router::managerRoutePlan() / webRoutePlan() — один source of truth.
  • ManagerConnectorRouteLoader удалён; forbiddenPathSuffixes не нужен (positive allowlist в plan).
  • Если кто-то бил в connector с /api/v1/*, ответ 404 с текстом про api.php.
  • Follow-up из thermo: закрыт (load* на Router + behavioral test + api.php на loadWebRoutes).

Index and Router now share manager-only route loading so /api/v1 is
served only through api.php, not connector.php with TokenMiddleware.
@Ibochkarev Ibochkarev added bug Something isn't working priority: high Важно исправить в ближайшее время labels Jul 16, 2026
Collapse ManagerConnectorRouteLoader into Router::loadManagerRoutes() and
loadWebRoutes() with testable route plans, removing path-policy drift.
Align storefront 404 and other early failures with http_response_code,
not only the JSON code field.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working priority: high Важно исправить в ближайшее время

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Api\Index грузит web-роуты через connector без mgr Auth на /api/v1

1 participant