К содержанию

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

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

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

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

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

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

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

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

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