CCrmDocument::CanUserOperateDocumentType

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmDocument
  4. CanUserOperateDocumentType
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_document.php
  • Класс: \CCrmDocument
  • Вызов: CCrmDocument::CanUserOperateDocumentType
static function CanUserOperateDocumentType($operation, $userId, $documentType, $arParameters = array())
{
	$arDocumentID = static::GetDocumentInfo($documentType . '_0');
	if (empty($arDocumentID))
	{
		throw new CBPArgumentNullException('documentId');
	}

	$userId = intval($userId);
	if (!array_key_exists('AllUserGroups', $arParameters))
	{
		if (!array_key_exists('UserGroups', $arParameters))
		{
			$arParameters['UserGroups'] = static::PrepareUserGroups($userId);
		}

		$arParameters['AllUserGroups'] = $arParameters['UserGroups'];
		$arParameters['AllUserGroups'][] = 'Author';
	}

	if (array_key_exists('UserIsAdmin', $arParameters) && $arParameters['UserIsAdmin'] === true)
	{
		return true;
	}
	elseif (in_array(1, $arParameters['AllUserGroups']))
	{
		return true;
	}

	$permissionEntity = static::ResolvePermissionEntity($arDocumentID, $arParameters);
	$userPermissions = CCrmPerms::GetUserPermissions($userId);

	if (
		$operation == \CBPCanUserOperateOperation::CreateWorkflow
		|| $operation === CBPCanUserOperateOperation::DebugAutomation
	)
	{
		return \CCrmAuthorizationHelper::CheckConfigurationUpdatePermission($userPermissions);
	}

	if ($operation == \CBPCanUserOperateOperation::CreateAutomation)
	{
		if (isset($arParameters['DocumentCategoryId']) && $arParameters['DocumentCategoryId'] > 0)
		{
			$documentType .= '_C' . $arParameters['DocumentCategoryId'];
		}

		return \CCrmAuthorizationHelper::CheckAutomationCreatePermission($documentType, $userPermissions);
	}

	if( $operation === CBPCanUserOperateOperation::ViewWorkflow
		|| $operation === CBPCanUserOperateOperation::ReadDocument
	)
	{
		return CCrmAuthorizationHelper::CheckReadPermission($permissionEntity, 0, $userPermissions);
	}

	return CCrmAuthorizationHelper::CheckCreatePermission($permissionEntity, $userPermissions);
}

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