Забыл пароль администратора. Как восстановить?

Как авторизоваться в UMI.CMS если забыл пароль, но есть доступ по ftp.

Однажды я забыл пароль администратора UMI.CMS...

Время от времени подобная неприятность случается с каждым – забыл пароль от UMI.CMS, от windows, от почтового ящика… К счастью, восстановить пароль в UMI.CMS несравненно проще.

Действия различаются в зависимости от версии UMI.CMS и от вкусов пользователя:

1) для 2.6 и ниже:
1.1) Необходимо найти в корне сервера файл installed и удалить его.
1.2) положить в корень файл install.php и запустить его //domain_name/install.php?s=7
Откроется окно установщика на 7-м шаге. Это шаг задания пароля администратора. Содержимое сайта при этом не будет повреждено.

2) для всех версий: 
В корень сайта положить скрипт следующего содержания:

 include "./standalone.php";
session_start();
$objects = umiObjectsCollection::getInstance();
$userId = 14;
$object = $objects->getObject($userId);
$login = $object->getValue("login");
$password = $object->getValue("password");
$_SESSION['user_id']  = $userId;
$_SESSION['cms_login']  = $login;
$_SESSION['cms_pass']  = $password;

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

По окончании не забудьте удалить скрипт!

 

3) Для гурманов (//wiki.umisoft.ru/Поменять_пароль_администратора):
Выполнить запрос к базе

update cms3_object_content set varchar_val=md5('newpassword')  where obj_id=14 and field_id=46

Примечание от 20.03.2011

Получил версию 2.8.3
оопс! А там всю базу перекроили! И теперь sv имеет id=9, поле login = 31, password=32

Т.о., для 2.8 и далее скрипт восстановления  такой:

include "./standalone.php";
session_start();
$objects = umiObjectsCollection::getInstance();

//$userId = 14;
$sql = "SELECT id FROM cms3_objects WHERE guid = 'system-supervisor'";
$res = l_mysql_query($sql);
$userId = mysql_result($res,0);

$object = $objects->getObject($userId);
$login = $object->getValue("login");
$password = $object->getValue("password");

$_SESSION['user_id'] = $userId;
$_SESSION['cms_login'] = $login;
$_SESSION['cms_pass'] = $password;

echo "<p><a href='/admin/'>Перейти в админку</a></p>";

 

А вот это для версии 22:

include "./standalone.php";
session_start();
$objects = umiObjectsCollection::getInstance();
$connection = ConnectionPool::getInstance()->getConnection();

\UmiCms\Service::Auth()->logout();

$sql = "SELECT id FROM cms3_objects WHERE guid = 'system-supervisor'";
$result = $connection->queryResult($sql);
$result->setFetchType(IQueryResult::FETCH_ASSOC);
$fetchResult = $result->fetch();

$userId = (int) $fetchResult['id'];

$object = $objects->getObject($userId);
$login = $object->getValue("login");
$password = $object->getValue("password");

$auth = \UmiCms\Service::Auth();

$ReflectedClass = new ReflectionClass($auth);
$getAuthorization = $ReflectedClass->getMethod('getAuthorization');
$getAuthorization->setAccessible(true);

$authorization = $getAuthorization->invoke($auth);

$ReflectedClassAthorization = new ReflectionClass($authorization);

$authorization->deAuthorize();

$startSession = $ReflectedClassAthorization->getMethod('startSession');
$startSession->setAccessible(true);

$authorization->authorizeStateless($userId);

$startSession->invoke($authorization, $userId, false);


echo "<p><a href='/admin/'>Перейти в админку</a></p>";