Задача: Интегрировать MODX frontend-сессии в auth-контекст haih-agent

Интегрировать MODX frontend-сессии в auth-контекст haih-agent

03.09.2026Kilfor.ru

Научить новый frontend Kilfor определять текущего пользователя напрямую по существующей MODX-сессии без зависимости от legacy HTTP endpoint.

Контекст

Сессии пользователей Kilfor сейчас хранятся и обслуживаются MODX. Новый frontend на haih-agent уже реализует часть прикладной логики самостоятельно, поэтому ему периодически нужна детальная информация о текущем авторизованном пользователе.

В MODX есть внутренний PHP API для работы с текущим пользователем внутри MODX runtime, но штатного внешнего HTTP endpoint уровня current user для frontend-контекста из коробки нет. В modSociety существует собственный endpoint для получения пользователя, однако новый frontend не должен зависеть от этого legacy-компонента.

Цель

Реализовать в haih-agent инфраструктурный слой, который умеет по существующей MODX session cookie определить пользователя, авторизованного в заданном frontend-контексте (web или другом), и предоставить нормализованные данные пользователя прикладному коду нового frontend.

Что исследовать и реализовать

  • Разобраться с фактическим форматом хранения frontend-сессий в используемой версии MODX и на Kilfor.
  • Определить, как из session id и данных modx_session получить пользователя для конкретного context key.
  • Корректно разбирать PHP session serialization, не привязываясь к regex-хаку.
  • Получать необходимые данные пользователя из modUser, modUserProfile и проектных связей.
  • Сделать MODX-specific реализацию отдельным адаптером/провайдером, чтобы прикладной код работал с абстракцией currentUser, а не знал структуру MODX session.
  • Не зашивать web в низкоуровневый parser: context key должен задаваться конфигурацией или вызывающим auth-слоем.
  • Учесть истечение/инвалидность сессии и отсутствие авторизации в запрашиваемом контексте.
  • Не переносить целиком MODX ACL/security runtime без отдельной необходимости; на первом этапе задача — достоверно определить пользователя и его данные.
  • Предусмотреть возможность другого session storage/handler в будущем, не связывая весь auth-код напрямую с SQL к modx_session.
  • Покрыть parser и определение пользователя fixture/integration-тестами на реальных примерах MODX frontend-сессий.

Ожидаемый результат

В GraphQL/request context haih-agent доступен нормализованный текущий пользователь для указанного frontend-контекста, полученный напрямую из существующей MODX-сессии. Для этого не требуется отдельный запрос к legacy endpoint modSociety или bootstrap MODX на каждый запрос нового frontend.