美文网首页
RBAC实现用户登陆取出对对应的值

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

作者: 表弟_212 | 来源:发表于2018-06-25 09:38 被阅读0次

    上代码了_

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

    相关文章

      网友评论

          本文标题:RBAC实现用户登陆取出对对应的值

          本文链接:https://www.haomeiwen.com/subject/kpmeyftx.html