Os usuários do Symfony 2 FOS UserBundle não recebem o papel do grupo
Estou usando o FOS User Bundle para gerenciar o acesso ao meu aplicativo. Como eu preciso de uma noção de grupo, eu implementei o que eu preciso como descrito no documentogrupo .
Tudo está bem para criar usuários e grupos, mas quando eu estou logando com um usuário, e tentando obter o seu papel, ele não tem nenhum, mas USER_ROLE.
Aqui está meu usuário
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;
[...]
}
Aqui está minha turma do grupo
use FOS\UserBundle\Entity\Group as BaseGroup;
class RegistredUserGroup extends BaseGroup
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
[...]
}
Meu usuário não tem nenhuma função definida na tabela RegistredUser, mas tem um groupId configurado. Este grupo tem o papel ROLE_ADMIN.
No meu layout, eu tento verificar o papel assim:
{% 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 %}
Mas o Symfony não exibe nada.
Estou usando uma função ruim para verificar os papéis do Groupe? Ou estou fazendo outra coisa errada?
Uma solução está recebendo groups_role por
{% if app.user != null and app.user.group.hasRole('ROLE_ADMIN') %}
Mas existe alguma outra maneira de fazer isso?