Получение имени пользователя подражателя, но уведомление об устаревшем коде - PullRequest
0 голосов
/ 18 октября 2019

Я пишу шаблон в twig для моего проекта symfony4. Я хочу получить доступ к объекту пользователя пользователя подражателя. НЕ пользователь, выдававший себя за другого.

Я нашел решение, но и PhpStorm, и панель инструментов Symfony говорят мне, что мой код устарел:

{% if is_granted("ROLE_PREVIOUS_ADMIN") %}
    {% for role in app.token.roles %}
        {% if role.role == "ROLE_PREVIOUS_ADMIN" %}
            {{ role.source.user.username }}
        {% endif %}
    {% endfor %}
{% endif %}

Хотямой код работает так, как ожидалось ( not ), на панели инструментов веб-отладки появляются следующие два сообщения об ошибках:

10: 16: 10 php Пользователь устарел: Symfony \ Component\ Security \ Core \ Authentication \ Token \ AbstractToken :: getRoles () устарел, начиная с Symfony 4.3. Вместо этого используйте метод getRoleNames ().

и

10: 16: 10 php Пользователь устарел: "Symfony \ Component \ Security \ Core \ Role \ SwitchUserRole"класс устарел с версии 4.3 и будет удален в 5.0. Вместо этого используйте строки в качестве ролей.

1 Ответ

1 голос
/ 18 октября 2019

Я нашел решение сам! Я посмотрел на код https://symfony.com/doc/current/security/impersonating_user.html#finding-the-original-user и применил функции к переменной app.token в twig.

Забудьте, что для цикла! Просто используйте:

{{ app.token.getOriginalToken().getUser() }}

Или коротко:

{{ app.token.originalToken.user }}
...