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

上代码了_

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性...
    继续向前冲阅读 5,299评论 0 0
  • 我要是能骗你的话,定是要骗得你一生,珠词箴句里,字字藏艳药,句句渗烈酒,灌得你一时醉。偏偏我手足无措,荡失组织语言...
    周知洋阅读 3,034评论 0 0
  • 给我最爱的玻璃杯 起了个名字 叫小矮胖 我听到了它无声的抗议
    Emma_Morley阅读 1,046评论 1 0
  • 草根创业成功与否,运气是一方面,主要一点还是内功要牢固。 接触了一些圈内人,项目,同样一个项目,同样的玩法,十个人...
    行奕日记阅读 2,405评论 0 0