私はしばらくの間cakephpを使用しており、ACLを始めたばかりです。1つのことを除いて、私はそれを稼働させています。現在のユーザーが利用できるすべてのドキュメントを見つけるにはどうすればよいですか?
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->data 配列からアクセスできないすべてのドキュメントを削除することによって、潜在的にいくつかのドキュメントにまで下げることです。 ...