Скрипт создающий 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/');
?>
Он сразу авторизует вас в админке и удалит сам себя. А уже в админке можно поменять логин-пароль.
Надо, кстати, самому где-нибудь сохранить))
Не против, если добавлю в пост? Классный скрипт.
да, конечно
Есть еще вот такой вариант. Но это при условии, конечно, что сессия существует.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.