Nhiệm vụ: Интегрировать MODX frontend-сессии в auth-контекст haih-agent
Интегрировать MODX frontend-сессии в auth-контекст haih-agent
Научить новый 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.