Skip to content

Commit f64b5b5

Browse files
committed
Added an example about how to get the impersonating user object
1 parent e5dbd49 commit f64b5b5

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

cookbook/security/impersonating_user.rst

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,23 @@ to show a link to exit impersonation:
8686
</a>
8787
<?php endif ?>
8888

89+
In some cases you may need to get the object that represents the impersonating
90+
user rather than the impersonated user. Use the following snippet to iterate
91+
over user's roles until you get the ``SwitchUserRole`` related to the
92+
impersonating user::
93+
94+
use Symfony\Component\Security\Core\Role\SwitchUserRole;
95+
96+
$securityContext = $this->get('security.context');
97+
98+
if ($securityContext->isGranted('ROLE_PREVIOUS_ADMIN')) {
99+
foreach ($securityContext->getToken()->getRoles() as $role) {
100+
if ($role instanceof SwitchUserRole) {
101+
$impersonatingUser = $role->getSource()->getUser();
102+
}
103+
}
104+
}
105+
89106
Of course, this feature needs to be made available to a small group of users.
90107
By default, access is restricted to users having the ``ROLE_ALLOWED_TO_SWITCH``
91108
role. The name of this role can be modified via the ``role`` setting. For

0 commit comments

Comments
 (0)