Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. CheckSecurityNode.php

class CheckSecurityNode

@author Fabien Potencier <fabien@symfony.com>

Hierarchy

  • class \Twig\Node\Node implements \Twig\Node\Countable, \Twig\Node\IteratorAggregate
    • class \Twig\Node\CheckSecurityNode extends \Twig\Node\Node

Expanded class hierarchy of CheckSecurityNode

1 file declares its use of CheckSecurityNode
SandboxNodeVisitor.php in vendor/twig/twig/src/NodeVisitor/SandboxNodeVisitor.php

File

vendor/twig/twig/src/Node/CheckSecurityNode.php, line 20

Namespace

Twig\Node
View source
class CheckSecurityNode extends Node {
    private $usedFilters;
    private $usedTags;
    private $usedFunctions;
    
    /**
     * @param array<string, int> $usedFilters
     * @param array<string, int> $usedTags
     * @param array<string, int> $usedFunctions
     */
    public function __construct(array $usedFilters, array $usedTags, array $usedFunctions) {
        $this->usedFilters = $usedFilters;
        $this->usedTags = $usedTags;
        $this->usedFunctions = $usedFunctions;
        parent::__construct();
    }
    public function compile(Compiler $compiler) : void {
        $compiler->write("\n")
            ->write("public function checkSecurity()\n")
            ->write("{\n")
            ->indent()
            ->write('static $tags = ')
            ->repr(array_filter($this->usedTags))
            ->raw(";\n")
            ->write('static $filters = ')
            ->repr(array_filter($this->usedFilters))
            ->raw(";\n")
            ->write('static $functions = ')
            ->repr(array_filter($this->usedFunctions))
            ->raw(";\n\n")
            ->write("try {\n")
            ->indent()
            ->write("\$this->sandbox->checkSecurity(\n")
            ->indent()
            ->write(!$this->usedTags ? "[],\n" : "['" . implode("', '", array_keys($this->usedTags)) . "'],\n")
            ->write(!$this->usedFilters ? "[],\n" : "['" . implode("', '", array_keys($this->usedFilters)) . "'],\n")
            ->write(!$this->usedFunctions ? "[],\n" : "['" . implode("', '", array_keys($this->usedFunctions)) . "'],\n")
            ->write("\$this->source\n")
            ->outdent()
            ->write(");\n")
            ->outdent()
            ->write("} catch (SecurityError \$e) {\n")
            ->indent()
            ->write("\$e->setSourceContext(\$this->source);\n\n")
            ->write("if (\$e instanceof SecurityNotAllowedTagError && isset(\$tags[\$e->getTagName()])) {\n")
            ->indent()
            ->write("\$e->setTemplateLine(\$tags[\$e->getTagName()]);\n")
            ->outdent()
            ->write("} elseif (\$e instanceof SecurityNotAllowedFilterError && isset(\$filters[\$e->getFilterName()])) {\n")
            ->indent()
            ->write("\$e->setTemplateLine(\$filters[\$e->getFilterName()]);\n")
            ->outdent()
            ->write("} elseif (\$e instanceof SecurityNotAllowedFunctionError && isset(\$functions[\$e->getFunctionName()])) {\n")
            ->indent()
            ->write("\$e->setTemplateLine(\$functions[\$e->getFunctionName()]);\n")
            ->outdent()
            ->write("}\n\n")
            ->write("throw \$e;\n")
            ->outdent()
            ->write("}\n\n")
            ->outdent()
            ->write("}\n");
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title Overrides
CheckSecurityNode::$usedFilters private property
CheckSecurityNode::$usedFunctions private property
CheckSecurityNode::$usedTags private property
CheckSecurityNode::compile public function Overrides Node::compile
CheckSecurityNode::__construct public function Overrides Node::__construct
Node::$attributeNameDeprecations private property @var array&lt;string, NameDeprecation&gt;
Node::$attributes protected property
Node::$lineno protected property
Node::$nodeNameDeprecations private property @var array&lt;string, NameDeprecation&gt;
Node::$nodes protected property
Node::$sourceContext private property
Node::$tag protected property
Node::count public function
Node::deprecateAttribute public function
Node::deprecateNode public function
Node::getAttribute public function
Node::getIterator public function
Node::getNode public function
Node::getNodeTag public function
Node::getSourceContext public function
Node::getTemplateLine public function
Node::getTemplateName public function
Node::hasAttribute public function
Node::hasNode public function
Node::removeAttribute public function
Node::removeNode public function
Node::setAttribute public function
Node::setNode public function 1
Node::setNodeTag public function @internal
Node::setSourceContext public function
Node::__toString public function
RSS feed
Powered by Drupal