0
我現在使用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-> data數組中刪除所有無法訪問的文檔來刪除幾個文檔...
嗨luchomolina,我一直在玩連接等,但還沒有找到合適的答案。我想我會深入挖掘底層的ACL類,看看cakephp如何處理這個問題。主要的挑戰是ACL表不包含id到id的映射,因爲這些文檔是'嵌套的'。超級用戶和管理員應該能夠訪問所有文檔,而無需將單個文檔鏈接到每個文檔。 – Kriddy 2012-01-11 20:52:53