• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/security/entityauthorization.php
  • Класс: Bitrix\Crm\Security\EntityAuthorization
  • Вызов: EntityAuthorization::checkDeletePermission
static function checkDeletePermission($entityTypeID, $entityID, $userPermissions = null)
{
	if(!is_int($entityTypeID))
	{
		$entityTypeID = (int)$entityTypeID;
	}

	if(!is_int($entityID))
	{
		$entityID = (int)$entityID;
	}

	if($entityTypeID === \CCrmOwnerType::Lead)
	{
		return \CCrmLead::CheckDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Deal || $entityTypeID === \CCrmOwnerType::DealRecurring)
	{
		return \CCrmDeal::CheckDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Quote)
	{
		return \CCrmQuote::CheckDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Invoice)
	{
		return \CCrmInvoice::CheckDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Contact)
	{
		return \CCrmContact::CheckDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Company)
	{
		return \CCrmCompany::CheckDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Order)
	{
		return Order\Permissions\Order::checkDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::OrderPayment)
	{
		return Order\Permissions\Payment::checkDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::OrderShipment)
	{
		return Order\Permissions\Shipment::checkDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::ShipmentDocument)
	{
		if (Main\Loader::includeModule('catalog'))
		{
			return
				AccessController::getCurrent()->check(ActionDictionary::ACTION_CATALOG_READ)
				&& AccessController::getCurrent()->check(ActionDictionary::ACTION_INVENTORY_MANAGEMENT_ACCESS)
				&& AccessController::getCurrent()->checkByValue(
					ActionDictionary::ACTION_STORE_DOCUMENT_DELETE,
					\Bitrix\Catalog\StoreDocumentTable::TYPE_SALES_ORDERS
				)
			;
		}

		return Order\Permissions\Shipment::checkDeletePermission($entityID, $userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::StoreDocument)
	{
		return Main\Loader::includeModule('catalog') && AccessController::getCurrent()->check(ActionDictionary::ACTION_STORE_VIEW);
	}
	elseif(\CCrmOwnerType::isUseFactoryBasedApproach($entityTypeID))
	{
		return static::getPermissionsService($userPermissions)->checkDeletePermissions(
			$entityTypeID,
			$entityID,
			Container::getInstance()->getFactory($entityTypeID)->getItemCategoryId($entityID) ?? 0
		);
	}

	$entityTypeName = \CCrmOwnerType::ResolveName($entityTypeID);
	$permissionEntityType = \CCrmPerms::ResolvePermissionEntityType($entityTypeName, $entityID);

	return \CCrmAuthorizationHelper::CheckDeletePermission(
		$permissionEntityType,
		$entityID,
		$userPermissions
	);
}