0

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


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

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

4

2 回答 2

1

是的,这可以通过 ACL 实现。ACL 还有更多可能。

CakePHP 文档

还有John Wiseman写的关于 ACL 的很好的教程,也许你应该先读一下。

于 2012-08-14T07:12:57.003 回答
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;
}

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

于 2012-08-14T15:15:24.790 回答