Пользователи Symfony 2 FOS UserBundle не получают роль группы

Я использую FOS User Bundle для управления доступом к моему приложению. Поскольку мне нужно понятие группы, я реализовал то, что мне нужно, как описано в группе doc.

Все хорошо для создания пользователей и групп. Но когда я вхожу в систему с пользователем и пытаюсь получить его роль, у него нет ни одного, кроме USER_ROLE.

Вот мой пользователь

use FOS\UserBundle\Entity\User as BaseUser; class RegistredUser extends BaseUser { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * @ORM\ManyToOne(targetEntity="myBundle\Entity\RegistredUserGroup") */ protected $group; [...] } 

Вот мой класс группы

 use FOS\UserBundle\Entity\Group as BaseGroup; class RegistredUserGroup extends BaseGroup { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; [...] } 

Мой пользователь не имеет ролей, установленных в таблице RegistredUser, но имеет установленную группу. У этой группы есть роль ROLE_ADMIN.

В моем макете я пытаюсь проверить роль следующим образом:

  {% if is_granted('ROLE_ADMIN') %} <dl class="menuIcon"> <dd><img src="{{ asset('bundles/bundle/images/user.png') }}" alt=""></dd> <dd>{{ "menu.gererReferentiel"|trans }}</dd> </dl> {% endif %} 

Но Symfony ничего не отображает.

Я использую плохую функцию для проверки ролей groupe? Или я делаю что-то еще неправильно?

Решение получает group_role

 {% if app.user != null and app.user.group.hasRole('ROLE_ADMIN') %} 

Но есть ли другой способ сделать это?

Related of "Пользователи Symfony 2 FOS UserBundle не получают роль группы"

FOSUserBundle позволяет связать группы с вашими пользователями. Группы – это способ группировать коллекцию ролей. Роли группы будут предоставлены всем пользователям, принадлежащим к ней.

Использование групп с FOSUserBundle

В вашем случае вы не должны проверять

 app.user.group.hasRole('ROLE_ADMIN') 

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

 app.user.hasGroup('ADMIN')