/
SecurityDataCollector.php
124 lines (111 loc) · 3.04 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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bundle\SecurityBundle\DataCollector;
use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\DataCollector\DataCollector;
/**
* SecurityDataCollector.
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class SecurityDataCollector extends DataCollector
{
private $context;
public function __construct(SecurityContextInterface $context = null)
{
$this->context = $context;
}
/**
* {@inheritdoc}
*/
public function collect(Request $request, Response $response, \Exception $exception = null)
{
if (null === $this->context) {
$this->data = array(
'enabled' => false,
'authenticated' => false,
'token_class' => null,
'user' => '',
'roles' => array(),
);
} elseif (null === $token = $this->context->getToken()) {
$this->data = array(
'enabled' => true,
'authenticated' => false,
'token_class' => null,
'user' => '',
'roles' => array(),
);
} else {
$class = explode('\\', get_class($token));
$this->data = array(
'enabled' => true,
'authenticated' => $token->isAuthenticated(),
'token_class' => end($class),
'user' => $token->getUsername(),
'roles' => array_map(function ($role){ return $role->getRole();}, $token->getRoles()),
);
}
}
/**
* Checks if security is enabled.
*
* @return Boolean true if security is enabled, false otherwise
*/
public function isEnabled()
{
return $this->data['enabled'];
}
/**
* Gets the user.
*
* @return string The user
*/
public function getUser()
{
return $this->data['user'];
}
/**
* Gets the roles of the user.
*
* @return array The roles
*/
public function getRoles()
{
return $this->data['roles'];
}
/**
* Checks if the user is authenticated or not.
*
* @return Boolean true if the user is authenticated, false otherwise
*/
public function isAuthenticated()
{
return $this->data['authenticated'];
}
/**
* Get the class name of the security token (without namespace).
*
* @return String The token
*/
public function getTokenClass()
{
return $this->data['token_class'];
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'security';
}
}