Skip to content

fix(api): HTTP 401/429 для auth и rate-limit в Web API#434

Open
Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-414-web-api-auth-status
Open

fix(api): HTTP 401/429 для auth и rate-limit в Web API#434
Ibochkarev wants to merge 2 commits into
betafrom
fix/issue-414-web-api-auth-status

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Web API больше не отдаёт HTTP 400 на unauthenticated / invalid login / throttle. Клиенты могут отличать эти случаи для retry и UX.

  • Unauthenticated profile/email → 401 (Response::error, как в AddressController)
  • Invalid credentials (login) → 401
  • Login/register rate-limit и email resend cooldown → 429
  • Login/Register closures в web.phpResponse::fromProcessor() (читает code из failure object)
  • Allowlist допустимых HTTP-кодов в Response::statusFromProcessorObject

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

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

Связанные Issues

Closes #414

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

cd core/components/minishop3
php -l src/Router/Response.php
php tests/ResponseFromProcessorTest.php   # exit 0
composer ci:php                           # exit 0

Gate E (эта сессия):

  • php -l touched PHP — OK

  • php tests/ResponseFromProcessorTest.php — OK

  • composer ci:php / bash scripts/ci-php.sh — OK (exit 0)

  • Vue не затронут — lint/build n/a

  • Ручное тестирование

  • Автоматические тесты (composer ci:php, npm run lint:ci / GitHub Actions CI)

  • Тестирование на разных версиях PHP/MODX

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

  • MiniShop3: ветка fix/issue-414-web-api-auth-status
  • MODX: n/a (smoke без MODX)
  • PHP: 8.2+

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

n/a

Чеклист

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

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

Контракт для клиентов (ожидаемо по #414): ошибки, которые раньше всегда были HTTP 400, теперь 401/429. Validation / missing fields остаются 400.

Соседние правки в том же PR: Register createToken failure → 500 (симметрия с Login); email verification cooldown/send_failed → 429/500.

Review: code-reviewer, thermo-nuclear, security-review, silent-failure-hunter; 1 fix-loop (маппинг перенесён в Response, убран отдельный helper).

@Ibochkarev Ibochkarev added priority: medium Средний приоритет bug Something isn't working labels Jul 23, 2026
@Ibochkarev
Ibochkarev requested a review from biz87 July 23, 2026 15:37
@Ibochkarev
Ibochkarev force-pushed the fix/issue-414-web-api-auth-status branch from 826fda7 to b936cdd Compare July 23, 2026 16:09
Clients could not distinguish unauthenticated, bad credentials, and
throttle responses because routes always mapped processor failures to
HTTP 400. Pass HttpStatus via processor failure objects and Response
helpers so profile/email unauth → 401, invalid login → 401, rate limits → 429.
PHPCS requires a space after the function keyword in closures;
also clear blank lines before closing braces and wrap a long line.
@Ibochkarev
Ibochkarev force-pushed the fix/issue-414-web-api-auth-status branch from b936cdd to 00b6474 Compare July 24, 2026 02:16
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: medium Средний приоритет

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Web API: ошибки auth/rate-limit всегда HTTP 400 вместо 401/429

1 participant