Как получить текущую вошедшую в систему роль Symfony?

Я хочу получить роль пользователя, который в данный момент вошел в систему. Потому что я хочу показать, что в моем навигаторе кто-нибудь может мне помочь?

Мой вопрос о том, как получить текущую роль

что ты пробовал? Также есть в документации ...

treyBake 05.06.2018 11:22

Я попробовал сейчас в своей ветке {{app.user.roles}} и больше ничего не использую AuthorizationCheckerInterface.

Halit Ozdogru 05.06.2018 11:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
6
2
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если я хорошо помню, вы можете получить роли в twig, выполнив {{ app.user && app.user.roles }}, но вы получите множество ролей.

Надеюсь, поможет.

Спасибо за ваш ответ, но эта ошибка возникла, если я напрямую использую {{app.user.roles}} в своей ветке. Это ошибка: во время рендеринга шаблона возникло исключение ("Примечание: массив в строку преобразование ")

Halit Ozdogru 05.06.2018 11:36

да, потому что это массив, и с ним следует так обращаться. Если вы хотите сбросить все роли, вы можете использовать настраиваемый фильтр, например, join (twig.symfony.com/doc/2.x/filters/join.html) или dump (twig.symfony.com/doc/2.x/functions/dump.html)

Webvoid 05.06.2018 11:38

также не забудьте проверить, существует ли пользователь перед доступом к app.user.roles, чтобы избежать нежелательных ошибок =)

Webvoid 05.06.2018 11:39

Но я не хочу отказываться от всех ролей. Я просто хочу показать авторизованную роль.

Halit Ozdogru 05.06.2018 11:40

в Symfony у пользователя есть множество ролей, а не только одна. Если вы УВЕРЕНЫ, что у ваших пользователей всегда будет одна и ОДНА ТОЛЬКО роль, вы можете использовать либо {{ app.user.roles | first }}, либо {{ app.user.roles | last }}.

Webvoid 05.06.2018 11:42

Возможно, это поможет вам лучше понять меня: if ($ authorizationChecker-> isGranted (новое выражение ('"ROLE_INKOPER" в ролях'))) {return $ this-> redirectToRoute ('homepageInkoper'); } нет возможности показать предоставленную роль?

Halit Ozdogru 05.06.2018 11:48

Это хороший пример, даже если он находится в контроллере, а не в том, что он хочет, но код все равно полезно знать

Webvoid 05.06.2018 11:49

но можешь ли ты помочь мне получить эту роль?

Halit Ozdogru 05.06.2018 11:54

как я уже сказал, если у вашего пользователя всегда только одна роль, и вы каскадируете свои роли в своем security.yml, вы сможете получить роль своего пользователя, просто выполнив в своей ветке {{ app.user && app.user.roles[0] }}

Webvoid 05.06.2018 11:57

Большое спасибо, у меня это сработало, но есть ли возможность изменить ROLE_ADMIN в пользовательском интерфейсе, например, на admin?

Halit Ozdogru 05.06.2018 12:03

да, то, что вы должны сделать, это, например, {{ ['ROLE_ADMIN' => 'admin'][app.user.roles[0] }}, на самом деле вы создаете ассоциативный массив и используете его просто в строке =)

Webvoid 05.06.2018 12:10

Лучше: вы можете определить свой собственный фильтр веток и сделать, например, {{ app.user.roles[0] | roleDisplayer }}, проверьте symfony.com/doc/current/templating/twig_extension.html для получения дополнительной информации =)

Webvoid 05.06.2018 12:14

У меня ошибка: Незакрытый "[". Я не знаю, как это исправить, в твоем массиве последний

Halit Ozdogru 05.06.2018 12:15

Забыл один ], это {{ ['ROLE_ADMIN' => 'admin'][app.user.roles[0]] }}

Webvoid 05.06.2018 12:16

вы можете получить от текущего пользователя, когда мы получаем роль, он возвращает массив ролей

$user = $this->getUser();
$role = $user->getRoles();

в ветке

{{app.user.roles}}

Я просто хочу вернуть предоставленную мне роль в своей веточке.

Halit Ozdogru 05.06.2018 11:52

Другие вопросы по теме