• Модуль: disk
  • Путь к файлу: ~/bitrix/modules/disk/lib/internals/engine/actionfilter/checkarchivesignature.php
  • Класс: BitrixDiskInternalsEngineActionFilterCheckArchiveSignature
  • Вызов: CheckArchiveSignature::onBeforeAction
public function onBeforeAction(Event $event)
{
	$signature = Context::getCurrent()->getRequest()->get($this->requestParameterNames['signature']);
	$objectCollectionName = $this->requestParameterNames['objectCollection'];

	$objectCollection = null;
	foreach ($this->action->getArguments() as $name => $argument)
	{
		if ($name === $objectCollectionName)
		{
			/** @var ObjectCollection $objectCollection */
			$objectCollection = $argument;
		}
	}

	if (!$objectCollection)
	{
		$this->errorCollection[] = new Error('Could not find {objectCollection}');

		return new EventResult(EventResult::ERROR, null, null, $this);
	}

	if (!$signature)
	{
		$this->errorCollection[] = new Error(
			'Empty signature', self::ERROR_EMPTY_SIGNATURE
		);

		return new EventResult(EventResult::ERROR, null, null, $this);
	}

	if ($signature && !ParameterSigner::validateArchiveSignature($signature, $objectCollection->getIds()))
	{
		$this->errorCollection[] = new Error(
			'Invalid signature', self::ERROR_INVALID_SIGNATURE
		);

		return new EventResult(EventResult::ERROR, null, null, $this);
	}
}