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;
}
Теперь я хочу реализовать порядок сортировки для этих ролей, т. Е. Первая роль будет иметь большее предпочтение, чем вторая и т. Д.
Возникает проблема, как я могу определить конкретный отказ для некоторых ролей, таких как
$this->deny('member','foo','bar');
Итерируя по всем ролям, как я могу узнать, что данная роль была конкретно "отрицаема"?Так что в этот момент я могу выйти из цикла foreach и вернуть false
.