Залогинить юзера на фронте, если он залогинен в админке

Всем привет!
Суть задачи описана в заголовке.
И, казалось бы, что может быть проще? В плагине пишем вот это:
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-сессия, т.е. из админки разлогинивает.

Знаю, что такой вопрос когда-то проскакивал, но найти его не смог. Помогите, пожалуйста. Может кто подобную задачу решал уже?
Алексей Карташов
20 ноября 2014, 09:32
modx.pro
1
2 008
0

Комментарии: 5

Алексей Карташов
20 ноября 2014, 12:33
0
.
    Василий Наумкин
    20 ноября 2014, 12:35
    1
    0
    Не то событие — bezumkin.ru/sections/tips_and_tricks/2077/
      Алексей Карташов
      20 ноября 2014, 12:49
      0
      Та же шляпа(
      Удаляю у себя сессионную куку и раскомменчиваю die в коде выше.
      1. Первая загрузка страницы — false false. Ок.
      2. Логинюсь в админке.
      3. Обновляю страницу — true true. Ок.
      Да только вот в этот момент из админки уже выкинуло и на третье обновление страницы снова получаю false false.

      И такая картина что на OnHandleRequest, что на OnWebPageInit.

      Чет вся эта modx-магия меня уже задалбывать начинает. Мож и правда у меня руки не из того места..
      Сейчас буду все плагины всех компонентов отключать и дебажить.
        Василий Наумкин
        20 ноября 2014, 12:54
        0
        Этот код проверен фиг знает сколько раз, не нужно усложнять.
        1. Создай плагин, повесь на верное событие.
        2. Разлогинься отовсюду, почисти куки.
        3. Залогинься на фронтенде, при этом тебе добавится сессия админки (если ты состоишь в группе Administrator).
        4. Заходи в админку — ты там будешь уже авторизован.
        При выходе с админки авторизация на сайте остаётся и наоборот.

        Если что — это авторизация с фронта в админку. Если тебе нужно наоборот, то переделай наоборот — событие OnManagerPageInit.
          Алексей Карташов
          20 ноября 2014, 14:01
          0
          Хз почему, но заработало.
          Удалил все группы ресурсов, все группы пользователей (проще говоря все политики доступов полностью перенастроил).

          В коде плагина ничего не менял, как было — так и осталось. С политиками в конечном счёте тоже ничего не изменилось, просто заново переделал. Но, блин, заработало.

          Спасибо большое за помощь!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5