Авторизация в новом контексте

Всем привет, возник вопрос:
Когда пользователь авторизован в админке, то это без проблем можно проверить в контексте web
{if $_modx->hasSessionContext('mgr')}OK{/if}
Но возникает проблема в новом созданном контексте, там этот метод не работает.
Нашёл в сообществе пост, где Василий поделился плагином, который может авторизовать в любом контексте
<?php
if ($modx->event->name == 'OnWebPageInit') {
   if ($modx->user->hasSessionContext('mgr') && !$modx->user->hasSessionContext($modx->context->key)) {
	$modx->user->addSessionContext($modx->context->key);
   }
}

Но проблема в том, что первая часть условия не срабатывает в новом контексте и авторизация не происходит.
Подскажите как можно из любого контекста проверить авторизован ли пользователь в админке?
Семён Кудрявцев
31 октября 2017, 07:38
modx.pro
2 768
0

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

Сергей Шлоков
31 октября 2017, 11:39
0
А контексты небось на поддоменах.
    Семён Кудрявцев
    31 октября 2017, 12:01
    0
    Всё верно, Сергей, а это разве проблема для MODX?
    Я уже делал сайты с поддоменами и контекстами, просто не приходилось в них проверять авторизацию в админке или в самом контексте, а сегодня попробовал и что-то не могу понять почему так происходит?
      Сергей Шлоков
      31 октября 2017, 12:25
      0
      MODX здесь не причем. Изучаем вопрос.
        Семён Кудрявцев
        31 октября 2017, 13:56
        0
        Сергей, спасибо, суть проблемы ясна.
          Семён Кудрявцев
          31 октября 2017, 14:37
          0
          Попробовал решения предложенные в сообществе, но увы, что-то видимо ещё есть.
          Выставил настройку сессионных куки — session_cookie_domain, с точкой в начале, чтобы кука стала общей на все поддомены, всё вычистил, завершил все сеансы, снова авторизовываюсь в админке, и получаю авторизацию только в mrg и web контекстах
          Распечатал сессию и она показывает, что токены выданы только для двух контекстов
          [modx.user.contextTokens] => Array
                  (
                      [mgr] => 1
                      [web] => 1
                  )

          Что ещё может мешать контекстам получить эти токкены?
          Семён Кудрявцев
          31 октября 2017, 14:46
          0
          Попробовал решения предложенные в сообществе, но увы, что-то видимо ещё есть.
          Выставил настройку сессионных куки — session_cookie_domain, с точкой в начале, чтобы кука стала общей на все поддомены, всё вычистил, завершил все сеансы, снова авторизовываюсь в админке, и получаю авторизацию только в mrg и web контекстах
          Распечатал сессию и она показывает, что токены выданы только для двух контекстов
          [modx.user.contextTokens] => Array
                  (
                      [mgr] => 1
                      [web] => 1
                  )

          Что ещё может мешать контекстам получить эти токкены?
            Семён Кудрявцев
            31 октября 2017, 15:42
            0
            Вопрос снят, я пробовал делать на поддоменах 4 уровня, видимо это не разрешено.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7