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