2013-01-11 2 views
1

소유자, 관리자 및 사용자 역할이 있습니다. 소유자가 한 명뿐입니다. 관리자가 나를 편집하거나 삭제하는 것을 어떻게 거부합니까? 소유자가 id 1을 가지고 있으므로 관리자가 소유자가 아닌 경우 isAuthorized()를 체크인 할 경우 다음을 수행합니다. $user['id'] != 1. 이제 편집 또는 삭제중인 사용자가 소유자인지 확인하는 방법을 알려 드리겠습니다. 나는 이걸 가지고 사용자 ID를 얻는 법을 알고있다 : $this->request->params['pass'][0]하지만 사용자 역할은 아니다.사용자가 편집 된 역할을 확인하려면 어떻게해야합니까?

답변

1

저는 "소유자"를 역할로 생각하지 않습니다. 다른 사람이 일반 역할 유형이되도록 허용 한 다음 items 테이블에 owner_id 필드를 유지하는 것이 훨씬 쉽습니다.

그런 식으로 역할을 높은 수준의 권한으로 처리 할 수 ​​있으며 개별 항목 작업/메소드에서 소유권을 확인할 수 있습니다. 코드을 사용하여 코드를 DRY 상태로 유지하는 경우가 많습니다. 예를 들어 같은 PostsController->edit($id) 기능에

, 당신은 포스트에 find()을 수행 할 수 있습니다, 그것은 그들이 소유자 인 경우 그들은 단지 편집 할 수 있는지 확인 $this->Auth->user('id')에 대한 owner_id있어 비교합니다.

역할을 검색하여 사용 가능하게 유지하려면 Auth-> user의 role_id 필드를 기반으로 roles 테이블에서 정상 찾기를 사용하여 AppController의 beforeFilter에서이를 수행 할 수 있습니다.

관련 문제