Доработать авторизацию пользователя
Завершена
Проект: modx-next-manager
Планируемый запуск: | Дата начала: | 10.04.2021 | Планируемое завершение: | Дата завершения: | 10.04.2021 |
Описание задачи
Проект | Задача | Статус | Дата постановки | Начало | Конец | Кто создал |
---|---|---|---|---|---|---|
modx-next-manager | Доработать авторизацию пользователя | Завершена | 10.04.2021 06:05:33 | 10.04.2021 06:06:32 | 10.04.2021 06:59:29 |
Несколько подводных камней:
1. MODX не имеет открытого коннектора на авторизацию. Во всяком случае я его не нашел по той причине, что коннектор нельзя выполнить, если нет актуального токена modAuth и кукиса авторизованного пользователя, и если доступа нет, то он отбивает запрос с ошибкой 401, и до процессора авторизации запрос даже не доходит.
Пришлось слать запрос авторизации на саму страницу админки, чтобы получить кукис, и после этого выполнять сразу же еще один запрос на нее же, чтобы получить авторизованную страницу админки и найти в ней токен. То еще извращение...
2. С самим запросом и кукисами тоже пляски получились. На один запрос в базе данных создавалось сразу две записи сессии, при этом в ответе был кукис неавторизованной сессии. Выяснилось, что MODX в любом случае при авторизации шлет в ответе данные редиректа. fetch по-умолчанию следует этим редиректам, и ответ содержит самые последние данные. При этом он не отправляет полученные кукисы. Пришлось запретить ему это.
При этом, теоретически, у него должна быть возможность указать следовать редиректам и слать сразу же полученные кукисы. Тогда вообще было бы круто, можно было бы обойтись без второго запроса, сразу получив в ответе и код авторизованной страницы, и кукис.
Поправил авторизацию для MODX-2.6.5.