Initial commit: Auth Server Base

This commit is contained in:
Bitrix user
2026-03-06 19:26:11 +03:00
commit 97bb196b29
39 changed files with 2272 additions and 0 deletions

View File

@@ -0,0 +1,92 @@
<?php
/**
* REINSTALL LOG CLEANUP AGENT
* Target: auth.con-med.ru
*/
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
if (!$USER->IsAdmin()) die("Доступ запрещен");
$log = [];
$apiFile = $_SERVER["DOCUMENT_ROOT"]."/local/modules/conmed.authserver/lib/api.php";
// 1. ОБНОВЛЯЕМ ФАЙЛ API.PHP (чтобы метод точно был в классе)
$apiCode = <<<'PHP'
<?php
namespace Conmed\Authserver;
/**
* Класс-фасад API сервера авторизации
* Собирает функционал из трейтов и содержит системные методы (агенты)
*/
class Api {
use SecurityTrait, AuthTokenTrait, RegistrationTrait, ProfileTrait, GroupsTrait;
/**
* Агент автоматической очистки логов
* Выполняется раз в сутки
*/
public static function cleanLogsAgent() {
if (!\Bitrix\Main\Loader::includeModule("highloadblock")) return "";
try {
// Получаем классы таблиц через трейт безопасности
$dcSec = self::getHlEntity('sso_security_log');
$dcAud = self::getHlEntity('sso_audit');
$dcCodes = self::getHlEntity('sso_codes');
// 1. Очистка логов безопасности (храним 7 дней)
$date7 = \Bitrix\Main\Type\DateTime::createFromTimestamp(time() - 86400 * 7);
$rs = $dcSec::getList(['filter' => ['<UF_DATE' => $date7], 'select' => ['ID']]);
while ($el = $rs->fetch()) {
$dcSec::delete($el['ID']);
}
// 2. Очистка аудита (храним 60 дней)
$date60 = \Bitrix\Main\Type\DateTime::createFromTimestamp(time() - 86400 * 60);
$rs = $dcAud::getList(['filter' => ['<UF_DATE' => $date60], 'select' => ['ID']]);
while ($el = $rs->fetch()) {
$dcAud::delete($el['ID']);
}
// 3. Очистка протухших кодов авторизации (храним 1 час для истории, потом удаляем)
$date1h = \Bitrix\Main\Type\DateTime::createFromTimestamp(time() - 3600);
$rs = $dcCodes::getList(['filter' => ['<UF_EXPIRES' => $date1h], 'select' => ['ID']]);
while ($el = $rs->fetch()) {
$dcCodes::delete($el['ID']);
}
} catch (\Exception $e) {
// Ошибки можно писать в системный лог php если нужно
}
return "\Conmed\Authserver\Api::cleanLogsAgent();";
}
}
PHP;
if (file_put_contents($apiFile, $apiCode)) {
$log[] = "Файл lib/api.php обновлен (метод cleanLogsAgent добавлен).";
}
// 2. РЕГИСТРАЦИЯ АГЕНТА В БИТРИКСЕ
// Сначала удаляем старый, если он завис
\CAgent::RemoveAgent("\Conmed\Authserver\Api::cleanLogsAgent();", "conmed.authserver");
// Добавляем новый
// Параметры: Метод, Модуль, Периодичность (N=раз в интервал), Интервал (86400 = 24 часа)
\CAgent::AddAgent(
"\Conmed\Authserver\Api::cleanLogsAgent();",
"conmed.authserver",
"N",
86400,
"",
"Y",
\Bitrix\Main\Type\DateTime::createFromTimestamp(time() + 60) // Первый запуск через минуту
);
$log[] = "Агент очистки логов успешно зарегистрирован в системе.";
echo "<h2>Результат установки:</h2>";
echo "<ul><li>" . implode("</li><li>", $log) . "</li></ul>";
echo "<p>Проверить работу агента можно в админке: <b>Настройки -> Настройки продукта -> Агенты</b></p>";