Zend_Aclは、デフォルトで、すべての特権のすべてのリソースに対するすべての役割を、特に許可されていない限り、許可しません。私のシステムでは、ユーザーは多くの役割を持つことができ、これらの役割に権限が割り当てられます。私は単にすべてのユーザーロールをそれらすべてに対して反復し、isAllowed()ですべてのロールに与えられたリソースと特権をチェックします。
たとえば、現在のリソースが「foo」で特権が「bar」の場合
public function checkAllow($roles, $resouse, $privilege)
{
foreach ($roles as $role) {
if ($acl->isAllowed($role, 'foo', 'bar') === true)
return true;
}
return false;
}
ここで、これらの役割に並べ替え順序を実装したいと思います。つまり、最初に割り当てられた役割は、2番目よりも優先されます。
問題は、次のようないくつかの役割に対する特定の拒否をどのように検出できるかということです。
$this->deny('member','foo','bar');
すべての役割を繰り返しながら、特定の役割が具体的に「拒否」されたことをどのように知ることができますか?したがって、その時点でforeachループから抜け出し、を返すことができますfalse
。