我目前在我的一个php类中有一个权限函数,然后在我的数据库中我声明了每个用户组的权限。
在我的网站html代码中,我包含一个if语句,如下所示,仅显示某些用户权限。
我唯一的问题是,一个例子是教师权限可以访问标准用户可以访问的所有内容以及教师特有的任何内容。
这很好,但是我还包含一个管理员权限,可以访问其他人可以获得的所有内容。
对于没有权限的人,我没有错误,没有错误的管理员可以访问所有内容。
然而,当我作为教师登录时,我得到'manager'的未定义变量,因为该组无法访问manager字段,但我只是希望它忽略它,如果它没有权限看到该部分不显示未定义的变量。我的班级打印屏幕,数据库设置和代码如下。
仅在用户具有管理员权限时在屏幕上显示html代码的示例,对于仅使用if语句中编写的指导者的教师也是如此。
<?php if($user->hasPermission('manager')) { ?>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="caret"></span> Manager Reports</a>
<ul class="dropdown-menu">
<li><a href="#">Financial Reports</a> </li>
<li><a href="#">Employee Report</a> </li>
<li><a href="#">Lesson Report</a> </li>
</ul>
</li>
<?php } ?>
我的php类中的hasPermissions函数
public function hasPermission($key){
$group = $this->_db->get('groups', array('ID', '=', $this->data()->group));
if($group->count()) {
$permissions = json_decode($group->first()->permissions, true);
if($permissions[$key] == true) {
return true;
}
}
return false;
}
答案 0 :(得分:0)
更改权限检查:
if (array_key_exists($key, $permissions) && $permissions[$key] == true)) {
return true;
}
这会检查给定的$key
是否在$permissions
数组中,如果没有,则会跳过检查值。