CakePHP 2.x,ACL - 将一个组的权限添加/编辑到另一个组

时间:2012-08-13 06:49:05

标签: acl cakephp-2.1

我正在使用CakePHP 2.1.3 ACL组件。我创建了四个组管理员,经理,编辑和注册用户。对于用户管理模块,我想提供如下所列的访问:


管理员 - >所有
经理 - >添加,编辑,删除编辑器和注册用户
编辑 - >添加,编辑,删除注册用户
注册用户 - >无。

我可以使用ACL和Auth组件完成此操作吗?如果没有,那么建议其他方式。

2 个答案:

答案 0 :(得分:1)

是的,可以使用ACL。 ACL的可能性更大。

CakePHP documentation

还有一个很好的关于由John Wiseman编写的ACL的教程,也许你应该先阅读它。

答案 1 :(得分:0)

这是可能的,但是Acl处理这样的权限太过分了,只需使用Auth的ControllerAuthorize适配器,并在这些行中为您的UsersController添加isAuthorized()方法:

public function isAuthorized($user) {
    $userGroup = $user['User']['group'];
    if ($userGroup == 'admin' || in_array($this->action, array('index', 'view'))) {
        return true;
    }
    if ($userGroup == 'registered') {
        return false;
    }
    if ($this->action == 'add') {
        return true;
    }
    if (in_array($this->action, array('edit', 'delete'))) {
        $id = $this->request->params['pass'][0];
        $group = $this->User->field('group', array('User.id' => $id));
        if ($group == 'registered') {
            return true;
        }
        if ($group == 'editor' && $userGroup == 'moderator') {
            return true;
        }
    }
    return false;
}

此处未处理添加操作,并且始终允许,在添加新用户时,您应该根据登录用户显示较少的设置组的选项。 你没有提到如何处理索引和视图,我想所有用户都可以这样做。