现在想跟各位大侠探讨以下问题:
因为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代码里写判断?
可能我的这个问题问的本身就不太专业,但很希望了解一种比较合理的方案来解决这个问题。希望大侠们给予我些帮助!谢谢!
最佳答案
