EntityAuthorization::checkUpdatePermission

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

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

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

		return Order\Permissions\Shipment::checkUpdatePermission($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)->checkUpdatePermissions(
			$entityTypeID,
			$entityID,
			Container::getInstance()->getFactory($entityTypeID)->getItemCategoryId($entityID) ?? 0
		);
	}

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

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

Добавить комментарий