Symfony的2 FOS UserBundle用户没有得到集团的角色(Symfony 2 FOS

2019-07-31 02:37发布

我使用FOS用户捆绑管理访问到我的应用程序。 因为我需要一组概念,我已经实现了我需要的东西的文档中描述的组 。

一切都为创建用户和组,但是当我与一个用户登录,并试图让他的角色很好,他有没有,但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的不显示任何内容。

我使用的检查GROUPE角色不好的作用? 还是我在做别的事情了?

一种解决方案越来越groups_role通过

{% if app.user != null and  app.user.group.hasRole('ROLE_ADMIN') %}

但有这样做的任何其他方式?

Answer 1:

FOSUserBundle让你组到您的用户联系起来。 组是一种分组角色的集合。 一组的角色将被授予属于它的所有用户。

使用组合对FOSUserBundle

在你的情况,你不应该检查

app.user.group.hasRole('ROLE_ADMIN')

如果用户具有其具有角色admin的基团,但检查如果当前用户是某一组,例如构件

app.user.hasGroup('ADMIN')


文章来源: Symfony 2 FOS UserBundle users doesn't get group's role