如何在CakePHP-3.0中的表单中设置授权智能视图

时间:2015-05-27 15:42:24

标签: cakephp-3.0

我想在使用CakePHP 3.0注册表单时设置授权。

在问这里之前,我尝试了下面的事情,但没有运气对我有利。

假设我在usersTable中有像'超级用户','admin','用户'的角色字段。

我想提供权限超级用户来创建管理员和用户等所有内容。然后管理员可以创建管理员和用户,用户只能创建用户。

我在UsersController的add函数中尝试过的代码。

if($this->Auth->user['role'] === 'superuser'){
        $roles = $this->Users->find('list');            
    } elseif ($this->Auth->user['role'] === 'admin') {
        $roles = $this->Users->find('list')->where(['Users.role !==' => 'superuser']);
    } else {
        $roles = $this->Users->find('list')->where(['Users.role' => 'user']);
    }
失败后

我在add.ctp

中尝试了以下内容
if(!empty($this->request->session()->check('Auth.User.role') === 'superadmin')){
            echo $this->Form->input('role',['options' => ['admin' => 'Admin', 'user' => 'User']]);
        } elseif(!empty($this->request->session()->check('Auth.User.role') === 'admin')){
            echo $this->Form->input('role',['options' => ['user' => 'User', 'icr' => 'ICR', 'routing' => 'Routing']]);
        } else {
            echo $this->Form->input('role', ['options' => ['user' => 'User']]);
        }

请您就这方面提出建议,或者有最简单的方法吗?

由于

1 个答案:

答案 0 :(得分:1)

正如你的双重帖子@ google小组(https://groups.google.com/forum/#!topic/cake-php/nTURwYME-6o)中所述,你不应盲目地将三个没有任何共同点的东西结合起来,这样可以保证会爆炸。

if(!empty($this->request->session()->check('Auth.User.role') === 'superadmin')){}

应该是

if ($this->request->session()->read('Auth.User.role') === 'superadmin') {}