@Kripto77

Как в Symfony 5 проверить роль любого пользователя?

Нужно проверить любого юзера (не текущего авторизованного) разрешена ли ему произвольная роль
// security.xml
    role_hierarchy:
        ROLE_GROUP_MANAGER:   ROLE_USER
        ROLE_GROUP_ADMIN:     [ROLE_GROUP_MANAGER]
        ROLE_SUPER_ADMIN:     [ROLE_GROUP_ADMIN]


Например у меня роль ROLE_SUPER_ADMIN - пытаюсь проверить юзера из базы у которого единственная роль ROLE_GROUP_ADMIN . Если проверяю ROLE_SUPER_ADMIN через Security->isGranted - возвращает true, хотя не должен
// $this->security = Symfony\Component\Security\Core\Security
// $user = Сущность пользователя с единственной ролью ROLE_GROUP_ADMIN

return $this->security->isGranted('ROLE_SUPER_ADMIN', $user); // возвращает true


Как правильно проверить роль не текущего пользователя - вручную перебирать иерархию ролей костыльно
  • Вопрос задан
  • 751 просмотр
Решения вопроса 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
Security работает именно с залогиненым пользователем. Если вам надо проверить другого пользователя, то надо делать что-то вроде:
/** @var UserInterface $user */
/** @var RoleHierarchyInterface $hierarchy */

$roles = $hierarchy->getReachableRoleNames($user->getRoles());
$result = array_search('ROLE_GROUP_MANAGER', $roles) !== false;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы