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/rospirotorg.ru/bitrix/modules/sender/lib/access/ |
Upload File : |
<?php /** * Bitrix Framework * @package bitrix * @subpackage sender * @copyright 2001-2021 Bitrix */ namespace Bitrix\Sender\Access; use Bitrix\Main\Access\AccessibleItem; use Bitrix\Main\Access\BaseAccessController; use Bitrix\Main\Access\Event\EventDictionary; use Bitrix\Main\Access\User\AccessibleUser; use Bitrix\Sender\Access\Exception\UnknownActionException; use Bitrix\Sender\Access\Model\UserModel; class AccessController extends BaseAccessController { private const BASE_RULE = 'Base'; /** * Checking access rights by action * @param string $action * @param AccessibleItem|null $item * @param null $params * * @return bool * @throws UnknownActionException */ public function check(string $action, AccessibleItem $item = null, $params = null): bool { $ruleName = $this->getRuleName($action); if (!$ruleName || !class_exists($ruleName)) { throw new UnknownActionException($action); } $event = $this->sendEvent(EventDictionary::EVENT_ON_BEFORE_CHECK, $action, null, $params); $isAccess = $event->isAccess(); if (!is_null($isAccess)) { return $isAccess; } $params['action'] = $action; $isAccess = (new $ruleName($this))->execute(null, $params); if($isAccess) { return $isAccess; } $event = $this->sendEvent(EventDictionary::EVENT_ON_AFTER_CHECK, $action,null, $params, $isAccess); $isAccess = $event->isAccess() ?? $isAccess; return $isAccess; } public function isAdmin() { return $this->user->isAdmin(); } protected function getRuleName(string $actionCode): ?string { $actionName = ActionDictionary::getActionName($actionCode); if (!$actionName) { return null; } $action = explode('_', $actionName); $action = array_map( function($el) { return ucfirst(mb_strtolower($el)); }, $action ); $ruleClass = $this->getRuleNamespace() .implode($action).self::RULE_SUFFIX; if(class_exists($ruleClass)) { return $ruleClass; } return $this->getRuleNamespace().self::BASE_RULE.self::RULE_SUFFIX; } protected function loadItem(int $itemId = null): ?AccessibleItem { return null; } protected function loadUser(int $userId): AccessibleUser { return UserModel::createFromId($userId); } }