上代码了_
public function test(){
//用户表中有角色的id 所以通过角色id来取出角色表对应的权限id
$row=Db::name("role")->find('7');
//查询出当前的登陆用户的id
$auth_id_list=$row['auth_id_list'];
if($auth_id_list=='*'){
//超级用户*
$oneAuth=Db::name("auth")->where("pid",0)->select();
foreach($oneAuth as $k =>$auth){
//查询出pid等当前的一级的id 那么就是他的父类
$oneAuth[$k]['sonsAuth']=Auth::where("pid",$auth['auth_id'])->select();
}
//存储当前的用户登陆的权限
session("visitorAuth",$oneAuth);
}else{
//不是超级管理员的登陆逻辑
//先查询出该用户登陆之后所拥有的权限
$all_auth=Auth::where("auth_id",'in',$auth_id_list)->select();
$visitorAuth=[]; //用来拼接控制器与方法
$oneAuth=[]; //用来保存一级
foreach($all_auth as $k =>$auth){
//先循环取出一级
if($auth['pid']==0){
$oneAuth[]=$auth;
}
//保存当前用户的控制器与方法
$visitorAuth[]=$auth['auth_c'].'/'.$auth['auth_a'];
}
//取出二级
foreach($oneAuth as $k =>$value){
foreach($all_auth as $kk=>$values){
if($value['pid']==$values['auth_id']){
$oneAuth[$k]['sonsAuth'][]=$values;
}
}
}
//保存控制器
session("visitorAuth",$visitorAuth);
}
session("menuAuth",$oneAuth)
dump($oneAuth);
}
RBAC 逻辑很丰富 多想多做即可 加油吧 骚年
网友评论