Symfony2 with FOSUserBundle : 基于组权限的访问


Symfony2 with FOSUserBundle : Access based on group rights

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

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

关于如何在 Symfony2 中使用 FOSUserBundle 组实现这一点的任何想法?

我一直在努力做这样的工作。这就是我发现的:通过覆盖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);
 }
}