如何检查正在编辑角色的用户?

时间:2013-01-11 13:32:20

标签: cakephp

我拥有所有者,管理员和用户角色。 只有一个老板,就是我。 如何拒绝管理员编辑或删除我? 所有者的身份是1,所以如果我要登记isAuthorized(),如果管理员不是所有者,我会这样做:$user['id'] != 1。 现在,我将如何检查正在编辑或删除的用户是否为所有者。我知道如何获取用户ID:$this->request->params['pass'][0]但不是用户角色。

1 个答案:

答案 0 :(得分:1)

我认为我没有“所有者”作为角色。允许某人成为普通的角色类型会更容易,然后在项目表中保留owner_id字段。

这样,您可以让Roles处理更高级别的授权,并且在单个项目操作/方法中,您可以检查所有权(通常使用自定义isOwner()功能来保持代码干净)

PostsController->edit($id)函数为例,您可以在帖子上执行find(),然后将owner_id$this->Auth->user('id')进行比较,以确保他们只能编辑他们是主人。

如果你想检索角色并保持其可用,你可以在AppController的beforeFilter中根据Auth->用户的roles字段在role_id表上进行常规查找。