Этот код реализует защищённую административную панель в 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");
?> |