Los usuarios de Symfony 2 FOS UserBundle no obtienen el rol de grupo
Estoy usando FOS User Bundle para administrar el acceso a mi aplicación. Como necesito una noción de grupo, he implementado lo que necesito como se describe en el documentogrupo .
Todo está bien para crear usuarios y grupos, PERO cuando estoy iniciando sesión con un usuario, y tratando de obtener su rol, él no tiene más que USER_ROLE.
Aquí está mi usuario
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;
[...]
}
Aquí está mi clase de grupo
use FOS\UserBundle\Entity\Group as BaseGroup;
class RegistredUserGroup extends BaseGroup
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
[...]
}
Mi usuario no tiene ninguna función establecida en la tabla RegistredUser, pero tiene un ID de grupo establecido. Este grupo tiene el rol ROLE_ADMIN.
En mi diseño, trato de verificar un rol como este:
{% 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 %}
Pero Symfony no muestra nada.
¿Estoy usando una función defectuosa para verificar los roles de grupo? ¿O estoy haciendo algo mal?
Una solución es conseguir groups_role por
{% if app.user != null and app.user.group.hasRole('ROLE_ADMIN') %}
Pero ¿hay alguna otra manera de hacer esto?