私はしばらくの間、cakephpを使用しています。 1つのことを除いて、私はそれを稼働させている。現在のユーザーが利用できるすべてのドキュメントを検索するにはどうすればよいですか?cakephp ACL:ユーザがアクセス可能なすべてのドキュメントを一覧表示します。
私はArosテーブルにいくつかのグループ(スーパーユーザー、管理者、一般ユーザー)を設定しています。スーパーユーザーと管理者はすべてアクセスできるはずの複数のドキュメントがありますが、一般ユーザーには特定のドキュメントのみがアクセスできます。上記の「解決策」の問題は、それが最初に(近い将来、数千になります)すべての文書を照会して、潜在的にAにそれをダウンさせていることである
$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-> data配列からアクセスできないすべてのドキュメントを削除することで、いくつかのドキュメントを削除できます。
こんにちはluchomolina、私は結合などでarroundを演奏していますが、まだ適切な答えはまだ見つかりませんでした。私は、基本的なACLクラスを掘り下げてcakephpがこれをどのように処理するのかを見ていきたいと思います。主な課題は、ACLテーブルがIDからIDへのマッピングを含んでいないことです。文書は「入れ子になっている」ためです。スーパーユーザと管理者は、個々のドキュメントをそれぞれにリンクさせずにすべてのドキュメントにアクセスできる必要があります。 – Kriddy