Symfony 2 Użytkownicy FOS UserBundle nie otrzymują roli grupy
Używam Pakietu użytkownika FOS do zarządzania dostępem do mojej aplikacji. Ponieważ potrzebuję pojęcia grupy, zaimplementowałem to, czego potrzebuję, jak opisano w dokumencieGrupa .
Wszystko jest w porządku do tworzenia użytkowników i grup ALE, gdy loguję się do użytkownika i próbuję uzyskać jego rolę, nie ma on nikogo oprócz USER_ROLE.
Oto mój użytkownik
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;
[...]
}
Oto moja klasa w grupie
use FOS\UserBundle\Entity\Group as BaseGroup;
class RegistredUserGroup extends BaseGroup
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
[...]
}
Mój użytkownik nie ma żadnych ról ustawionych w tabeli RegistredUser, ale został ustawiony identyfikator grupy. Ta grupa ma rolę ROLE_ADMIN.
W moim układzie próbuję sprawdzić rolę w ten sposób:
{% 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 %}
Ale Symfony niczego nie wyświetla.
Czy używam złej funkcji do sprawdzania ról grupowych? Czy robię coś innego źle?
Rozwiązaniem jest uzyskanie grup_role przez
{% if app.user != null and app.user.group.hasRole('ROLE_ADMIN') %}
Ale czy jest jakiś inny sposób na to?