Skip to content

fix(customer): restore storefront login and session auth (#285)#321

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/285-customer-auth
Open

fix(customer): restore storefront login and session auth (#285)#321
Ibochkarev wants to merge 1 commit into
betafrom
fix/285-customer-auth

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

Исправлена авторизация покупателя на витрине и в личном кабинете (issue #285): после входа сессия не сохранялась, редирект возвращал на login, повторный вход падал.

Backend:

  • AuthManager::establishCustomerSession() — единая привязка customer ↔ token ↔ cookie ↔ session ↔ draft order для login/register
  • TokenService::restoreSessionFromCookie() — восстановление сессии из httpOnly cookie без создания анонимного токена в checkAuth()
  • PasswordAuthProvider::normalizeEmail() — единая нормализация email
  • SessionHelper::ensureActive() — общий bootstrap PHP-сессии
  • Manager API: пароль через PasswordAuthProvider::hashPassword() с trim, email нормализуется

Frontend:

  • ApiClient.getPayload() — чтение payload из data (Web API) с fallback на legacy object
  • AuthUI использует getPayload для redirect после login/register

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

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

Связанные Issues

Closes #285

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

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

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

  • MiniShop3: текущая ветка
  • MODX: 3.x
  • PHP: 8.2+

Проверки:

  • php -l на всех изменённых PHP-файлах
  • Сценарии: login → redirect в ЛК → reload страницы профиля → logout → повторный login; регистрация с auto-login; пароль из менеджера; email с разным регистром

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

До После

Чеклист

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

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

При регистрации с новым токеном теперь также вызывается bindDraftToCustomer() (раньше только при reuse гостевого токена).

Unify token/session binding after login and registration, restore SSR auth from cookie without minting guest tokens, and align email/password handling between manager and storefront.
@Ibochkarev Ibochkarev requested a review from biz87 June 15, 2026 17:27
@biz87

biz87 commented Jun 15, 2026

Copy link
Copy Markdown
Member

Вань, серьезные изменения. А ты это проверял руками? Или как всегда только теоритическая автоматизированная проверка?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Не работает авторизация покупателя

2 participants