• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/engine/controller.php
  • Класс: BitrixMainEngineController
  • Вызов: Controller::buildFilters
protected function buildFilters(array $config = null): array
{
	if ($config === null)
	{
		$config = [];
	}

	if (!isset($config['prefilters']))
	{
		$config['prefilters'] = $this->configurator->wrapFiltersClosure(
			$this->getDefaultPreFilters()
		);
	}
	if (!isset($config['postfilters']))
	{
		$config['postfilters'] = $this->configurator->wrapFiltersClosure(
			$this->getDefaultPostFilters()
		);
	}

	$hasPostMethod = $hasCsrfCheck = false;
	foreach ($config['prefilters'] as $filter)
	{
		if ($filter instanceof ActionFilterHttpMethod && $filter->containsPostMethod())
		{
			$hasPostMethod = true;
		}
		if ($filter instanceof ActionFilterCsrf)
		{
			$hasCsrfCheck = true;
		}
	}

	if ($hasPostMethod && !$hasCsrfCheck && $this->request->isPost())
	{
		$config['prefilters'][] = new ActionFilterCsrf;
	}

	if (!empty($config['-prefilters']))
	{
		$config['prefilters'] = $this->removeFilters($config['prefilters'], $config['-prefilters']);
	}

	if (!empty($config['-postfilters']))
	{
		$config['postfilters'] = $this->removeFilters($config['postfilters'], $config['-postfilters']);
	}

	if (!empty($config['+prefilters']))
	{
		$config['prefilters'] = $this->appendFilters($config['prefilters'], $config['+prefilters']);
	}

	if (!empty($config['+postfilters']))
	{
		$config['postfilters'] = $this->appendFilters($config['postfilters'], $config['+postfilters']);
	}

	return $config;
}