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

	if($entityTypeID === \CCrmOwnerType::Lead)
	{
		return \CCrmLead::CheckCreatePermission($userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Deal || $entityTypeID === \CCrmOwnerType::DealRecurring)
	{
		return \CCrmDeal::CheckCreatePermission($userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Quote)
	{
		return \CCrmQuote::CheckCreatePermission($userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Invoice)
	{
		return \CCrmInvoice::CheckCreatePermission($userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Contact)
	{
		return \CCrmContact::CheckCreatePermission($userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Company)
	{
		return \CCrmCompany::CheckCreatePermission($userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::Order)
	{
		return Order\Permissions\Order::checkCreatePermission($userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::OrderPayment)
	{
		return Order\Permissions\Payment::checkCreatePermission($userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::OrderShipment)
	{
		return Order\Permissions\Shipment::checkCreatePermission($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_MODIFY,
					\Bitrix\Catalog\StoreDocumentTable::TYPE_SALES_ORDERS
				)
			;
		}

		return Order\Permissions\Shipment::checkCreatePermission($userPermissions);
	}
	elseif($entityTypeID === \CCrmOwnerType::StoreDocument)
	{
		return Main\Loader::includeModule('catalog') && AccessController::getCurrent()->check(ActionDictionary::ACTION_STORE_VIEW);
	}
	elseif(\CCrmOwnerType::isUseFactoryBasedApproach($entityTypeID))
	{
		$permissionsService = static::getPermissionsService($userPermissions);
		$factory = Container::getInstance()->getFactory($entityTypeID);
		if ($factory && $factory->isCategoriesSupported())
		{
			// check that can create in at least one category
			$categories = $factory->getCategories();
			foreach ($categories as $category)
			{
				$canAdd = $permissionsService->checkAddPermissions(
					$entityTypeID,
					$category->getId()
				);
				if ($canAdd)
				{
					return true;
				}
			}

			return false;
		}

		return $permissionsService->checkAddPermissions($entityTypeID);
	}

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

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