var/cache/dev/twig/7e/7e29ca2ed6fad75bd8e53e389cb4734f.php line 46

Open in your IDE?
  1. <?php
  2. use Twig\Environment;
  3. use Twig\Error\LoaderError;
  4. use Twig\Error\RuntimeError;
  5. use Twig\Extension\CoreExtension;
  6. use Twig\Extension\SandboxExtension;
  7. use Twig\Markup;
  8. use Twig\Sandbox\SecurityError;
  9. use Twig\Sandbox\SecurityNotAllowedTagError;
  10. use Twig\Sandbox\SecurityNotAllowedFilterError;
  11. use Twig\Sandbox\SecurityNotAllowedFunctionError;
  12. use Twig\Source;
  13. use Twig\Template;
  14. use Twig\TemplateWrapper;
  15. /* @PimcoreAdmin/Admin/Login/login.html.twig */
  16. class __TwigTemplate_a8881ddb946ba5a7267aa404c9e18e11 extends Template
  17. {
  18.     private Source $source;
  19.     /**
  20.      * @var array<string, Template>
  21.      */
  22.     private array $macros = [];
  23.     public function __construct(Environment $env)
  24.     {
  25.         parent::__construct($env);
  26.         $this->source $this->getSourceContext();
  27.         $this->blocks = [
  28.             'content' => [$this'block_content'],
  29.             'below_footer' => [$this'block_below_footer'],
  30.         ];
  31.         $this->sandbox $this->extensions[SandboxExtension::class];
  32.         $this->checkSecurity();
  33.     }
  34.     protected function doGetParent(array $context): bool|string|Template|TemplateWrapper
  35.     {
  36.         // line 1
  37.         return "@PimcoreAdmin/Admin/Login/layout.html.twig";
  38.     }
  39.     protected function doDisplay(array $context, array $blocks = []): iterable
  40.     {
  41.         $macros $this->macros;
  42.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  43.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""@PimcoreAdmin/Admin/Login/login.html.twig"));
  44.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  45.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""@PimcoreAdmin/Admin/Login/login.html.twig"));
  46.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  47.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""@PimcoreAdmin/Admin/Login/login.html.twig"));
  48.         $this->parent $this->load("@PimcoreAdmin/Admin/Login/layout.html.twig"1);
  49.         yield from $this->parent->unwrap()->yield($contextarray_merge($this->blocks$blocks));
  50.         
  51.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  52.         
  53.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  54.         
  55.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  56.     }
  57.     // line 3
  58.     /**
  59.      * @return iterable<null|scalar|\Stringable>
  60.      */
  61.     public function block_content(array $context, array $blocks = []): iterable
  62.     {
  63.         $macros $this->macros;
  64.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  65.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""content"));
  66.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  67.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""content"));
  68.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  69.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""content"));
  70.         // line 4
  71.         yield "<div id=\"loginform\">
  72.     <form id=\"form-element\" method=\"post\" action=\"";
  73.         // line 5
  74.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("pimcore_admin_login_check", ["perspective" => Twig\Extension\CoreExtension::striptags($this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env$this->sourceCoreExtension::getAttribute($this->env$this->source, (isset($context["app"]) || array_key_exists("app"$context) ? $context["app"] : (function () { throw new RuntimeError('Variable "app" does not exist.'5$this->source); })()), "request", [], "any"falsefalsetrue5), "get", ["perspective"], "method"falsefalsetrue5), 5$this->source))]), "html"nulltrue);
  75.         yield "\">
  76.         ";
  77.         // line 7
  78.         if (array_key_exists("error"$context)) {
  79.             // line 8
  80.             yield "        <div class=\"text error\">
  81.             ";
  82.             // line 9
  83.             yield $this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans($this->sandbox->ensureToStringAllowed((isset($context["error"]) || array_key_exists("error"$context) ? $context["error"] : (function () { throw new RuntimeError('Variable "error" does not exist.'9$this->source); })()), 9$this->source), [], "admin");
  84.             yield "
  85.         </div>
  86.         ";
  87.         }
  88.         // line 12
  89.         yield "
  90.         <input type=\"text\" name=\"username\" autocomplete=\"username\" placeholder=\"";
  91.         // line 13
  92.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("username", [], "admin"), "html"nulltrue);
  93.         yield "\" required autofocus>
  94.         <input type=\"password\" name=\"password\" autocomplete=\"current-password\" placeholder=\"";
  95.         // line 14
  96.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("password", [], "admin"), "html"nulltrue);
  97.         yield "\" required>
  98.         <input type=\"hidden\" name=\"csrfToken\" id=\"csrfToken\" value=\"";
  99.         // line 15
  100.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env$this->source, (isset($context["pimcore_csrf"]) || array_key_exists("pimcore_csrf"$context) ? $context["pimcore_csrf"] : (function () { throw new RuntimeError('Variable "pimcore_csrf" does not exist.'15$this->source); })()), "getCsrfToken", [], "method"falsefalsetrue15), 15$this->source), "html"nulltrue);
  101.         yield "\">
  102.         <button type=\"submit\">";
  103.         // line 17
  104.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("login", [], "admin"), "html"nulltrue);
  105.         yield "</button>
  106.     </form>
  107.     <a href=\"";
  108.         // line 20
  109.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("pimcore_admin_login_lostpassword");
  110.         yield "\" class=\"lostpassword\">";
  111.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("Forgot your password", [], "admin"), "html"nulltrue);
  112.         yield "?</a>
  113. </div>
  114. ";
  115.         // line 23
  116.         if ((($tmp =  !(isset($context["browserSupported"]) || array_key_exists("browserSupported"$context) ? $context["browserSupported"] : (function () { throw new RuntimeError('Variable "browserSupported" does not exist.'23$this->source); })())) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  117.             // line 24
  118.             yield "<div id=\"browserinfo\">
  119.     <div class=\"text\">
  120.         ";
  121.             // line 26
  122.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("Your browser is not supported. Please install the latest version of one of the following browsers.", [], "admin"), "html"nulltrue);
  123.             yield "
  124.     </div>
  125.     <div class=\"text browserinfo\">
  126.         <a href=\"https://www.google.com/chrome\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Chrome\"><img src=\"/bundles/pimcoreadmin/img/login/chrome.svg\" alt=\"Chrome\"/></a>
  127.         <a href=\"https://www.mozilla.org/firefox\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Firefox\"><img src=\"/bundles/pimcoreadmin/img/login/firefox.svg\" alt=\"Firefox\"/></a>
  128.         <a href=\"https://www.apple.com/safari\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Safari\"><img src=\"/bundles/pimcoreadmin/img/login/safari.svg\" alt=\"Safari\"/></a>
  129.         <a href=\"https://www.microsoft.com/edge\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Edge\"><img src=\"/bundles/pimcoreadmin/img/login/edge.svg\" alt=\"Edge\"/></a>
  130.     </div>
  131.     <a href=\"#\" onclick=\"showLogin();\">";
  132.             // line 36
  133.             yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->extensions['Symfony\Bridge\Twig\Extension\TranslationExtension']->trans("Click here to proceed", [], "admin"), "html"nulltrue);
  134.             yield "</a>
  135. </div>
  136. <script type=\"text/javascript\">
  137.     function showLogin() {
  138.         document.getElementById('loginform').style.display = 'block';
  139.         document.getElementById('browserinfo').style.display = 'none';
  140.     }
  141. </script>
  142. <style type=\"text/css\">
  143.     #loginform {
  144.         display: none;
  145.     }
  146. </style>
  147. ";
  148.         }
  149.         
  150.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  151.         
  152.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  153.         
  154.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  155.         yield from [];
  156.     }
  157.     // line 53
  158.     /**
  159.      * @return iterable<null|scalar|\Stringable>
  160.      */
  161.     public function block_below_footer(array $context, array $blocks = []): iterable
  162.     {
  163.         $macros $this->macros;
  164.         $__internal_b91a4435ea3baf1e2b6bfda56133dace $this->extensions["Sentry\\SentryBundle\\Tracing\\Twig\\TwigTracingExtension"];
  165.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->enter($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""below_footer"));
  166.         $__internal_5a27a8ba21ca79b61932376b2fa922d2 $this->extensions["Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension"];
  167.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""below_footer"));
  168.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  169.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""below_footer"));
  170.         // line 54
  171.         yield "<script ";
  172.         yield $this->sandbox->ensureToStringAllowed(CoreExtension::getAttribute($this->env$this->source, (isset($context["pimcore_csp"]) || array_key_exists("pimcore_csp"$context) ? $context["pimcore_csp"] : (function () { throw new RuntimeError('Variable "pimcore_csp" does not exist.'54$this->source); })()), "getNonceHtmlAttribute", [], "method"falsefalsetrue54), 54$this->source);
  173.         yield ">
  174.     ";
  175.         // line 55
  176.         if ((($tmp =  !array_key_exists("deeplink"$context)) && $tmp instanceof Markup ? (string) $tmp $tmp)) {
  177.             // line 56
  178.             yield "    // clear opened tabs store
  179.     localStorage.removeItem(\"pimcore_opentabs\");
  180.     ";
  181.         }
  182.         // line 59
  183.         yield "
  184.     // hide symfony toolbar by default
  185.     var symfonyToolbarKey = 'symfony/profiler/toolbar/displayState';
  186.     if(!window.localStorage.getItem(symfonyToolbarKey)) {
  187.         window.localStorage.setItem(symfonyToolbarKey, 'none');
  188.     }
  189.     // CSRF token refresh
  190.     var formElement = document.getElementById('form-element');
  191.     var csrfRefreshInProgress = false;
  192.     function refreshCsrfToken() {
  193.         csrfRefreshInProgress = true;
  194.         formElement.style.opacity = '0.3';
  195.         var request = new XMLHttpRequest();
  196.         request.open('GET', '";
  197.         // line 74
  198.         yield $this->extensions['Symfony\Bridge\Twig\Extension\RoutingExtension']->getPath("pimcore_admin_login_csrf_token");
  199.         yield "');
  200.         request.onload = function () {
  201.             if (this.status >= 200 && this.status < 400) {
  202.                 var res = JSON.parse(this.response);
  203.                 document.getElementById('csrfToken').setAttribute('value', res['csrfToken']);
  204.                 formElement.style.opacity = '1';
  205.                 csrfRefreshInProgress = false;
  206.             }
  207.         };
  208.         request.send();
  209.     }
  210.     document.addEventListener('visibilitychange', function(ev) {
  211.         if(document.visibilityState === 'visible') {
  212.             refreshCsrfToken();
  213.         }
  214.     });
  215.     window.setInterval(refreshCsrfToken, ";
  216.         // line 90
  217.         yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape($this->sandbox->ensureToStringAllowed((isset($context["csrfTokenRefreshInterval"]) || array_key_exists("csrfTokenRefreshInterval"$context) ? $context["csrfTokenRefreshInterval"] : (function () { throw new RuntimeError('Variable "csrfTokenRefreshInterval" does not exist.'90$this->source); })()), 90$this->source), "html"nulltrue);
  218.         yield ");
  219.     formElement.addEventListener(\"submit\", function(evt) {
  220.         if(csrfRefreshInProgress) {
  221.             evt.preventDefault();
  222.         }
  223.     }, true);
  224. </script>
  225. ";
  226.         // line 99
  227.         yield $this->extensions['Pimcore\Twig\Extension\HelpersExtension']->breachAttackRandomContent();
  228.         yield "
  229. ";
  230.         
  231.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  232.         
  233.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  234.         
  235.         $__internal_b91a4435ea3baf1e2b6bfda56133dace->leave($__internal_b91a4435ea3baf1e2b6bfda56133dace_prof);
  236.         yield from [];
  237.     }
  238.     /**
  239.      * @codeCoverageIgnore
  240.      */
  241.     public function getTemplateName(): string
  242.     {
  243.         return "@PimcoreAdmin/Admin/Login/login.html.twig";
  244.     }
  245.     /**
  246.      * @codeCoverageIgnore
  247.      */
  248.     public function isTraitable(): bool
  249.     {
  250.         return false;
  251.     }
  252.     /**
  253.      * @codeCoverageIgnore
  254.      */
  255.     public function getDebugInfo(): array
  256.     {
  257.         return array (  262 => 99,  250 => 90,  231 => 74,  214 => 59,  209 => 56,  207 => 55,  202 => 54,  186 => 53,  156 => 36,  143 => 26,  139 => 24,  137 => 23,  129 => 20,  123 => 17,  118 => 15,  114 => 14,  110 => 13,  107 => 12,  101 => 9,  98 => 8,  96 => 7,  91 => 5,  88 => 4,  72 => 3,  43 => 1,);
  258.     }
  259.     public function getSourceContext(): Source
  260.     {
  261.         return new Source("{% extends '@PimcoreAdmin/Admin/Login/layout.html.twig' %}
  262. {% block content %}
  263. <div id=\"loginform\">
  264.     <form id=\"form-element\" method=\"post\" action=\"{{ path('pimcore_admin_login_check', {'perspective' : app.request.get('perspective')|striptags}) }}\">
  265.         {% if error is defined %}
  266.         <div class=\"text error\">
  267.             {{ error|trans([],'admin')|raw }}
  268.         </div>
  269.         {% endif %}
  270.         <input type=\"text\" name=\"username\" autocomplete=\"username\" placeholder=\"{{ 'username'|trans([], 'admin') }}\" required autofocus>
  271.         <input type=\"password\" name=\"password\" autocomplete=\"current-password\" placeholder=\"{{ 'password'|trans([], 'admin') }}\" required>
  272.         <input type=\"hidden\" name=\"csrfToken\" id=\"csrfToken\" value=\"{{ pimcore_csrf.getCsrfToken() }}\">
  273.         <button type=\"submit\">{{ 'login'|trans([], 'admin') }}</button>
  274.     </form>
  275.     <a href=\"{{ path('pimcore_admin_login_lostpassword') }}\" class=\"lostpassword\">{{ 'Forgot your password'|trans([], 'admin') }}?</a>
  276. </div>
  277. {% if not browserSupported %}
  278. <div id=\"browserinfo\">
  279.     <div class=\"text\">
  280.         {{ 'Your browser is not supported. Please install the latest version of one of the following browsers.'|trans([], 'admin') }}
  281.     </div>
  282.     <div class=\"text browserinfo\">
  283.         <a href=\"https://www.google.com/chrome\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Chrome\"><img src=\"/bundles/pimcoreadmin/img/login/chrome.svg\" alt=\"Chrome\"/></a>
  284.         <a href=\"https://www.mozilla.org/firefox\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Firefox\"><img src=\"/bundles/pimcoreadmin/img/login/firefox.svg\" alt=\"Firefox\"/></a>
  285.         <a href=\"https://www.apple.com/safari\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Safari\"><img src=\"/bundles/pimcoreadmin/img/login/safari.svg\" alt=\"Safari\"/></a>
  286.         <a href=\"https://www.microsoft.com/edge\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Edge\"><img src=\"/bundles/pimcoreadmin/img/login/edge.svg\" alt=\"Edge\"/></a>
  287.     </div>
  288.     <a href=\"#\" onclick=\"showLogin();\">{{ 'Click here to proceed'|trans([], 'admin') }}</a>
  289. </div>
  290. <script type=\"text/javascript\">
  291.     function showLogin() {
  292.         document.getElementById('loginform').style.display = 'block';
  293.         document.getElementById('browserinfo').style.display = 'none';
  294.     }
  295. </script>
  296. <style type=\"text/css\">
  297.     #loginform {
  298.         display: none;
  299.     }
  300. </style>
  301. {% endif %}
  302. {% endblock %}
  303. {% block below_footer %}
  304. <script {{ pimcore_csp.getNonceHtmlAttribute()|raw }}>
  305.     {% if deeplink is not defined %}
  306.     // clear opened tabs store
  307.     localStorage.removeItem(\"pimcore_opentabs\");
  308.     {% endif %}
  309.     // hide symfony toolbar by default
  310.     var symfonyToolbarKey = 'symfony/profiler/toolbar/displayState';
  311.     if(!window.localStorage.getItem(symfonyToolbarKey)) {
  312.         window.localStorage.setItem(symfonyToolbarKey, 'none');
  313.     }
  314.     // CSRF token refresh
  315.     var formElement = document.getElementById('form-element');
  316.     var csrfRefreshInProgress = false;
  317.     function refreshCsrfToken() {
  318.         csrfRefreshInProgress = true;
  319.         formElement.style.opacity = '0.3';
  320.         var request = new XMLHttpRequest();
  321.         request.open('GET', '{{ path(\"pimcore_admin_login_csrf_token\") }}');
  322.         request.onload = function () {
  323.             if (this.status >= 200 && this.status < 400) {
  324.                 var res = JSON.parse(this.response);
  325.                 document.getElementById('csrfToken').setAttribute('value', res['csrfToken']);
  326.                 formElement.style.opacity = '1';
  327.                 csrfRefreshInProgress = false;
  328.             }
  329.         };
  330.         request.send();
  331.     }
  332.     document.addEventListener('visibilitychange', function(ev) {
  333.         if(document.visibilityState === 'visible') {
  334.             refreshCsrfToken();
  335.         }
  336.     });
  337.     window.setInterval(refreshCsrfToken, {{ csrfTokenRefreshInterval }});
  338.     formElement.addEventListener(\"submit\", function(evt) {
  339.         if(csrfRefreshInProgress) {
  340.             evt.preventDefault();
  341.         }
  342.     }, true);
  343. </script>
  344. {{ pimcore_breach_attack_random_content() }}
  345. {% endblock %}
  346. ""@PimcoreAdmin/Admin/Login/login.html.twig""/var/www/vendor/pimcore/pimcore/bundles/AdminBundle/Resources/views/Admin/Login/login.html.twig");
  347.     }
  348.     
  349.     public function checkSecurity()
  350.     {
  351.         static $tags = ["extends" => 1"if" => 7];
  352.         static $filters = ["escape" => 5"striptags" => 5"raw" => 9"trans" => 9];
  353.         static $functions = ["path" => 5"pimcore_breach_attack_random_content" => 99];
  354.         try {
  355.             $this->sandbox->checkSecurity(
  356.                 ['extends''if'],
  357.                 ['escape''striptags''raw''trans'],
  358.                 ['path''pimcore_breach_attack_random_content'],
  359.                 $this->source
  360.             );
  361.         } catch (SecurityError $e) {
  362.             $e->setSourceContext($this->source);
  363.             if ($e instanceof SecurityNotAllowedTagError && isset($tags[$e->getTagName()])) {
  364.                 $e->setTemplateLine($tags[$e->getTagName()]);
  365.             } elseif ($e instanceof SecurityNotAllowedFilterError && isset($filters[$e->getFilterName()])) {
  366.                 $e->setTemplateLine($filters[$e->getFilterName()]);
  367.             } elseif ($e instanceof SecurityNotAllowedFunctionError && isset($functions[$e->getFunctionName()])) {
  368.                 $e->setTemplateLine($functions[$e->getFunctionName()]);
  369.             }
  370.             throw $e;
  371.         }
  372.     }
  373. }