关于RBAC权限节点树的一个小问题

浏览:1451 发布日期:2013/08/15 分类:求助交流 关键字: RBAC,权限节点遍历
之前学习了lyc在官网上的RBAC视频教程。自己也做了一个权限管理的小后台。
现在想跟各位大侠探讨以下问题:

因为tp的RBAC是按项目/模块/操作三层次遍历权限节点的。

具体代码如下: $node = $nodeList->where('level=2 and pid=1')->order('sort')->relation(true)->select();   
             $module = '';
            $node_id = '';
          $accessList = $_SESSION['_ACCESS_LIST'];
          
          foreach($accessList as $key=>$value)
          {
              foreach($value as $key1=>$value1){
                  $module = $module.','.$key1;
                 foreach($value1 as $key2=>$value2){
                    $node_id = $node_id.','.$value2;
                 }
               }  
          }      
             //去除没有权限的节点
             foreach($node as $key=>$value){
               if(!in_array(strtoupper($value['name']),explode(',',$module)))
                {
               unset($node[$key]);
             }
             else
             {
                 //模块存在,比较里面的操作
                 foreach($value['node'] as $key1=>$value1){
                    if(!in_array($value1['id'],explode(',',$node_id))){
                        unset($node[$key]['node'][$key1]);
                    }
                 }
                }
             } 
       }
       $this->assign('node',$node);
根据以上代码,当我为某一用户组分配了一个权限列表后,其对应的所有节点都会遍历出来。然后一般来说,会作为左侧栏目菜单的内容显示出来,以方便管理。

现在在实际操作中,遇到的问题是:
比如像:删除,修改详细内容等权限,是需要根据获取的内容id来进行操作的,
所以不希望这些权限也显示左侧的栏目菜单里。
有没有什么好的方案来甄别这些具体的权限,当不希望其显示在菜单里时,直接隐藏。是用JS来做?还是在PHP代码里写判断?

可能我的这个问题问的本身就不太专业,但很希望了解一种比较合理的方案来解决这个问题。希望大侠们给予我些帮助!谢谢!
最佳答案
评论( 相关
后面还有条评论,点击查看>>