В 1С-Битрикс, если у вас есть доступ по FTP, вы можете восстановить доступ к административной части, авторизовавшись под учётной записью с ID=1 (первый администратор системы). Вы абсолютно правы — для этого используется метод CUser::Authorize(1).
Способ 1 — через временный скрипт (рекомендуемый)
- Подключитесь к серверу по FTP.
- Создайте в корне сайта (рядом с папкой
/bitrix/) временный PHP-файл, например/auth_admin.php. - Поместите в него следующий код:
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
global $USER;
$USER->Authorize(1);
LocalRedirect('/bitrix/admin/');
?>
- Сохраните файл и откройте его в браузере:
http://ваш-сайт/auth_admin.php. - Вы будете автоматически авторизованы под администратором (ID=1) и перенаправлены в административный раздел.
- ВАЖНО: Сразу же создайте нового администратора (Настройки → Пользователи → Список пользователей → Добавить пользователя, группа «Администраторы») или смените пароль текущему пользователю (Сменить пароль в профиле).
- После этого обязательно удалите файл
/auth_admin.phpчерез FTP, чтобы злоумышленники не могли им воспользоваться.
Способ 2 — через файл init.php
Альтернативный вариант — временно добавить код авторизации в файл ранней инициализации /bitrix/php_interface/init.php (если его нет — создайте):
<?php
// ВНИМАНИЕ: после восстановления доступа СРАЗУ УДАЛИТЕ этот код!
global $USER, $APPLICATION;
if (!$USER->IsAuthorized() && mb_strpos($APPLICATION->GetCurPage(), '/bitrix/admin/') !== false)
{
$USER->Authorize(1);
}
?>
После этого зайдите в админку, смените пароль и удалите этот код из init.php.
Важные замечания
- CUser::Authorize($userId, $bSave = false, $bUpdate = true, $applicationId = null, $onlyActive = true) — метод класса CUser (модуль main, файл
/bitrix/modules/main/classes/general/user.php, строка 200). Первым параметром принимает ID пользователя. - Пользователь с ID=1 — это всегда первый администратор, созданный при установке системы. Он имеет полные права.
- При включённой двухфакторной авторизации (OTP) данный способ может не сработать. В этом случае дополнительно отключите OTP через SQL-запрос:
UPDATE b_option SET VALUE = 'N' WHERE MODULE_ID = 'security' AND NAME = 'otp_enabled';
- Если у пользователя ID=1 установлен EXTERNAL_AUTH_ID (авторизация через LDAP/AD), сбросьте его:
UPDATE b_user SET EXTERNAL_AUTH_ID = NULL WHERE ID = 1;