|
12 | 12 | namespace Symfony\Bundle\SecurityBundle\DataCollector;
|
13 | 13 |
|
14 | 14 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
| 15 | +use Symfony\Component\Security\Core\Role\Role; |
15 | 16 | use Symfony\Component\Security\Core\Role\RoleHierarchyInterface;
|
16 | 17 | use Symfony\Component\HttpFoundation\Request;
|
17 | 18 | use Symfony\Component\HttpFoundation\Response;
|
@@ -117,8 +118,26 @@ public function collect(Request $request, Response $response, \Exception $except
|
117 | 118 | 'token_class' => $this->hasVarDumper ? new ClassStub(get_class($token)) : get_class($token),
|
118 | 119 | 'logout_url' => $logoutUrl,
|
119 | 120 | 'user' => $token->getUsername(),
|
120 |
| - 'roles' => array_map(function (RoleInterface $role) { return $role->getRole(); }, $assignedRoles), |
121 |
| - 'inherited_roles' => array_map(function (RoleInterface $role) { return $role->getRole(); }, $inheritedRoles), |
| 121 | + 'roles' => array_map( |
| 122 | + function ($role) { |
| 123 | + if (!$role instanceof RoleInterface && !$role instanceof Role) { |
| 124 | + throw new \InvalidArgumentException(sprintf('Roles must be instances of %s or %s (%s given).', RoleInterface::class, Role::class, is_object($role) ? get_class($role) : gettype($role))); |
| 125 | + } |
| 126 | + |
| 127 | + return $role->getRole(); |
| 128 | + }, |
| 129 | + $assignedRoles |
| 130 | + ), |
| 131 | + 'inherited_roles' => array_map( |
| 132 | + function ($role) { |
| 133 | + if (!$role instanceof RoleInterface && !$role instanceof Role) { |
| 134 | + throw new \InvalidArgumentException(sprintf('Roles must be instances of %s or %s (%s given).', RoleInterface::class, Role::class, is_object($role) ? get_class($role) : gettype($role))); |
| 135 | + } |
| 136 | + |
| 137 | + return $role->getRole(); |
| 138 | + }, |
| 139 | + $inheritedRoles |
| 140 | + ), |
122 | 141 | 'supports_role_hierarchy' => null !== $this->roleHierarchy,
|
123 | 142 | );
|
124 | 143 | }
|
|
0 commit comments