Доработать авторизацию пользователя

Завершена
Планируемый запуск: Дата начала: 10.04.2021Планируемое завершение: Дата завершения: 10.04.2021

Описание задачи

{"blocks": [{"key": "cgp0p", "data": {}, "text": "Решение: https://github.com/MODX-Club/modx-next-manager/commit/c1934f7f9e3982eab21c173b7bdb1e426528737c", "type": "unstyled", "depth": 0, "entityRanges": [{"key": 0, "length": 94, "offset": 9}], "inlineStyleRanges": []}, {"key": "dbfe9", "data": {}, "text": "", "type": "unstyled", "depth": 0, "entityRanges": [], "inlineStyleRanges": []}], "entityMap": {"0": {"data": {"url": "https://github.com/MODX-Club/modx-next-manager/commit/c1934f7f9e3982eab21c173b7bdb1e426528737c"}, "type": "LINK", "mutability": "MUTABLE"}}}

Несколько подводных камней: 1. MODX не имеет открытого коннектора на авторизацию. Во всяком случае я его не нашел по той причине, что коннектор нельзя выполнить, если нет актуального токена modAuth и кукиса авторизованного пользователя, и если доступа нет, то он отбивает запрос с ошибкой 401, и до процессора авторизации запрос даже не доходит. Пришлось слать запрос авторизации на саму страницу админки, чтобы получить кукис, и после этого выполнять сразу же еще один запрос на нее же, чтобы получить авторизованную страницу админки и найти в ней токен. То еще извращение... 2. С самим запросом и кукисами тоже пляски получились. На один запрос в базе данных создавалось сразу две записи сессии, при этом в ответе был кукис неавторизованной сессии. Выяснилось, что MODX в любом случае при авторизации шлет в ответе данные редиректа. fetch по-умолчанию следует этим редиректам, и ответ содержит самые последние данные. При этом он не отправляет полученные кукисы. Пришлось запретить ему это. При этом, теоретически, у него должна быть возможность указать следовать редиректам и слать сразу же полученные кукисы. Тогда вообще было бы круто, можно было бы обойтись без второго запроса, сразу получив в ответе и код авторизованной страницы, и кукис.

Еще информация здесь.

Поправил авторизацию для MODX-2.6.5.