Залогинить юзера на фронте, если он залогинен в админке
        Всем привет!
Суть задачи описана в заголовке.
И, казалось бы, что может быть проще? В плагине пишем вот это:
Уж не знаю почему, но юзер не то чтобы на фронте не логинится, в добавок — убивается его 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.
                Хз почему, но заработало.
Удалил все группы ресурсов, все группы пользователей (проще говоря все политики доступов полностью перенастроил).
В коде плагина ничего не менял, как было — так и осталось. С политиками в конечном счёте тоже ничего не изменилось, просто заново переделал. Но, блин, заработало.
Спасибо большое за помощь!
                    Удалил все группы ресурсов, все группы пользователей (проще говоря все политики доступов полностью перенастроил).
В коде плагина ничего не менял, как было — так и осталось. С политиками в конечном счёте тоже ничего не изменилось, просто заново переделал. Но, блин, заработало.
Спасибо большое за помощь!
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.