Однажды я забыл пароль администратора 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>";