我正在使用Voters管理我的应用程序的权限,一切都适用于单个对象。
我似乎无法做的是在一组对象上应用选民。例如,我有一个终点/人员将返回完整的人员列表,但应根据每个用户的权限进行过滤(部门经理应该只看到他们自己部门的人员)。有没有办法与选民一起做这件事?
答案 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);
});