我想在使用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']]);
}
请您就这方面提出建议,或者有最简单的方法吗?
由于
答案 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') {}