带有FOSUserBundle的Symfony2:基于组权限的访问

时间:2013-11-05 10:54:39

标签: php symfony fosuserbundle roles usergroups

我似乎无法找到有关如何使用链接到fos_group的规则进行访问控制的文档。
在这个项目中,我希望以后能够使用预定义角色定义新组,例如:ROLE_USER,ROLE_AMDIN和ROLE_SUPERAMDIN。
在每个页面上定义一个角色可以做什么或不做什么。

通常我在twig中使用is_granted函数来检查角色,但是因为我希望系统首先检查组的角色,如果用户没有组检查用户特定的角色,那么我将无法使用它。

有关如何使用FOSUserBundle组在Symfony2中实现此目的的任何想法?

1 个答案:

答案 0 :(得分:2)

我一直在尝试做这样的工作。这就是我发现的:通过覆盖getRoles方法将组角色与默认用户角色合并。 我希望这会对某人有所帮助。

class Users extends BaseUser
{

  [...]
 public function getRoles()
 {
    $roles = $this->roles;

    foreach ($this->getGroups() as $group) {
        $roles = array_merge($roles, $group->getRoles());
    }

    // we need to make sure to have at least one role
    $roles[] = static::ROLE_DEFAULT;

    return array_unique($roles);
 }
}