RBAC实现用户登陆取出对对应的值

2018-06-25  本文已影响0人  表弟_212

上代码了_

 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 逻辑很丰富 多想多做即可 加油吧 骚年

上一篇下一篇

猜你喜欢

热点阅读