Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/ldap/lib/ |
Upload File : |
<?php namespace Bitrix\Ldap; use Bitrix\Main\Localization\Loc; use Bitrix\Main\ORM\Fields\ExpressionField; use Bitrix\Main\UserTable; Loc::loadMessages(__FILE__); final class Limit { private static $userLimit = 1000; private static $userLimitExceededTag = 'LDAP_USER_LIMIT_EXCEEDED'; private static $isUserLimitExceeded = false; public static function isUserLimitExceeded(): bool { if(self::$isUserLimitExceeded !== true) { $isFeatureEnabled = \CBXFeatures::IsFeatureEnabled('LdapUnlimitedUsers'); $featuresList = \CBXFeatures::GetFeaturesList(); if($isFeatureEnabled && !empty($featuresList)) { self::$isUserLimitExceeded = false; } else { self::$isUserLimitExceeded = self::countLdapUsers() >= self::$userLimit; if(self::$isUserLimitExceeded) { self::notifyUserLimitExceeded(); } } } return self::$isUserLimitExceeded; } public static function getUserLimitNotifyMessage(): string { return loc::getMessage( 'LDAP_LIMIT_USER_LIMIT_EXCEEDED', ['#LIMIT#' => self::$userLimit] ); } private static function notifyUserLimitExceeded(): void { \CEventLog::Add([ "SEVERITY" => \CEventLog::SEVERITY_WARNING, "AUDIT_TYPE_ID" => self::$userLimitExceededTag, "MODULE_ID" => "ldap", "DESCRIPTION" => self::getUserLimitNotifyMessage() ]); \CAdminNotify::Add([ 'MODULE_ID' => 'ldap', 'TAG' => self::$userLimitExceededTag, 'ENABLE_CLOSE' => 'Y', 'NOTIFY_TYPE' => \CAdminNotify::TYPE_NORMAL, 'MESSAGE' => self::getUserLimitNotifyMessage() ]); } private static function countLdapUsers(): int { $result = 0; $res = UserTable::query() ->addSelect(new ExpressionField('CNT', 'COUNT(1)')) ->whereLike('EXTERNAL_AUTH_ID', 'LDAP#%') ->exec(); if($row = $res->fetch()) { $result = (int)$row['CNT']; } return $result; } }