К содержанию

Авторизация админа во фронте

Добрый день! Когда то встречал это решение но сейчас не могу. Как сделать так чтобы администратор автоматически авторизовался на сайте когда авторизован в админке. Для авторизации использую office.
Заранее спасибо
wgame
wgame
23 января 2015, 11:21
modx.pro
3 733
Реклама

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

Алексей Карташов
Алексей Карташов Проверенный
23 января 2015, 19:14
switch ($modx->event->name) {
  case 'OnWebPageInit':
    if ($modx->context->key == 'mgr') {
      return;
    }

    /** авторизовывает админа в админке (если он не авторизован на фронте, и является администратором) */
    if (!$modx->user->hasSessionContext('mgr') && $modx->user->hasSessionContext($modx->context->key) && ($modx->user->get('sudo') || $modx->user->isMember('Administrator'))) {
      $modx->user->addSessionContext('mgr');
    }

    /** авторизовывает на фронте любого юзера, который авторизован в админке */
    if ($modx->user->hasSessionContext('mgr') && !$modx->user->hasSessionContext($modx->context->key)) {
      $modx->user->addSessionContext($modx->context->key);
    }

    break;
}
    Алексей Карташов
    Алексей Карташов Проверенный
    23 января 2015, 21:37
    *(если он авторизован на фронте, и является администратором)
      wgame
      wgame Старожил
      31 января 2015, 22:15
      Сделал как все написали, обновил кеш, и теперь вообще не могу войти в админку ((
        Алексей Карташов
        Алексей Карташов Проверенный
        31 января 2015, 22:32
        Чтобы попасть в админку, зайдите через phpmyadmin а свою базу, в таблице modx_site_plugins (вроде так называется) найдите это плагин, запомните его id, потом в таблице modx_pluginevents (тоже как-то так называется) удалите записи, у которых поле plugin_id равен id вашего плагина. И очистите кеш, удалив папку /core/cache.

        А лучше лождитесь спать, отдыхайте, а завтра я вам точно скажу названия таблиц и столбцов. Где-то после обеда.

        И завтра же подумаем как нормпльно завести это плагин на вашем сайте)
          wgame
          wgame Старожил
          31 января 2015, 22:34
          да спасибо уже вошел ))
            Алексей Карташов
            Алексей Карташов Проверенный
            31 января 2015, 22:35
            Ну тгда вообще супер)
              wgame
              wgame Старожил
              31 января 2015, 22:35
              ))
      wgame
      wgame Старожил
      23 января 2015, 21:38
      спасибо вам большое, подскажите еще один момент это как я понял плагин нужно создать или где то в коде прописать
        Алексей Карташов
        Алексей Карташов Проверенный
        23 января 2015, 22:21
        Создаёте плагин, этот код вставляете в него, а затем во вкладке «Системные события» в большом и длинном списке ищете «OnWebPageInit», отмечаете чекбокс напротив него и сохраняете. Вуаля)
          wgame
          wgame Старожил
          23 января 2015, 22:32
          спасибо вам большое за развернутый ответ
            Алексей Карташов
            Алексей Карташов Проверенный
            23 января 2015, 22:39
            Не за что)

            Только имейте в виду — разлогиниться при таком подходе, практически нереально. Только если неделю на сайт не заходить, пока авторизационные куки не умрут.

            Если автологин в админку не нужен, то первый блок if {} лучше закомментировать (тот, который «авторизовывает админа в админке»):
            //    if (!$modx->user->hasSessionContext('mgr') && $modx->user->hasSessionContext($modx->context->key) && ($modx->user->get('sudo') || $modx->user->isMember('Administrator'))) {
            //      $modx->user->addSessionContext('mgr');
            //    }
              wgame
              wgame Старожил
              23 января 2015, 22:47
              ясно спасибо
                Василий Столейков
                Василий Столейков Проверенный
                26 января 2015, 10:27
                разлогиниться при таком подходе, практически нереально
                Я бы так не сказал. Просто в том же Office указываешь &addContexts — все контексты, в том числе и админки (например &addContexts=`web,mgr`)
                  Алексей Карташов
                  Алексей Карташов Проверенный
                  26 января 2015, 12:07
                  С помощью Office'а можно залогиниться в админке с фронтенда, но не наоборот.
                    Василий Столейков
                    Василий Столейков Проверенный
                    26 января 2015, 12:12
                    Точно, я забыл. Я использовал для этого плагин. Вот мой вариант плагина:
                    <?php
                    $currentSiteGroup = $modx->getOption("multisite_site_group");
                    if(empty($currentSiteGroup)) return;
                    $currentContext = $modx->context->get("key");
                    $currentContextSettings = $modx->getCollection('modContextSetting', array('key' => "multisite_site_group", "value" => $currentSiteGroup));
                    foreach($currentContextSettings as $currentContextSetting)
                    {
                        $contextKey = $currentContextSetting->get('context_key');
                        if($contextKey!="mgr" && $contextKey!=$currentContext)
                        {
                            if($user)
                            {
                                if($modx->event->name=="OnWebLogout")
                                {
                                    $modx->user->removeSessionContext($contextKey);
                                }
                                else if($modx->event->name=="OnWebLogin")
                                {
                                    $modx->user->addSessionContext($contextKey);
                                    $_SESSION['modx.'.$contextKey.'.session.cookie.lifetime']=$attributes["lifetime"];
                                }
                            }
                        }
                    }
                    Галки на системных событиях: OnWebLogin и OnWebLogout
                      wgame
                      wgame Старожил
                      31 января 2015, 22:02
                      к сожалению данный вариант не сработал
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          16