Проверка прав администратора через CUser::IsAdmin() в 1С-Битрикс

Внимание! Работает режим премодерации. Все сообщения публикуются после проверки!
Страницы: 1
Ответить
RSS
Проверка прав администратора через CUser::IsAdmin() в 1С-Битрикс
Руководство по использованию функции CUser::IsAdmin() в 1С-Битрикс

В веб-разработке часто возникает необходимость проверки, является ли  текущий пользователь администратором, чтобы управлять доступом к  определенным функциям или контенту на сайте. В системе управления  контентом (CMS) 1С-Битрикс для этих целей используется метод  CUser::IsAdmin(). Эта функция позволяет убедиться, что пользователь  принадлежит группе администраторов, и соответственно управлять правами  доступа.
Изменено: Валерий Макеев - 29.09.2025 15:15:46
Этот код реализует защищённую административную панель в 1С-Битрикс, которая доступна только авторизованным администраторам и отображает системную информацию, управление сайтом и критические функции с контролем доступа через CUser::IsAdmin().
Код
<?php
// Подключаем ядро Битрикс
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");

use Bitrix\Main\Engine\CurrentUser;
use Bitrix\Main\ModuleManager;

global $USER;

// Проверка авторизации
if (!is_object($USER) || !$USER->IsAuthorized()) {
    LocalRedirect("/auth.php");
    exit();
}

// Проверка прав администратора
if (!$USER->IsAdmin()) {
    ShowError("Доступ запрещён. Требуются права администратора.");
    include($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php");
    exit();
}

$APPLICATION->SetTitle("Админ-панель | Система управления сайтом");

// Логируем доступ
if (CModule::IncludeModule("main")) {
    CEventLog::Add([
        "SEVERITY" => "INFO",
        "AUDIT_TYPE_ID" => "ADMIN_PANEL_ACCESS",
        "MODULE_ID" => "main",
        "DESCRIPTION" => "Пользователь " . $USER->GetFullName() . " (" . $USER->GetLogin() . ") вошёл в административную панель."
    ]);
}

// Статистика по сайтам
$siteIterator = CSite::GetList($by = "sort", $order = "asc");
$sites = [];
while ($site = $siteIterator->Fetch()) {
    $sites[] = $site;
}

// Количество пользователей
$userCount = CUser::GetList($by = "id", $order = "asc", [], ["COUNT" => "Y"])->SelectedRowsCount();

// Получаем версию ядра
$version = ModuleManager::getVersion('main');

// Получаем лицензионный ключ (может быть пустым в Open Source)
$licenseKey = defined('LICENSE_KEY') ? LICENSE_KEY : 'Not available (Open Source or undefined)';
?>

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Админ-панель</title>
    <style>
        body { font-family: Arial, sans-serif; padding: 20px; background: #f4f4f4; }
        .container { max-width: 1000px; margin: 0 auto; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
        h1 { color: #333; }
        .menu { margin: 20px 0; padding: 10px; background: #007bff; border-radius: 5px; }
        .menu a { color: #fff; text-decoration: none; margin: 0 10px; }
        .info-box { margin: 15px 0; padding: 10px; border: 1px solid #ddd; border-radius: 5px; background: #f9f9f9; }
        .danger-button {
            background: #dc3545;
            color: white;
            border: none;
            padding: 10px 15px;
            border-radius: 5px;
            cursor: pointer;
            margin-top: 10px;
        }
        .footer { margin-top: 30px; text-align: center; color: #777; font-size: 0.9em; }
        .license-key { word-break: break-all; font-family: monospace; font-size: 0.9em; color: #d9534f; }
    </style>
</head>
<body>
<div class="container">
    <h1>Добро пожаловать в админ-панель, <?= htmlspecialchars($USER->GetFullName() ?: $USER->GetLogin()) ?>!</h1>

    <!-- Административное меню -->
    <div class="menu">
        <a href="/admin/">Главная</a>
        <a href="/bitrix/admin/">Битрикс Админка</a>
        <a href="/users/">Управление пользователями</a>
        <a href="/settings/">Настройки сайта</a>
        <a href="/logs/">Журнал событий</a>
    </div>

    <!-- Системная информация -->
    <div class="info-box">
        <h3>Системная информация</h3>
        <p><strong>Версия Битрикс:</strong> <?= htmlspecialchars($version) ?></p>
        <p><strong>Лицензионный ключ:</strong> <span class="license-key"><?= htmlspecialchars($licenseKey) ?></span></p>
        <p><strong>Количество сайтов:</strong> <?= count($sites) ?></p>
        <p><strong>Общее количество пользователей:</strong> <?= $userCount ?></p>
        <p><strong>Дата и время:</strong> <?= date("d.m.Y H:i:s") ?></p>
    </div>

    <!-- Конфиденциальные действия -->
    <div class="info-box">
        <h3>Критические операции</h3>
        <p>Эти действия доступны только администраторам:</p>
        <form action="/bitrix/admin/cache.php" method="post">
            <button type="submit" class="danger-button">Очистить кеш сайта</button>
        </form>
        <form action="/bitrix/admin/dump.php" method="post">
            <button type="submit" class="danger-button">Создать резервную копию</button>
        </form>
    </div>

    <!-- Отображение списка сайтов -->
    <div class="info-box">
        <h3>Сайты в системе</h3>
        <ul>
            <?php foreach ($sites as $site): ?>
                <li>
                    <strong><?= htmlspecialchars($site["NAME"]) ?></strong>
                    (<?= $site["LID"] ?>) — <a href="//<?= $site["SERVER_NAME"] ?>" target="_blank">Перейти</a>
                </li>
            <?php endforeach; ?>
        </ul>
    </div>

    <!-- Кнопка выхода -->
    <p>
        <a href="/?logout=yes">Выйти из админки</a>
    </p>

    <!-- Подвал -->
    <div class="footer">
        Административная панель © <?= date("Y") ?> | Только для авторизованных администраторов
    </div>
</div>
</body>
</html>

<?php
// Завершаем работу с заголовками
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/footer.php");
?>
Страницы: 1
Ответить
Форма ответов
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
 

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Разработка интернет-магазина с готовой версткой

от 4 недель

от 90 000 рублей

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Аутсорсинг

готов помочь, если нет времени

договорная

Могу взять на себя работы по full-stack

* на основе готовой верстки

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.