3namespace Bitrix\Sender\Security\Role;
5use Bitrix\Main\ArgumentException;
6use Bitrix\Main\Localization\Loc;
7use Bitrix\Sender\Internals\Model;
8use Bitrix\Sender\Security\User;
10Loc::loadMessages(__FILE__);
29 private static $cache = [];
64 public static function check(
array $permissions, $entityCode, $actionCode, $minPerm =
null)
67 if (!isset(
$map[$entityCode][$actionCode]))
72 if (!isset($permissions[$entityCode][$actionCode]))
77 $perm = $permissions[$entityCode][$actionCode];
78 $minPerm = $minPerm ?: self::PERMISSION_NONE;
81 if ($minPerm === self::PERMISSION_NONE)
83 return $perm > $minPerm;
86 return $perm >= $minPerm;
99 if (!isset(static::$cache[
$userId]))
102 if (
$user->isPortalAdmin() ||
$user->isAdmin())
105 return static::$cache[
$userId];
110 $userAccessCodes = \CAccess::getUserCodesArray(
$user->getId());
112 if (!is_array($userAccessCodes) ||
count($userAccessCodes) === 0)
115 return static::$cache[
$userId];
118 $list = Model\Role\PermissionTable::getList(
array(
120 '=ROLE_ACCESS.ACCESS_CODE' => $userAccessCodes
124 foreach ($list as $row)
126 if (!isset(
$result[$row[
'ENTITY']][$row[
'ACTION']])
127 ||
$result[$row[
'ENTITY']][$row[
'ACTION']] < $row[
'PERMISSION'])
129 $result[$row[
'ENTITY']][$row[
'ACTION']] = $row[
'PERMISSION'];
136 return static::$cache[
$userId];
147 self::ENTITY_LETTER => [
148 self::ACTION_VIEW => [
149 self::PERMISSION_NONE,
152 self::ACTION_MODIFY => [
153 self::PERMISSION_NONE,
158 self::ACTION_VIEW => [
159 self::PERMISSION_NONE,
162 self::ACTION_MODIFY => [
163 self::PERMISSION_NONE,
168 self::ACTION_VIEW => [
169 self::PERMISSION_NONE,
172 self::ACTION_MODIFY => [
173 self::PERMISSION_NONE,
177 self::ENTITY_SEGMENT => [
178 self::ACTION_VIEW => [
179 self::PERMISSION_NONE,
182 self::ACTION_MODIFY => [
183 self::PERMISSION_NONE,
187 self::ENTITY_BLACKLIST => [
188 self::ACTION_VIEW => [
189 self::PERMISSION_NONE,
192 self::ACTION_MODIFY => [
193 self::PERMISSION_NONE,
197 self::ENTITY_SETTINGS => [
198 self::ACTION_MODIFY => [
199 self::PERMISSION_NONE,
219 foreach ($actions as
$action => $permission)
242 return Loc::getMessage(
'SENDER_SECURITY_ROLE_ENTITY_' .
$entity);
253 return Loc::getMessage(
'SENDER_SECURITY_ROLE_ACTION_' .
$action);
266 case self::PERMISSION_NONE:
267 $result = Loc::getMessage(
'SENDER_SECURITY_ROLE_PERMISSION_NONE');
269 case self::PERMISSION_SELF:
270 $result = Loc::getMessage(
'SENDER_SECURITY_ROLE_PERMISSION_SELF');
272 case self::PERMISSION_DEPARTMENT:
273 $result = Loc::getMessage(
'SENDER_SECURITY_ROLE_PERMISSION_DEPARTMENT');
275 case self::PERMISSION_ANY:
276 $result = Loc::getMessage(
'SENDER_SECURITY_ROLE_PERMISSION_ANY');
295 foreach ($permissionMap as
$entity => $actions)
297 foreach ($actions as
$action => $permissions)
299 foreach ($permissions as $permission)
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static check(array $permissions, $entityCode, $actionCode, $minPerm=null)
const PERMISSION_DEPARTMENT
static normalize(array $source)
static getPermissionName($permission)
static getByUserId($userId)
static getEntityName($entity)
static getActionName($action)
static getAdminPermissions()
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"