Skip to content

fix(api): auto-mint guest token for cart/get; sync publicRoutes; lexicon Web errors#440

Open
Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-408-cart-get-public-routes
Open

fix(api): auto-mint guest token for cart/get; sync publicRoutes; lexicon Web errors#440
Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-408-cart-get-public-routes

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Guest GET /api/v1/cart/get отдавал 401: роут числился в publicRoutes, поэтому TokenMiddleware не минтил анонимный токен, а CartController::get() его требовал. Убрали /api/v1/cart/get из public — auto-mint как у cart/add. Префиксы publicRoutes приведены к реальным паттернам (/api/v1/product/get/ и др.). В Cart/Order ошибки и success remove — через лексикон; в middleware для token-ошибок остаются сырые ключи ms3_err_token_* / ms3_customer_err_token_create (контракт ApiClient.isTokenError).

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

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

Связанные Issues

Closes #408

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

Локальный CI-гейт (без MODX/MySQL), тот же набор что в .github/workflows/ci.yml:

cd core/components/minishop3
composer ci:php   # exit 0
phpcs --standard=PSR12 src/Middleware/TokenMiddleware.php \
  src/Controllers/Api/Web/CartController.php \
  src/Controllers/Api/Web/OrderController.php \
  tests/TokenMiddlewarePublicRoutesTest.php   # exit 0

Red-green: временно вернуть /api/v1/cart/get в publicRoutesTokenMiddlewarePublicRoutesTest exit 1; после отката → exit 0.

Vue не затронут — npm run lint:ci не гоняли.

  • Ручное тестирование
  • Автоматические тесты (composer ci:php, GitHub Actions CI)
  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: ветка fix/issue-408-cart-get-public-routes
  • MODX: n/a (smoke без runtime)
  • PHP: локальный (composer ci:php)

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

n/a

Чеклист

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

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

Вне scope: query-style product/get&id= (см. #333); stub customer/token/refresh (см. #351); полный проход всех Web-контроллеров на литералы.

Review loop: один fix — вернули сырые token-ключи в middleware после замечания про ApiClient; inject session token в $_REQUEST при early-return по customer_id.

@Ibochkarev Ibochkarev added the bug Something isn't working label Jul 23, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 July 23, 2026 16:58
Remove cart/get from publicRoutes so TokenMiddleware mints like cart/add;
sync product/get/ prefixes; keep machine-stable token error keys for ApiClient.
@Ibochkarev
Ibochkarev force-pushed the fix/issue-408-cart-get-public-routes branch from 7f88383 to f71eccc Compare July 24, 2026 02:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

1 participant