CRM-модуль Битрикс24 располагает удобным функционалом ролей пользователей для разграничения прав пользователей. Иногда при разработке нового функционала требуется понять, каким списком ролей обладает тот или иной пользователь. Например, по принадлежности к определенной роли у пользователя будут появляться дополнительные права.
Делюсь кодом, который выведет список ролей:
use Bitrix\Crm\RoleTable;
use Bitrix\Crm\Security\Role\Model\RoleRelationTable;
// задаем ID пользователя
$userId = 705;
$userAccessCodes = \Bitrix\Crm\Service\Container::getInstance()
->getUserPermissions($userId)
->getAttributesProvider()
->getUserAttributesCodes()
;
if (!empty($userAccessCodes))
{
$rolesRelations = RoleRelationTable::getList([
'filter' => [
'@RELATION' => $userAccessCodes,
],
'select' => [
'ROLE_ID',
'NAME' => 'ROLE.NAME'
],
'runtime' => [
'ROLE' => [
'data_type' => '\Bitrix\Crm\RoleTable',
'reference' =>[
'=ref.ID' => 'this.ROLE_ID',
],
'join_type' => 'inner'
]
],
]);
// получаем ID и наименование роли
while ($roles = $rolesRelations->fetch())
{
echo "<pre>";
print_r($roles);
echo "</pre>";
}
}