• Модуль: sender
  • Путь к файлу: ~/bitrix/modules/sender/lib/security/role/permission.php
  • Класс: BitrixSenderSecurityRolePermission
  • Вызов: Permission::getByUserId
static function getByUserId($userId)
{
	if (!isset(static::$cache[$userId]))
	{
		$user = User::get($userId);
		if ($user->isPortalAdmin() || $user->isAdmin())
		{
			static::$cache[$userId] = self::getAdminPermissions();
			return  static::$cache[$userId];
		}
		
		//everybody else's permissions are defined by their role
		$result = [];
		$userAccessCodes = CAccess::getUserCodesArray($user->getId());
		
		if (!is_array($userAccessCodes) || count($userAccessCodes) === 0)
		{
			static::$cache[$userId] = [];
			return static::$cache[$userId];
		}
		
		$list = ModelRolePermissionTable::getList(array(
			'filter' => array(
				'=ROLE_ACCESS.ACCESS_CODE' => $userAccessCodes
			)
		));
		
		foreach ($list as $row)
		{
			if (!isset($result[$row['ENTITY']][$row['ACTION']])
				|| $result[$row['ENTITY']][$row['ACTION']] < $row['PERMISSION'])
			{
				$result[$row['ENTITY']][$row['ACTION']] = $row['PERMISSION'];
			}
		}
		
		static::$cache[$userId] = $result;
	}
	
	return static::$cache[$userId];
}