使用php类和if语句的权限

用户87797

我目前在我的一个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;
}

在数据库中设置

以讲师身份登录时出现错误

杰夫

更改您的权限检查:

if (array_key_exists($key, $permissions) && $permissions[$key] == true)) {
    return true;
}

这将检查给定$key$permissions数组中是否存在给定的值,否则,将跳过对值的检查。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章