这似乎是一种基本需求,但找不到有关该主题的任何资源。
在用户管理表单中,我需要根据当前用户的角色过滤可选组。
假设我们应该只能选择我们被授予所有附加角色的组。
我认为这里不需要 ACL。
我可以使用选民吗?
在我看来这是一个共同的需求,有人可以指出我的任何资源吗?
这似乎是一种基本需求,但找不到有关该主题的任何资源。
在用户管理表单中,我需要根据当前用户的角色过滤可选组。
假设我们应该只能选择我们被授予所有附加角色的组。
我认为这里不需要 ACL。
我可以使用选民吗?
在我看来这是一个共同的需求,有人可以指出我的任何资源吗?
正如我所看到的疯狂急于回答我的问题,我将做出我微薄的贡献。
我无法为此使用 ACL 或选民。
所以我做了一个自定义类型扩展choice
此类型从带有security.context
和doctrine
注入的服务中检索组。
该服务具有收集具有此小算法的组的功能:
public function allExistingGroups()
{
$finalGroupsList = array();
/* Get all existing groups */
$groups = $this->doctrine->getRepository('SonataUserBundle:Group')
->findAll();
foreach ($groups as $group) {
$isGranted = true;
foreach ($group->getRoles() as $role) {
if (!$this->securityContext->isGranted($role)) {
$isGranted = false;
}
}
/* User is granted, so he can see the group */
if ($isGranted) {
$finalGroupsList[$group->getId()] = $group->getName();
}
}
return $finalGroupsList;
}
用户现在将只看到他被授予所有角色的组。
当然应该有一个更漂亮的解决方案,但这对我有用。