Вход в панель администратора через api [MODX]

28 Мая 2021
php

Задача: авторизоваться за администратора используя стандартные методы MODX.

  1. Для авторизации необходимо знать номер группы user_group пользователя администратора (можно и авторизоваться за любого другого пользователя всё равно нужно знать номер его группы):

    $member = $modx->getObject('modUserGroupMember', array('user_group' => 1)); // Берем первого пользователя 1 группы
    $user = $modx->getObject('modUser', $member->member); // Берем данные modUser первого пользователя
    
  2. Когда мы получили данные необходимого пользователя, теперь нужно авторизоваться за него в контексте mgr (ключ контекста может отличаться)

    $user->addSessionContext('mgr'); //Добавляет новый контекст в массив контекста сеанса пользователя.
    
  3. В зависимости от задачи дальнейшие действия могут быть различными, например такими:

    unlink(basename(__FILE__)); // удаляем текущий файл
    $modx->sendRedirect(MODX_MANAGER_URL); // перенаправляем в панель администрирования
    

Весь файл:

define('MODX_API_MODE', true);
require $_SERVER['DOCUMENT_ROOT'].'/index.php';

$member = $modx->getObject('modUserGroupMember', array('user_group' => 1));
$user = $modx->getObject('modUser', $member->member);
$user->addSessionContext('mgr');

unlink(basename(__FILE__));
$modx->sendRedirect(MODX_MANAGER_URL);