Скрипт создающий sudo юзера
Бывают ситуации, что пароль от админа теряется, а к почте, на которую зареган админ, доступа нет. Данный скрипт создаёт sudo юзера при запуске с рандомным логином и паролем. Дальше уже можно через этого юзера поменять пароль от админа, а залогинившись под админом — удалить только что созданного sudo. Скрипт просто надо закачать в папку с MODX и запустить.
<?php
// Подключаем
define('MODX_API_MODE', true);
$i=0;
$current_dir = dirname(__FILE__) .'/';
$index_php = $current_dir .'index.php';
while (!file_exists($index_php) && $i < 9)
{
	$current_dir = dirname(dirname($index_php)) .'/';
	$index_php = $current_dir .'index.php';
	$i++;
}
if (file_exists($index_php)) { require_once $index_php; }
else { print "Не удалось найти MODX"; die; }
$user = empty($_GET['user']) ? 'user'. rand(99,9999) : $_GET['user'];
$pass = empty($_GET['pass']) ? rand(10000000,99999999) : $_GET['pass'];
$u = $modx->newObject('modUser');
$u->fromArray(array(
	'username' => $user,
	'password' => $pass,
	'active' => 1,
	'primary_group' => 1,
));
$u->setSudo(1);
$p = $modx->newObject('modUserProfile');
$p->fromArray(array(
	'fullname' => $user,
	'email' => $user.'@mail.ru',
));
$u->addOne($p);
$u->save();
if (!empty($u->username)) {
	print '<p><b>user:</b> '. $user .'</p><p><b>pass:</b> '. $pass .'</p>';
}Второй вариант
Илья Уткин предложил более изящный вариант, который сразу авторизует в админке под юзером, состоящим в группе Администраторов:
<?php
define('MODX_API_MODE', true);
require 'index.php';
$member = $modx->getObject('modUserGroupMember', array('user_group' => 1));
$user = $modx->getObject('modUser', $member->member);
$user->addSessionContext('mgr');
unlink(basename(__FILE__));
$modx->sendRedirect('/manager/');Данный скрипт нужно положить в корень сайта, где лежит index.php. После запуска скрипт сам себя удалит и авторизует вас в админке, перенаправив в /manager/. Поэтому, если у вас админка лежит в другой папке — надо переписать последнюю строчку скрипта.    
            
                Поблагодарить автора            
            
                 Отправить деньги            
        
        
            Комментарии: 7
                Кучу set() можно заменить на один fromArray().
Профиль отдельно сохранять не нужно, если ты привязываешь его к новому объекту через addOne(). Должен быть всего 1 save() вместо 3х.
                    Профиль отдельно сохранять не нужно, если ты привязываешь его к новому объекту через addOne(). Должен быть всего 1 save() вместо 3х.
                А можно просто влезть в бд и поменять почту.            
                    
                Вот такой файлик проще
Он сразу авторизует вас в админке и удалит сам себя. А уже в админке можно поменять логин-пароль.
                    <?php
define('MODX_API_MODE', true);
require 'index.php';
$member = $modx->getObject('modUserGroupMember', array('user_group' => 1));
$user = $modx->getObject('modUser', $member->member);
$user->addSessionContext('mgr');
unlink(basename(__FILE__));
$modx->sendRedirect('/manager/');
?>Он сразу авторизует вас в админке и удалит сам себя. А уже в админке можно поменять логин-пароль.
                Надо, кстати, самому где-нибудь сохранить))            
                    
                Не против, если добавлю в пост? Классный скрипт.            
                    
                да, конечно            
                    
                Есть еще вот такой вариант. Но это при условии, конечно, что сессия существует.            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.