这似乎是一个基本需求,但无法找到有关该主题的任何资源。
在“用户管理”表单中,我需要根据当前用户的角色过滤可选择的组。
假设我们应该只能选择我们被授予所有附加角色的组。
我认为这里不需要ACL。
我可以使用选民吗? 在我看来,这似乎是一个共同的需求,有人可以指向我任何资源吗?
答案 0 :(得分:0)
正如我可以看到疯狂地急于回答我的问题,我将给予我谦卑的贡献。
我无法使用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;
}
用户现在只会看到他被授予所有角色的组。
当然,应该有一个更漂亮的解决方案,但这对我有用。