私はグリーンフィールドプロジェクトのためにSymfony2を評価しているところです。中心的な要件の1つはそれです。ユーザーは多くの会社に関連付けることができ、それらの関連付けのそれぞれは、役割によって識別される異なる権限のセットを持つことができます。
誰かがSymfony2のACLシステムでこれがどのように達成されるかについて同様の何かまたは展望を実装した経験がありますか?
アドバイスをいただければ幸いです。
私はゲームに遅すぎますが、おそらくこれは他の誰かを助けるでしょうか?
要するに、カスタムボーターを使用してから、ボーターに渡すことができる2番目のオブジェクトを利用して、このようにセキュリティチェックをコンテキスト化するために使用できます
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;
}
}