我拥有所有者,管理员和用户角色。
只有一个老板,就是我。
如何拒绝管理员编辑或删除我?
所有者的身份是1,所以如果我要登记isAuthorized(),如果管理员不是所有者,我会这样做:$user['id'] != 1
。
现在,我将如何检查正在编辑或删除的用户是否为所有者。我知道如何获取用户ID:$this->request->params['pass'][0]
但不是用户角色。
答案 0 :(得分:1)
我认为我没有“所有者”作为角色。允许某人成为普通的角色类型会更容易,然后在项目表中保留owner_id
字段。
这样,您可以让Roles处理更高级别的授权,并且在单个项目操作/方法中,您可以检查所有权(通常使用自定义isOwner()
功能来保持代码干净)
以PostsController->edit($id)
函数为例,您可以在帖子上执行find()
,然后将owner_id
与$this->Auth->user('id')
进行比较,以确保他们只能编辑他们是主人。
如果你想检索角色并保持其可用,你可以在AppController的beforeFilter中根据Auth->用户的roles
字段在role_id
表上进行常规查找。