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

How to set Authorization wise view in the Form in CakePHP-3.0

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

在这里问之前,我尝试了以下方法,但运气不好。

假设我在 usersTable 中有角色字段,例如 'superuser'、'admin'、'user'。

我想提供权限超级用户来进行所有操作,例如创建管理员和用户。然后admin可以创建admin和user,user只能创建user。

我在 UsersController 的添加函数中尝试的代码。

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']]);
        }

您能否就此提出建议,或者有什么最简单的方法吗?

谢谢

正如您的双重 post @ 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') {}