Я использую cakephp уже некоторое время и только начал с ACL. У меня все работает, кроме одной вещи. Как найти все документы, доступные текущему пользователю?
У меня есть несколько групп (суперпользователи, администраторы и обычные пользователи), настроенных в таблице Aros. У меня есть несколько документов, которые должны быть доступны для суперпользователей и администраторов, но только для обычных пользователей. Самое близкое, что я придумал, это:
$this->data=$this->Document->find('all',array('fields'=>array('Document.id','Document.filename','Document.title')));
foreach($this->data as $i=>$document){
if($this->Acl->check(array('model'=>'User','foreign_key'=>$this->Session->read('User.id')),array('model'=>'Document','foreign_key'=>$document['Document']['id']))!=1){
unset($this->data[$i]);
}
}
Проблема с вышеупомянутым «решением» заключается в том, что он сначала запрашивает все документы (которых в ближайшем будущем станет несколько тысяч), а затем сводит его к потенциально паре документов, удаляя все недоступные документы из $ this- > массив данных ...