저는 얼마 전 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, 나는 조인 등으로 arround를 해왔지만 아직 적절한 대답을 아직 찾지 못했습니다. 나는 기본적인 ACL 클래스를 파헤쳐서 cakephp가 이것을 어떻게 처리 하는지를 살펴볼 것이라고 생각한다. 가장 큰 문제는 문서가 '중첩'되어 있기 때문에 ACL 테이블에 ID 대 ID 매핑이 포함되어 있지 않다는 것입니다. 수퍼 유저와 관리자는 개별 문서를 각 문서에 연결하지 않고 모든 문서에 접근 할 수 있어야합니다. – Kriddy