Skip to content

fix(customer): reject expired API tokens instead of silent renew#396

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/371-expired-api-token-no-renew
Open

fix(customer): reject expired API tokens instead of silent renew#396
Ibochkarev wants to merge 1 commit into
betafrom
fix/371-expired-api-token-no-renew

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Истёкший TYPE_API токен больше не продлевается с тем же string. TokenService::resolveApiToken() удаляет запись (как AuthManager::validateToken), TokenMiddleware на protected routes отвечает 401 + ms3_err_token_expired, чистит cookie и session (customer_id тоже).

Без этого утечка Bearer/cookie давала бессрочный доступ. /token/refresh (#334) — отдельный баг; здесь только reject, не rotation.

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

  • Исправление бага (non-breaking change)

Связанные Issues

Closes #371

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

cd core/components/minishop3
php -l src/Middleware/TokenMiddleware.php
php -l src/Services/TokenService.php
php -l src/Utils/ApiTokenExpiry.php
php tests/ApiTokenExpiryPolicyTest.php
# остальные smoke:
for f in tests/*Test.php; do php "$f"; done
  • Ручное тестирование
  • Автоматические тесты (ApiTokenExpiryPolicyTest + existing smoke)
  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: ветка fix/371-expired-api-token-no-renew
  • MODX: не требуется для smoke
  • PHP: 8.4 локально

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

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

Чеклист

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

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

Align TokenMiddleware and TokenService with AuthManager: remove expired
TYPE_API tokens and return 401 so clients must refresh or log in.
@Ibochkarev Ibochkarev added priority: high Важно исправить в ближайшее время bug Something isn't working labels Jul 16, 2026
@Ibochkarev Ibochkarev requested a review from biz87 July 16, 2026 02:57
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] TokenMiddleware: expired API-token бесконечно продлевается без ротации

1 participant