- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_role.php
- Класс: \CCrmRole
- Вызов: CCrmRole::GetUserPerms
public function GetUserPerms($userId) { $userId = intval($userId); if($userId <= 0) { return []; } static $memoryCache = []; if (isset($memoryCache[$userId])) { return $memoryCache[$userId]; } $userAccessCodes = \Bitrix\Crm\Service\Container::getInstance() ->getUserPermissions($userId) ->getAttributesProvider() ->getUserAttributesCodes() ; $cache = Main\Application::getInstance()->getCache(); $cacheId = 'crm_user_permission_roles_' . $userId . '_' . md5(serialize($userAccessCodes)); if ($cache->initCache(self::CACHE_TIME, $cacheId, self::CACHE_PATH)) { $roles = $cache->getVars(); } else { $cache->startDataCache(); $roles = []; if (!empty($userAccessCodes)) { $rolesRelations = RoleRelationTable::getList([ 'filter' => [ '@RELATION' => $userAccessCodes, ], 'select' => [ 'ROLE_ID' ] ]); while ($roleRelation = $rolesRelations->fetch()) { $roles[] = $roleRelation['ROLE_ID']; } } $cache->endDataCache($roles); } $result = RolePermission::getPermissionsByRoles($roles); $memoryCache[$userId] = $result; return $result; }