Пользователи Symfony 2 FOS UserBundle не получают роль группы
Я использую FOS User Bundle для управления доступом к своему приложению. Поскольку мне нужно понятие группы, я реализовал то, что мне нужно, как описано в документе.группа .
Все хорошо для создания пользователей и групп, НО, когда я захожу с пользователем и пытаюсь получить его роль, у него нет ничего, кроме 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, но для него установлен groupId. Эта группа имеет роль 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 ничего не отображает.
Использую ли я плохую функцию для проверки ролей групп? Или я делаю что-то еще не так?
Решение - получить groups_role
{% if app.user != null and app.user.group.hasRole('ROLE_ADMIN') %}
Но есть ли другой способ сделать это?