• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_perms.php
  • Класс: \CCrmPerms
  • Вызов: CCrmPerms::HavePerm
public function HavePerm($permEntity, $permAttr, $permType = 'READ')
{
	// HACK: only for product and currency support
	$permType = mb_strtoupper($permType);
	if ($permEntity == 'CONFIG' && $permAttr == self::PERM_CONFIG && $permType == 'READ')
	{
		return true;
	}

	// HACK: Compatibility with CONFIG rights
	if ($permEntity == 'CONFIG')
		$permType = 'WRITE';

	if(self::IsAdmin($this->userId))
	{
		return $permAttr != self::PERM_NONE;
	}

	if (!isset($this->arUserPerms[$permEntity][$permType]))
		return $permAttr == self::PERM_NONE;

	$icnt = count($this->arUserPerms[$permEntity][$permType]);
	if ($icnt > 1 && $this->arUserPerms[$permEntity][$permType]['-'] == self::PERM_NONE)
	{
		foreach ($this->arUserPerms[$permEntity][$permType] as $sField => $arFieldValue)
		{
			if ($sField == '-')
				continue ;
			$sPrevPerm = $permAttr;
			foreach ($arFieldValue as $fieldValue => $sAttr)
				if ($sAttr > $permAttr)
					return $sAttr == self::PERM_NONE;
			return $permAttr == self::PERM_NONE;
		}
	}

	if ($permAttr == self::PERM_NONE)
		return $this->arUserPerms[$permEntity][$permType]['-'] == self::PERM_NONE;

	if ($this->arUserPerms[$permEntity][$permType]['-'] >= $permAttr)
		return true;

	return false;
}