Пользователи 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') %}

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


person SteveM    schedule 21.08.2012    source источник


Ответы (1)