/
SecurityDataCollector.php
52 lines (42 loc) · 1.61 KB
/
SecurityDataCollector.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
namespace JMS\DebuggingBundle\DataCollector;
use JMS\DebuggingBundle\Security\TraceableFirewall;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector
as BaseSecurityDataCollector;
class SecurityDataCollector extends BaseSecurityDataCollector
{
private $firewall;
public function setFirewall(TraceableFirewall $firewall)
{
$this->firewall = $firewall;
}
public function collect(Request $request, Response $response, \Exception $ex = null)
{
parent::collect($request, $response, $ex);
$this->data['context_trace'] = $this->firewall->getContextTrace();
$listeners = array();
$listenerTrace = $this->firewall->getListenerTrace();
$handlingListener = $this->firewall->getHandlingListener();
foreach ($this->firewall->getListeners() ?: array() as $listener) {
$data = array(
'class' => $class = get_class($listener),
'short_name' => substr($class, strrpos($class, '\\') + 1),
'called' => isset($listenerTrace[$listener]),
'reason' => isset($listenerTrace[$listener]) ? $listenerTrace[$listener]['reason'] : null,
'handled' => $listener === $handlingListener,
);
$listeners[] = $data;
}
$this->data['listeners'] = $listeners;
}
public function getContextTrace()
{
return $this->data['context_trace'];
}
public function getListeners()
{
return $this->data['listeners'];
}
}