Я использую cakephp в течение некоторого времени и только начинаю с ACL. У меня все работает, кроме одного. Как я могу найти все документы для текущего пользователя?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-> ...
Привет, Лучомолина, я играл на арку с объединениями и т. Д., Но пока не нашел подходящего ответа. Я думаю, что я собираюсь копаться в базовых классах ACL, чтобы увидеть, как cakephp справляется с этим. Основная проблема заключается в том, что таблицы ACL не содержат сопоставление идентификатора и идентификатора, поскольку документы «вложены». Суперпользователи и администраторы должны иметь доступ ко всем документам, не связывая отдельные документы с каждым из них. – Kriddy