Залогинить юзера на фронте, если он залогинен в админке
Всем привет!
Суть задачи описана в заголовке.
И, казалось бы, что может быть проще? В плагине пишем вот это:
Уж не знаю почему, но юзер не то чтобы на фронте не логинится, в добавок — убивается его mgr-сессия, т.е. из админки разлогинивает.
Знаю, что такой вопрос когда-то проскакивал, но найти его не смог. Помогите, пожалуйста. Может кто подобную задачу решал уже?
Суть задачи описана в заголовке.
И, казалось бы, что может быть проще? В плагине пишем вот это:
switch ($modx->event->name) {
сase 'OnHandleRequest':
if ($modx->context->key == 'mgr') { return; }
// если залогинен в 'mgr' и не залогинен в текущем контексте
if ($modx->user->hasSessionContext('mgr') && !$modx->user->hasSessionContext($modx->context->key)) {
// логиним юзера в текущем контексте
$modx->user->addSessionContext($modx->context->key);
}
// die(var_dump($modx->user->hasSessionContext('mgr')).' '.var_dump($modx->user->hasSessionContext($modx->context->key)));
break;
}
Но чот не работат.Уж не знаю почему, но юзер не то чтобы на фронте не логинится, в добавок — убивается его mgr-сессия, т.е. из админки разлогинивает.
Знаю, что такой вопрос когда-то проскакивал, но найти его не смог. Помогите, пожалуйста. Может кто подобную задачу решал уже?
Комментарии: 5
.
Не то событие — bezumkin.ru/sections/tips_and_tricks/2077/
- Создай плагин, повесь на верное событие.
- Разлогинься отовсюду, почисти куки.
- Залогинься на фронтенде, при этом тебе добавится сессия админки (если ты состоишь в группе Administrator).
- Заходи в админку — ты там будешь уже авторизован.
Та же шляпа(
Удаляю у себя сессионную куку и раскомменчиваю die в коде выше.
1. Первая загрузка страницы — false false. Ок.
2. Логинюсь в админке.
3. Обновляю страницу — true true. Ок.
Да только вот в этот момент из админки уже выкинуло и на третье обновление страницы снова получаю false false.
И такая картина что на OnHandleRequest, что на OnWebPageInit.
Чет вся эта modx-магия меня уже задалбывать начинает. Мож и правда у меня руки не из того места..
Сейчас буду все плагины всех компонентов отключать и дебажить.
Удаляю у себя сессионную куку и раскомменчиваю die в коде выше.
1. Первая загрузка страницы — false false. Ок.
2. Логинюсь в админке.
3. Обновляю страницу — true true. Ок.
Да только вот в этот момент из админки уже выкинуло и на третье обновление страницы снова получаю false false.
И такая картина что на OnHandleRequest, что на OnWebPageInit.
Чет вся эта modx-магия меня уже задалбывать начинает. Мож и правда у меня руки не из того места..
Сейчас буду все плагины всех компонентов отключать и дебажить.
Этот код проверен фиг знает сколько раз, не нужно усложнять.
Если что — это авторизация с фронта в админку. Если тебе нужно наоборот, то переделай наоборот — событие OnManagerPageInit.
Если что — это авторизация с фронта в админку. Если тебе нужно наоборот, то переделай наоборот — событие OnManagerPageInit.
Хз почему, но заработало.
Удалил все группы ресурсов, все группы пользователей (проще говоря все политики доступов полностью перенастроил).
В коде плагина ничего не менял, как было — так и осталось. С политиками в конечном счёте тоже ничего не изменилось, просто заново переделал. Но, блин, заработало.
Спасибо большое за помощь!
Удалил все группы ресурсов, все группы пользователей (проще говоря все политики доступов полностью перенастроил).
В коде плагина ничего не менял, как было — так и осталось. С политиками в конечном счёте тоже ничего не изменилось, просто заново переделал. Но, блин, заработало.
Спасибо большое за помощь!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.