Symfony选择对象的集合

时间:2018-06-15 09:31:20

标签: symfony security

我正在使用Voters管理我的应用程序的权限,一切都适用于单个对象。

我似乎无法做的是在一组对象上应用选民。例如,我有一个终点/人员将返回完整的人员列表,但应根据每个用户的权限进行过滤(部门经理应该只看到他们自己部门的人员)。有没有办法与选民一起做这件事?

1 个答案:

答案 0 :(得分:2)

这可以使用授权检查程序完成:

// your controller

private $authorizationChecker;

public function __construct(AuthorizationCheckerInterface $authorizationChecker)
{
    $this->authorizationChecker = $authorizationChecker;
}

// in your action

return array_filter($userCollection, function (User $user) {
    return $this->authorizationChecker->isGranted('VOTER_NAME', $user);
});

或者只是如果你是控制器扩展Symfony的Controller类:

return array_filter($userCollection, function (User $user) {
    return $this->isGranted('VOTER_NAME', $user);
});