1177 lines
60 KiB
PHP
1177 lines
60 KiB
PHP
<?php
|
|
|
|
use Twig\Environment;
|
|
use Twig\Error\LoaderError;
|
|
use Twig\Error\RuntimeError;
|
|
use Twig\Markup;
|
|
use Twig\Sandbox\SecurityError;
|
|
use Twig\Sandbox\SecurityNotAllowedTagError;
|
|
use Twig\Sandbox\SecurityNotAllowedFilterError;
|
|
use Twig\Sandbox\SecurityNotAllowedFunctionError;
|
|
use Twig\Source;
|
|
use Twig\Template;
|
|
|
|
/* @Security/Collector/security.html.twig */
|
|
class __TwigTemplate_e66f888c0b9f68307ff5b0a6f8efb5393a36daf4b858e228524c008e6e56b58a extends \Twig\Template
|
|
{
|
|
public function __construct(Environment $env)
|
|
{
|
|
parent::__construct($env);
|
|
|
|
// line 1
|
|
$this->parent = $this->loadTemplate("@WebProfiler/Profiler/layout.html.twig", "@Security/Collector/security.html.twig", 1);
|
|
$this->blocks = [
|
|
'page_title' => [$this, 'block_page_title'],
|
|
'toolbar' => [$this, 'block_toolbar'],
|
|
'menu' => [$this, 'block_menu'],
|
|
'panel' => [$this, 'block_panel'],
|
|
];
|
|
}
|
|
|
|
protected function doGetParent(array $context)
|
|
{
|
|
return "@WebProfiler/Profiler/layout.html.twig";
|
|
}
|
|
|
|
protected function doDisplay(array $context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@Security/Collector/security.html.twig"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "@Security/Collector/security.html.twig"));
|
|
|
|
$this->parent->display($context, array_merge($this->blocks, $blocks));
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
}
|
|
|
|
// line 3
|
|
public function block_page_title($context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "page_title"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "page_title"));
|
|
|
|
echo "Security";
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
}
|
|
|
|
// line 5
|
|
public function block_toolbar($context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "toolbar"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "toolbar"));
|
|
|
|
// line 6
|
|
echo " ";
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "token", [])) {
|
|
// line 7
|
|
echo " ";
|
|
$context["is_authenticated"] = ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "enabled", []) && $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "authenticated", []));
|
|
// line 8
|
|
echo " ";
|
|
$context["color_code"] = ((($context["is_authenticated"] ?? $this->getContext($context, "is_authenticated"))) ? ("") : ("yellow"));
|
|
// line 9
|
|
echo " ";
|
|
} else {
|
|
// line 10
|
|
echo " ";
|
|
$context["color_code"] = (($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "enabled", [])) ? ("red") : (""));
|
|
// line 11
|
|
echo " ";
|
|
}
|
|
// line 12
|
|
echo "
|
|
";
|
|
// line 13
|
|
ob_start();
|
|
// line 14
|
|
echo " ";
|
|
echo twig_include($this->env, $context, "@Security/Collector/icon.svg");
|
|
echo "
|
|
<span class=\"sf-toolbar-value\">";
|
|
// line 15
|
|
echo twig_escape_filter($this->env, (($this->getAttribute(($context["collector"] ?? null), "user", [], "any", true, true)) ? (_twig_default_filter($this->getAttribute(($context["collector"] ?? null), "user", []), "n/a")) : ("n/a")), "html", null, true);
|
|
echo "</span>
|
|
";
|
|
$context["icon"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
|
|
// line 17
|
|
echo "
|
|
";
|
|
// line 18
|
|
ob_start();
|
|
// line 19
|
|
echo " ";
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "impersonated", [])) {
|
|
// line 20
|
|
echo " <div class=\"sf-toolbar-info-group\">
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Impersonator</b>
|
|
<span>";
|
|
// line 23
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "impersonatorUser", []), "html", null, true);
|
|
echo "</span>
|
|
</div>
|
|
</div>
|
|
";
|
|
}
|
|
// line 27
|
|
echo "
|
|
<div class=\"sf-toolbar-info-group\">
|
|
";
|
|
// line 29
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "enabled", [])) {
|
|
// line 30
|
|
echo " ";
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "token", [])) {
|
|
// line 31
|
|
echo " <div class=\"sf-toolbar-info-piece\">
|
|
<b>Logged in as</b>
|
|
<span>";
|
|
// line 33
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "user", []), "html", null, true);
|
|
echo "</span>
|
|
</div>
|
|
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Authenticated</b>
|
|
<span class=\"sf-toolbar-status sf-toolbar-status-";
|
|
// line 38
|
|
echo ((($context["is_authenticated"] ?? $this->getContext($context, "is_authenticated"))) ? ("green") : ("red"));
|
|
echo "\">";
|
|
echo ((($context["is_authenticated"] ?? $this->getContext($context, "is_authenticated"))) ? ("Yes") : ("No"));
|
|
echo "</span>
|
|
</div>
|
|
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Token class</b>
|
|
<span>";
|
|
// line 43
|
|
echo $this->env->getExtension('Symfony\Bridge\Twig\Extension\CodeExtension')->abbrClass($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "tokenClass", []));
|
|
echo "</span>
|
|
</div>
|
|
";
|
|
} else {
|
|
// line 46
|
|
echo " <div class=\"sf-toolbar-info-piece\">
|
|
<b>Authenticated</b>
|
|
<span class=\"sf-toolbar-status sf-toolbar-status-red\">No</span>
|
|
</div>
|
|
";
|
|
}
|
|
// line 51
|
|
echo "
|
|
";
|
|
// line 52
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", [])) {
|
|
// line 53
|
|
echo " <div class=\"sf-toolbar-info-piece\">
|
|
<b>Firewall name</b>
|
|
<span>";
|
|
// line 55
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "name", []), "html", null, true);
|
|
echo "</span>
|
|
</div>
|
|
";
|
|
}
|
|
// line 58
|
|
echo "
|
|
";
|
|
// line 59
|
|
if (($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "token", []) && $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "logoutUrl", []))) {
|
|
// line 60
|
|
echo " <div class=\"sf-toolbar-info-piece\">
|
|
<b>Actions</b>
|
|
<span>
|
|
<a href=\"";
|
|
// line 63
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "logoutUrl", []), "html", null, true);
|
|
echo "\">Logout</a>
|
|
";
|
|
// line 64
|
|
if (($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "impersonated", []) && $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "impersonationExitPath", []))) {
|
|
// line 65
|
|
echo " | <a href=\"";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "impersonationExitPath", []), "html", null, true);
|
|
echo "\">Exit impersonation</a>
|
|
";
|
|
}
|
|
// line 67
|
|
echo " </span>
|
|
</div>
|
|
";
|
|
}
|
|
// line 70
|
|
echo " ";
|
|
} else {
|
|
// line 71
|
|
echo " <div class=\"sf-toolbar-info-piece\">
|
|
<span>The security is disabled.</span>
|
|
</div>
|
|
";
|
|
}
|
|
// line 75
|
|
echo " </div>
|
|
";
|
|
$context["text"] = ('' === $tmp = ob_get_clean()) ? '' : new Markup($tmp, $this->env->getCharset());
|
|
// line 77
|
|
echo "
|
|
";
|
|
// line 78
|
|
echo twig_include($this->env, $context, "@WebProfiler/Profiler/toolbar_item.html.twig", ["link" => ($context["profiler_url"] ?? $this->getContext($context, "profiler_url")), "status" => ($context["color_code"] ?? $this->getContext($context, "color_code"))]);
|
|
echo "
|
|
";
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
}
|
|
|
|
// line 81
|
|
public function block_menu($context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "menu"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "menu"));
|
|
|
|
// line 82
|
|
echo " <span class=\"label ";
|
|
echo ((( !$this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "enabled", []) || !$this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "token", []))) ? ("disabled") : (""));
|
|
echo "\">
|
|
<span class=\"icon\">";
|
|
// line 83
|
|
echo twig_include($this->env, $context, "@Security/Collector/icon.svg");
|
|
echo "</span>
|
|
<strong>Security</strong>
|
|
</span>
|
|
";
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
}
|
|
|
|
// line 88
|
|
public function block_panel($context, array $blocks = [])
|
|
{
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e = $this->env->getExtension("Symfony\\Bundle\\WebProfilerBundle\\Twig\\WebProfilerExtension");
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->enter($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "panel"));
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02 = $this->env->getExtension("Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension");
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->enter($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block", "panel"));
|
|
|
|
// line 89
|
|
echo " <h2>Security Token</h2>
|
|
|
|
";
|
|
// line 91
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "enabled", [])) {
|
|
// line 92
|
|
echo " ";
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "token", [])) {
|
|
// line 93
|
|
echo " <div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 95
|
|
echo twig_escape_filter($this->env, ((($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "user", []) == "anon.")) ? ("Anonymous") : ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "user", []))), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"label\">Username</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 100
|
|
echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "authenticated", [])) ? ("yes") : ("no"))) . ".svg"));
|
|
echo "</span>
|
|
<span class=\"label\">Authenticated</span>
|
|
</div>
|
|
</div>
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope=\"col\" class=\"key\">Property</th>
|
|
<th scope=\"col\">Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>Roles</th>
|
|
<td>
|
|
";
|
|
// line 116
|
|
echo ((twig_test_empty($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "roles", []))) ? ("none") : (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "roles", []), 1])));
|
|
echo "
|
|
|
|
";
|
|
// line 118
|
|
if (( !$this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "authenticated", []) && twig_test_empty($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "roles", [])))) {
|
|
// line 119
|
|
echo " <p class=\"help\">User is not authenticated probably because they have no roles.</p>
|
|
";
|
|
}
|
|
// line 121
|
|
echo " </td>
|
|
</tr>
|
|
|
|
";
|
|
// line 124
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "supportsRoleHierarchy", [])) {
|
|
// line 125
|
|
echo " <tr>
|
|
<th>Inherited Roles</th>
|
|
<td>";
|
|
// line 127
|
|
echo ((twig_test_empty($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "inheritedRoles", []))) ? ("none") : (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "inheritedRoles", []), 1])));
|
|
echo "</td>
|
|
</tr>
|
|
";
|
|
}
|
|
// line 130
|
|
echo "
|
|
";
|
|
// line 131
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "token", [])) {
|
|
// line 132
|
|
echo " <tr>
|
|
<th>Token</th>
|
|
<td>";
|
|
// line 134
|
|
echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "token", [])]);
|
|
echo "</td>
|
|
</tr>
|
|
";
|
|
}
|
|
// line 137
|
|
echo " </tbody>
|
|
</table>
|
|
";
|
|
} elseif ($this->getAttribute( // line 139
|
|
($context["collector"] ?? $this->getContext($context, "collector")), "enabled", [])) {
|
|
// line 140
|
|
echo " <div class=\"empty\">
|
|
<p>There is no security token.</p>
|
|
</div>
|
|
";
|
|
}
|
|
// line 144
|
|
echo "
|
|
|
|
<h2>Security Firewall</h2>
|
|
|
|
";
|
|
// line 148
|
|
if ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", [])) {
|
|
// line 149
|
|
echo " <div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 151
|
|
echo twig_escape_filter($this->env, $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "name", []), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"label\">Name</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 155
|
|
echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "security_enabled", [])) ? ("yes") : ("no"))) . ".svg"));
|
|
echo "</span>
|
|
<span class=\"label\">Security enabled</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 159
|
|
echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "stateless", [])) ? ("yes") : ("no"))) . ".svg"));
|
|
echo "</span>
|
|
<span class=\"label\">Stateless</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 163
|
|
echo twig_include($this->env, $context, (("@WebProfiler/Icon/" . (($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "allows_anonymous", [])) ? ("yes") : ("no"))) . ".svg"));
|
|
echo "</span>
|
|
<span class=\"label\">Allows anonymous</span>
|
|
</div>
|
|
</div>
|
|
|
|
";
|
|
// line 168
|
|
if ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "security_enabled", [])) {
|
|
// line 169
|
|
echo " <h4>Configuration</h4>
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope=\"col\" class=\"key\">Key</th>
|
|
<th scope=\"col\">Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>provider</th>
|
|
<td>";
|
|
// line 181
|
|
echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "provider", [])) ? ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "provider", [])) : ("(none)")), "html", null, true);
|
|
echo "</td>
|
|
</tr>
|
|
<tr>
|
|
<th>context</th>
|
|
<td>";
|
|
// line 185
|
|
echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "context", [])) ? ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "context", [])) : ("(none)")), "html", null, true);
|
|
echo "</td>
|
|
</tr>
|
|
<tr>
|
|
<th>entry_point</th>
|
|
<td>";
|
|
// line 189
|
|
echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "entry_point", [])) ? ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "entry_point", [])) : ("(none)")), "html", null, true);
|
|
echo "</td>
|
|
</tr>
|
|
<tr>
|
|
<th>user_checker</th>
|
|
<td>";
|
|
// line 193
|
|
echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "user_checker", [])) ? ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "user_checker", [])) : ("(none)")), "html", null, true);
|
|
echo "</td>
|
|
</tr>
|
|
<tr>
|
|
<th>access_denied_handler</th>
|
|
<td>";
|
|
// line 197
|
|
echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "access_denied_handler", [])) ? ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "access_denied_handler", [])) : ("(none)")), "html", null, true);
|
|
echo "</td>
|
|
</tr>
|
|
<tr>
|
|
<th>access_denied_url</th>
|
|
<td>";
|
|
// line 201
|
|
echo twig_escape_filter($this->env, (($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "access_denied_url", [])) ? ($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "access_denied_url", [])) : ("(none)")), "html", null, true);
|
|
echo "</td>
|
|
</tr>
|
|
<tr>
|
|
<th>listeners</th>
|
|
<td>";
|
|
// line 205
|
|
echo ((twig_test_empty($this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "listeners", []))) ? ("(none)") : (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $this->getAttribute($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "firewall", []), "listeners", []), 1])));
|
|
echo "</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h4>Listeners</h4>
|
|
|
|
";
|
|
// line 212
|
|
if (twig_test_empty((($this->getAttribute(($context["collector"] ?? null), "listeners", [], "any", true, true)) ? (_twig_default_filter($this->getAttribute(($context["collector"] ?? null), "listeners", []), [])) : ([])))) {
|
|
// line 213
|
|
echo " <div class=\"empty\">
|
|
<p>No security listeners have been recorded. Check that debugging is enabled in the kernel.</p>
|
|
</div>
|
|
";
|
|
} else {
|
|
// line 217
|
|
echo " <table>
|
|
<thead>
|
|
<tr>
|
|
<th>Listener</th>
|
|
<th>Duration</th>
|
|
<th>Response</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
";
|
|
// line 226
|
|
$context["previous_event"] = twig_first($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "listeners", []));
|
|
// line 227
|
|
echo " ";
|
|
$context['_parent'] = $context;
|
|
$context['_seq'] = twig_ensure_traversable($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "listeners", []));
|
|
$context['loop'] = [
|
|
'parent' => $context['_parent'],
|
|
'index0' => 0,
|
|
'index' => 1,
|
|
'first' => true,
|
|
];
|
|
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
|
|
$length = count($context['_seq']);
|
|
$context['loop']['revindex0'] = $length - 1;
|
|
$context['loop']['revindex'] = $length;
|
|
$context['loop']['length'] = $length;
|
|
$context['loop']['last'] = 1 === $length;
|
|
}
|
|
foreach ($context['_seq'] as $context["_key"] => $context["listener"]) {
|
|
// line 228
|
|
echo " ";
|
|
if (($this->getAttribute($context["loop"], "first", []) || ($context["listener"] != ($context["previous_event"] ?? $this->getContext($context, "previous_event"))))) {
|
|
// line 229
|
|
echo " ";
|
|
if ( !$this->getAttribute($context["loop"], "first", [])) {
|
|
// line 230
|
|
echo " </tbody>
|
|
";
|
|
}
|
|
// line 232
|
|
echo "
|
|
<tbody>
|
|
";
|
|
// line 234
|
|
$context["previous_event"] = $context["listener"];
|
|
// line 235
|
|
echo " ";
|
|
}
|
|
// line 236
|
|
echo "
|
|
<tr>
|
|
<td class=\"font-normal\">";
|
|
// line 238
|
|
echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $this->getAttribute($context["listener"], "stub", [])]);
|
|
echo "</td>
|
|
<td class=\"no-wrap\">";
|
|
// line 239
|
|
echo twig_escape_filter($this->env, sprintf("%0.2f", ($this->getAttribute($context["listener"], "time", []) * 1000)), "html", null, true);
|
|
echo " ms</td>
|
|
<td class=\"font-normal\">";
|
|
// line 240
|
|
echo (($this->getAttribute($context["listener"], "response", [])) ? (call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $this->getAttribute($context["listener"], "response", [])])) : ("(none)"));
|
|
echo "</td>
|
|
</tr>
|
|
|
|
";
|
|
// line 243
|
|
if ($this->getAttribute($context["loop"], "last", [])) {
|
|
// line 244
|
|
echo " </tbody>
|
|
";
|
|
}
|
|
// line 246
|
|
echo " ";
|
|
++$context['loop']['index0'];
|
|
++$context['loop']['index'];
|
|
$context['loop']['first'] = false;
|
|
if (isset($context['loop']['length'])) {
|
|
--$context['loop']['revindex0'];
|
|
--$context['loop']['revindex'];
|
|
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
|
|
}
|
|
}
|
|
$_parent = $context['_parent'];
|
|
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['listener'], $context['_parent'], $context['loop']);
|
|
$context = array_intersect_key($context, $_parent) + $_parent;
|
|
// line 247
|
|
echo " </table>
|
|
";
|
|
}
|
|
// line 249
|
|
echo " ";
|
|
}
|
|
// line 250
|
|
echo " ";
|
|
} elseif ($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "enabled", [])) {
|
|
// line 251
|
|
echo " <div class=\"empty\">
|
|
<p>This request was not covered by any firewall.</p>
|
|
</div>
|
|
";
|
|
}
|
|
// line 255
|
|
echo " ";
|
|
} else {
|
|
// line 256
|
|
echo " <div class=\"empty\">
|
|
<p>The security component is disabled.</p>
|
|
</div>
|
|
";
|
|
}
|
|
// line 260
|
|
echo "
|
|
";
|
|
// line 261
|
|
if ( !twig_test_empty((($this->getAttribute(($context["collector"] ?? null), "voters", [], "any", true, true)) ? (_twig_default_filter($this->getAttribute(($context["collector"] ?? null), "voters", []), [])) : ([])))) {
|
|
// line 262
|
|
echo " <h2>Security Voters <small>(";
|
|
echo twig_escape_filter($this->env, twig_length_filter($this->env, $this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "voters", [])), "html", null, true);
|
|
echo ")</small></h2>
|
|
|
|
<div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">";
|
|
// line 266
|
|
echo twig_escape_filter($this->env, (($this->getAttribute(($context["collector"] ?? null), "voterStrategy", [], "any", true, true)) ? (_twig_default_filter($this->getAttribute(($context["collector"] ?? null), "voterStrategy", []), "unknown")) : ("unknown")), "html", null, true);
|
|
echo "</span>
|
|
<span class=\"label\">Strategy</span>
|
|
</div>
|
|
</div>
|
|
|
|
<table class=\"voters\">
|
|
<thead>
|
|
<tr>
|
|
<th>#</th>
|
|
<th>Voter class</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
";
|
|
// line 280
|
|
$context['_parent'] = $context;
|
|
$context['_seq'] = twig_ensure_traversable($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "voters", []));
|
|
$context['loop'] = [
|
|
'parent' => $context['_parent'],
|
|
'index0' => 0,
|
|
'index' => 1,
|
|
'first' => true,
|
|
];
|
|
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
|
|
$length = count($context['_seq']);
|
|
$context['loop']['revindex0'] = $length - 1;
|
|
$context['loop']['revindex'] = $length;
|
|
$context['loop']['length'] = $length;
|
|
$context['loop']['last'] = 1 === $length;
|
|
}
|
|
foreach ($context['_seq'] as $context["_key"] => $context["voter"]) {
|
|
// line 281
|
|
echo " <tr>
|
|
<td class=\"font-normal text-small text-muted nowrap\">";
|
|
// line 282
|
|
echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", []), "html", null, true);
|
|
echo "</td>
|
|
<td class=\"font-normal\">";
|
|
// line 283
|
|
echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $context["voter"]]);
|
|
echo "</td>
|
|
</tr>
|
|
";
|
|
++$context['loop']['index0'];
|
|
++$context['loop']['index'];
|
|
$context['loop']['first'] = false;
|
|
if (isset($context['loop']['length'])) {
|
|
--$context['loop']['revindex0'];
|
|
--$context['loop']['revindex'];
|
|
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
|
|
}
|
|
}
|
|
$_parent = $context['_parent'];
|
|
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['voter'], $context['_parent'], $context['loop']);
|
|
$context = array_intersect_key($context, $_parent) + $_parent;
|
|
// line 286
|
|
echo " </tbody>
|
|
</table>
|
|
";
|
|
}
|
|
// line 289
|
|
echo "
|
|
";
|
|
// line 290
|
|
if ( !twig_test_empty((($this->getAttribute(($context["collector"] ?? null), "accessDecisionLog", [], "any", true, true)) ? (_twig_default_filter($this->getAttribute(($context["collector"] ?? null), "accessDecisionLog", []), [])) : ([])))) {
|
|
// line 291
|
|
echo " <h2>Access decision log</h2>
|
|
|
|
<table class=\"decision-log\">
|
|
<col style=\"width: 30px\">
|
|
<col style=\"width: 120px\">
|
|
<col style=\"width: 25%\">
|
|
<col style=\"width: 60%\">
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>#</th>
|
|
<th>Result</th>
|
|
<th>Attributes</th>
|
|
<th>Object</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
";
|
|
// line 309
|
|
$context['_parent'] = $context;
|
|
$context['_seq'] = twig_ensure_traversable($this->getAttribute(($context["collector"] ?? $this->getContext($context, "collector")), "accessDecisionLog", []));
|
|
$context['loop'] = [
|
|
'parent' => $context['_parent'],
|
|
'index0' => 0,
|
|
'index' => 1,
|
|
'first' => true,
|
|
];
|
|
if (is_array($context['_seq']) || (is_object($context['_seq']) && $context['_seq'] instanceof \Countable)) {
|
|
$length = count($context['_seq']);
|
|
$context['loop']['revindex0'] = $length - 1;
|
|
$context['loop']['revindex'] = $length;
|
|
$context['loop']['length'] = $length;
|
|
$context['loop']['last'] = 1 === $length;
|
|
}
|
|
foreach ($context['_seq'] as $context["_key"] => $context["decision"]) {
|
|
// line 310
|
|
echo " <tr>
|
|
<td class=\"font-normal text-small text-muted nowrap\">";
|
|
// line 311
|
|
echo twig_escape_filter($this->env, $this->getAttribute($context["loop"], "index", []), "html", null, true);
|
|
echo "</td>
|
|
<td class=\"font-normal\">
|
|
";
|
|
// line 313
|
|
echo (($this->getAttribute($context["decision"], "result", [])) ? ("<span class=\"label status-success same-width\">GRANTED</span>") : ("<span class=\"label status-error same-width\">DENIED</span>"));
|
|
// line 316
|
|
echo "
|
|
</td>
|
|
<td>
|
|
";
|
|
// line 319
|
|
if ((twig_length_filter($this->env, $this->getAttribute($context["decision"], "attributes", [])) == 1)) {
|
|
// line 320
|
|
echo " ";
|
|
$context["attribute"] = twig_first($this->env, $this->getAttribute($context["decision"], "attributes", []));
|
|
// line 321
|
|
echo " ";
|
|
if ($this->getAttribute(($context["attribute"] ?? null), "expression", [], "any", true, true)) {
|
|
// line 322
|
|
echo " Expression: <pre><code>";
|
|
echo twig_escape_filter($this->env, $this->getAttribute(($context["attribute"] ?? $this->getContext($context, "attribute")), "expression", []), "html", null, true);
|
|
echo "</code></pre>
|
|
";
|
|
} elseif (($this->getAttribute( // line 323
|
|
($context["attribute"] ?? $this->getContext($context, "attribute")), "type", []) == "string")) {
|
|
// line 324
|
|
echo " ";
|
|
echo twig_escape_filter($this->env, ($context["attribute"] ?? $this->getContext($context, "attribute")), "html", null, true);
|
|
echo "
|
|
";
|
|
} else {
|
|
// line 326
|
|
echo " ";
|
|
echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, ($context["attribute"] ?? $this->getContext($context, "attribute"))]);
|
|
echo "
|
|
";
|
|
}
|
|
// line 328
|
|
echo " ";
|
|
} else {
|
|
// line 329
|
|
echo " ";
|
|
echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $this->getAttribute($context["decision"], "attributes", [])]);
|
|
echo "
|
|
";
|
|
}
|
|
// line 331
|
|
echo " </td>
|
|
<td>";
|
|
// line 332
|
|
echo call_user_func_array($this->env->getFunction('profiler_dump')->getCallable(), [$this->env, $this->getAttribute($context["decision"], "seek", [0 => "object"], "method")]);
|
|
echo "</td>
|
|
</tr>
|
|
";
|
|
++$context['loop']['index0'];
|
|
++$context['loop']['index'];
|
|
$context['loop']['first'] = false;
|
|
if (isset($context['loop']['length'])) {
|
|
--$context['loop']['revindex0'];
|
|
--$context['loop']['revindex'];
|
|
$context['loop']['last'] = 0 === $context['loop']['revindex0'];
|
|
}
|
|
}
|
|
$_parent = $context['_parent'];
|
|
unset($context['_seq'], $context['_iterated'], $context['_key'], $context['decision'], $context['_parent'], $context['loop']);
|
|
$context = array_intersect_key($context, $_parent) + $_parent;
|
|
// line 335
|
|
echo " </tbody>
|
|
</table>
|
|
";
|
|
}
|
|
|
|
$__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02->leave($__internal_319393461309892924ff6e74d6d6e64287df64b63545b994e100d4ab223aed02_prof);
|
|
|
|
|
|
$__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e->leave($__internal_085b0142806202599c7fe3b329164a92397d8978207a37e79d70b8c52599e33e_prof);
|
|
|
|
}
|
|
|
|
public function getTemplateName()
|
|
{
|
|
return "@Security/Collector/security.html.twig";
|
|
}
|
|
|
|
public function isTraitable()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public function getDebugInfo()
|
|
{
|
|
return array ( 799 => 335, 782 => 332, 779 => 331, 773 => 329, 770 => 328, 764 => 326, 758 => 324, 756 => 323, 751 => 322, 748 => 321, 745 => 320, 743 => 319, 738 => 316, 736 => 313, 731 => 311, 728 => 310, 711 => 309, 691 => 291, 689 => 290, 686 => 289, 681 => 286, 664 => 283, 660 => 282, 657 => 281, 640 => 280, 623 => 266, 615 => 262, 613 => 261, 610 => 260, 604 => 256, 601 => 255, 595 => 251, 592 => 250, 589 => 249, 585 => 247, 571 => 246, 567 => 244, 565 => 243, 559 => 240, 555 => 239, 551 => 238, 547 => 236, 544 => 235, 542 => 234, 538 => 232, 534 => 230, 531 => 229, 528 => 228, 510 => 227, 508 => 226, 497 => 217, 491 => 213, 489 => 212, 479 => 205, 472 => 201, 465 => 197, 458 => 193, 451 => 189, 444 => 185, 437 => 181, 423 => 169, 421 => 168, 413 => 163, 406 => 159, 399 => 155, 392 => 151, 388 => 149, 386 => 148, 380 => 144, 374 => 140, 372 => 139, 368 => 137, 362 => 134, 358 => 132, 356 => 131, 353 => 130, 347 => 127, 343 => 125, 341 => 124, 336 => 121, 332 => 119, 330 => 118, 325 => 116, 306 => 100, 298 => 95, 294 => 93, 291 => 92, 289 => 91, 285 => 89, 276 => 88, 262 => 83, 257 => 82, 248 => 81, 236 => 78, 233 => 77, 229 => 75, 223 => 71, 220 => 70, 215 => 67, 209 => 65, 207 => 64, 203 => 63, 198 => 60, 196 => 59, 193 => 58, 187 => 55, 183 => 53, 181 => 52, 178 => 51, 171 => 46, 165 => 43, 155 => 38, 147 => 33, 143 => 31, 140 => 30, 138 => 29, 134 => 27, 127 => 23, 122 => 20, 119 => 19, 117 => 18, 114 => 17, 109 => 15, 104 => 14, 102 => 13, 99 => 12, 96 => 11, 93 => 10, 90 => 9, 87 => 8, 84 => 7, 81 => 6, 72 => 5, 54 => 3, 22 => 1,);
|
|
}
|
|
|
|
/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */
|
|
public function getSource()
|
|
{
|
|
@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);
|
|
|
|
return $this->getSourceContext()->getCode();
|
|
}
|
|
|
|
public function getSourceContext()
|
|
{
|
|
return new Source("{% extends '@WebProfiler/Profiler/layout.html.twig' %}
|
|
|
|
{% block page_title 'Security' %}
|
|
|
|
{% block toolbar %}
|
|
{% if collector.token %}
|
|
{% set is_authenticated = collector.enabled and collector.authenticated %}
|
|
{% set color_code = is_authenticated ? '' : 'yellow' %}
|
|
{% else %}
|
|
{% set color_code = collector.enabled ? 'red' : '' %}
|
|
{% endif %}
|
|
|
|
{% set icon %}
|
|
{{ include('@Security/Collector/icon.svg') }}
|
|
<span class=\"sf-toolbar-value\">{{ collector.user|default('n/a') }}</span>
|
|
{% endset %}
|
|
|
|
{% set text %}
|
|
{% if collector.impersonated %}
|
|
<div class=\"sf-toolbar-info-group\">
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Impersonator</b>
|
|
<span>{{ collector.impersonatorUser }}</span>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class=\"sf-toolbar-info-group\">
|
|
{% if collector.enabled %}
|
|
{% if collector.token %}
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Logged in as</b>
|
|
<span>{{ collector.user }}</span>
|
|
</div>
|
|
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Authenticated</b>
|
|
<span class=\"sf-toolbar-status sf-toolbar-status-{{ is_authenticated ? 'green' : 'red' }}\">{{ is_authenticated ? 'Yes' : 'No' }}</span>
|
|
</div>
|
|
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Token class</b>
|
|
<span>{{ collector.tokenClass|abbr_class }}</span>
|
|
</div>
|
|
{% else %}
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Authenticated</b>
|
|
<span class=\"sf-toolbar-status sf-toolbar-status-red\">No</span>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if collector.firewall %}
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Firewall name</b>
|
|
<span>{{ collector.firewall.name }}</span>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if collector.token and collector.logoutUrl %}
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<b>Actions</b>
|
|
<span>
|
|
<a href=\"{{ collector.logoutUrl }}\">Logout</a>
|
|
{% if collector.impersonated and collector.impersonationExitPath %}
|
|
| <a href=\"{{ collector.impersonationExitPath }}\">Exit impersonation</a>
|
|
{% endif %}
|
|
</span>
|
|
</div>
|
|
{% endif %}
|
|
{% else %}
|
|
<div class=\"sf-toolbar-info-piece\">
|
|
<span>The security is disabled.</span>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endset %}
|
|
|
|
{{ include('@WebProfiler/Profiler/toolbar_item.html.twig', { link: profiler_url, status: color_code }) }}
|
|
{% endblock %}
|
|
|
|
{% block menu %}
|
|
<span class=\"label {{ not collector.enabled or not collector.token ? 'disabled' }}\">
|
|
<span class=\"icon\">{{ include('@Security/Collector/icon.svg') }}</span>
|
|
<strong>Security</strong>
|
|
</span>
|
|
{% endblock %}
|
|
|
|
{% block panel %}
|
|
<h2>Security Token</h2>
|
|
|
|
{% if collector.enabled %}
|
|
{% if collector.token %}
|
|
<div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ collector.user == 'anon.' ? 'Anonymous' : collector.user }}</span>
|
|
<span class=\"label\">Username</span>
|
|
</div>
|
|
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ include('@WebProfiler/Icon/' ~ (collector.authenticated ? 'yes' : 'no') ~ '.svg') }}</span>
|
|
<span class=\"label\">Authenticated</span>
|
|
</div>
|
|
</div>
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope=\"col\" class=\"key\">Property</th>
|
|
<th scope=\"col\">Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>Roles</th>
|
|
<td>
|
|
{{ collector.roles is empty ? 'none' : profiler_dump(collector.roles, maxDepth=1) }}
|
|
|
|
{% if not collector.authenticated and collector.roles is empty %}
|
|
<p class=\"help\">User is not authenticated probably because they have no roles.</p>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
|
|
{% if collector.supportsRoleHierarchy %}
|
|
<tr>
|
|
<th>Inherited Roles</th>
|
|
<td>{{ collector.inheritedRoles is empty ? 'none' : profiler_dump(collector.inheritedRoles, maxDepth=1) }}</td>
|
|
</tr>
|
|
{% endif %}
|
|
|
|
{% if collector.token %}
|
|
<tr>
|
|
<th>Token</th>
|
|
<td>{{ profiler_dump(collector.token) }}</td>
|
|
</tr>
|
|
{% endif %}
|
|
</tbody>
|
|
</table>
|
|
{% elseif collector.enabled %}
|
|
<div class=\"empty\">
|
|
<p>There is no security token.</p>
|
|
</div>
|
|
{% endif %}
|
|
|
|
|
|
<h2>Security Firewall</h2>
|
|
|
|
{% if collector.firewall %}
|
|
<div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ collector.firewall.name }}</span>
|
|
<span class=\"label\">Name</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ include('@WebProfiler/Icon/' ~ (collector.firewall.security_enabled ? 'yes' : 'no') ~ '.svg') }}</span>
|
|
<span class=\"label\">Security enabled</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ include('@WebProfiler/Icon/' ~ (collector.firewall.stateless ? 'yes' : 'no') ~ '.svg') }}</span>
|
|
<span class=\"label\">Stateless</span>
|
|
</div>
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ include('@WebProfiler/Icon/' ~ (collector.firewall.allows_anonymous ? 'yes' : 'no') ~ '.svg') }}</span>
|
|
<span class=\"label\">Allows anonymous</span>
|
|
</div>
|
|
</div>
|
|
|
|
{% if collector.firewall.security_enabled %}
|
|
<h4>Configuration</h4>
|
|
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th scope=\"col\" class=\"key\">Key</th>
|
|
<th scope=\"col\">Value</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<th>provider</th>
|
|
<td>{{ collector.firewall.provider ?: '(none)' }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>context</th>
|
|
<td>{{ collector.firewall.context ?: '(none)' }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>entry_point</th>
|
|
<td>{{ collector.firewall.entry_point ?: '(none)' }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>user_checker</th>
|
|
<td>{{ collector.firewall.user_checker ?: '(none)' }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>access_denied_handler</th>
|
|
<td>{{ collector.firewall.access_denied_handler ?: '(none)' }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>access_denied_url</th>
|
|
<td>{{ collector.firewall.access_denied_url ?: '(none)' }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>listeners</th>
|
|
<td>{{ collector.firewall.listeners is empty ? '(none)' : profiler_dump(collector.firewall.listeners, maxDepth=1) }}</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h4>Listeners</h4>
|
|
|
|
{% if collector.listeners|default([]) is empty %}
|
|
<div class=\"empty\">
|
|
<p>No security listeners have been recorded. Check that debugging is enabled in the kernel.</p>
|
|
</div>
|
|
{% else %}
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Listener</th>
|
|
<th>Duration</th>
|
|
<th>Response</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
{% set previous_event = (collector.listeners|first) %}
|
|
{% for listener in collector.listeners %}
|
|
{% if loop.first or listener != previous_event %}
|
|
{% if not loop.first %}
|
|
</tbody>
|
|
{% endif %}
|
|
|
|
<tbody>
|
|
{% set previous_event = listener %}
|
|
{% endif %}
|
|
|
|
<tr>
|
|
<td class=\"font-normal\">{{ profiler_dump(listener.stub) }}</td>
|
|
<td class=\"no-wrap\">{{ '%0.2f'|format(listener.time * 1000) }} ms</td>
|
|
<td class=\"font-normal\">{{ listener.response ? profiler_dump(listener.response) : '(none)' }}</td>
|
|
</tr>
|
|
|
|
{% if loop.last %}
|
|
</tbody>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</table>
|
|
{% endif %}
|
|
{% endif %}
|
|
{% elseif collector.enabled %}
|
|
<div class=\"empty\">
|
|
<p>This request was not covered by any firewall.</p>
|
|
</div>
|
|
{% endif %}
|
|
{% else %}
|
|
<div class=\"empty\">
|
|
<p>The security component is disabled.</p>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if collector.voters|default([]) is not empty %}
|
|
<h2>Security Voters <small>({{ collector.voters|length }})</small></h2>
|
|
|
|
<div class=\"metrics\">
|
|
<div class=\"metric\">
|
|
<span class=\"value\">{{ collector.voterStrategy|default('unknown') }}</span>
|
|
<span class=\"label\">Strategy</span>
|
|
</div>
|
|
</div>
|
|
|
|
<table class=\"voters\">
|
|
<thead>
|
|
<tr>
|
|
<th>#</th>
|
|
<th>Voter class</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
{% for voter in collector.voters %}
|
|
<tr>
|
|
<td class=\"font-normal text-small text-muted nowrap\">{{ loop.index }}</td>
|
|
<td class=\"font-normal\">{{ profiler_dump(voter) }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
|
|
{% if collector.accessDecisionLog|default([]) is not empty %}
|
|
<h2>Access decision log</h2>
|
|
|
|
<table class=\"decision-log\">
|
|
<col style=\"width: 30px\">
|
|
<col style=\"width: 120px\">
|
|
<col style=\"width: 25%\">
|
|
<col style=\"width: 60%\">
|
|
|
|
<thead>
|
|
<tr>
|
|
<th>#</th>
|
|
<th>Result</th>
|
|
<th>Attributes</th>
|
|
<th>Object</th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
{% for decision in collector.accessDecisionLog %}
|
|
<tr>
|
|
<td class=\"font-normal text-small text-muted nowrap\">{{ loop.index }}</td>
|
|
<td class=\"font-normal\">
|
|
{{ decision.result
|
|
? '<span class=\"label status-success same-width\">GRANTED</span>'
|
|
: '<span class=\"label status-error same-width\">DENIED</span>'
|
|
}}
|
|
</td>
|
|
<td>
|
|
{% if decision.attributes|length == 1 %}
|
|
{% set attribute = decision.attributes|first %}
|
|
{% if attribute.expression is defined %}
|
|
Expression: <pre><code>{{ attribute.expression }}</code></pre>
|
|
{% elseif attribute.type == 'string' %}
|
|
{{ attribute }}
|
|
{% else %}
|
|
{{ profiler_dump(attribute) }}
|
|
{% endif %}
|
|
{% else %}
|
|
{{ profiler_dump(decision.attributes) }}
|
|
{% endif %}
|
|
</td>
|
|
<td>{{ profiler_dump(decision.seek('object')) }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
{% endblock %}
|
|
", "@Security/Collector/security.html.twig", "/Volumes/Dev/Sources/Clients/taome/Nouveau_site/www/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views/Collector/security.html.twig");
|
|
}
|
|
}
|