Symfony получает оригинального пользователя после подражания другому - PullRequest
0 голосов
/ 25 сентября 2018

Я использую Symfony 3.4 и работаю с функцией «Олицетворение пользователя»: https://symfony.com/doc/3.4/security/impersonating_user.html

Мне нужно, когда я выдаю себя за пользователя, чтобы получить первоначального пользователя .. Я не знаю, как можноЯ делаю это.

Во время олицетворения пользователю предоставляется специальная роль ROLE_PREVIOUS_ADMIN, есть ли способ изменить эту роль?

Например, если мой первоначальный пользователь - ROLE_ADMIN, специальная роль - ROLE_PREVIOUS_ADMIN, но если мой первоначальный пользователь - ROLE_SOMETHING, пользовательская роль должна быть: ROLE_PREVIOUS_SOMETHING

Мне просто нужен способполучить первоначального пользователя или хотя бы получить его роли.

Спасибо!

1 Ответ

0 голосов
/ 25 сентября 2018

Я нашел решение:

public function isImpersonatorAdmin()
{
    $impersonatorUser = false;

    if ($this->security->isGranted('ROLE_PREVIOUS_ADMIN')) {
        foreach ($this->security->getToken()->getRoles() as $role) {
            if ($role instanceof SwitchUserRole) {
                $impersonatorUser = $role->getSource()->getUser()->hasRole('ROLE_ADMIN');
                break;
            }
        }
    }

    return $impersonatorUser;
}

Эта функция возвращает true, если имитатором является ROLE_ADMIN.

...