我正在评估Symfony2的绿地项目。其中一个核心要求是; 用户可以与许多公司关联,并且每个关联可以具有由角色标识的不同权限集。
有没有人经历过与Symfony2的ACL系统如何实现相似或类似的事情?
愿意接受任何建议。
答案 0 :(得分:0)
我对比赛来说太迟了,但也许这会帮助其他人?
简而言之,您可以使用自定义投票人,然后利用您可以传递给选民的第二个对象,并使用它来安全地检查您的安全检查
public function vote(TokenInterface $token, $object, array $attributes)
{
if ($this->supportsClass($object) && $company = $this->container->get('context.company')) {
foreach ($attributes as $attribute) {
if ($this->supportsAttribute($attribute)) {
if ($company == $object->getCompany()) {
return VoterInterface::ACCESS_GRANTED;
}
return VoterInterface::ACCESS_DENIED;
}
}
}
return VoterInterface::ACCESS_ABSTAIN;
}
}