• auth权限总结

    一句话总结: 四表两组关系,一个多对多(权限和用户组之间)(多对多需要3个表),一个一对多(用户和用户组之间) 

    实际上使用Auth是需要4张表的(1.用户表 2.用户组表 3.组表 4.权限表)


    各个商家后台进制访问代码如下:

    把模块/控制器/方法名传过来之后,先检查用户组是否禁用然后通过in_array函数在权限表里面查找模块/控制器/方法名否则就是没有权限不能访问。

    function  check_auth($mca){ 
       $userinfo=return_admin_info('admin_userinfo');
       if($userinfo['issup']!=1){
          $groupinfo=get_model_one(array('uid'=>$userinfo['uid']), 'user_group_access');//用户分组表
          $group_status=get_onerecord(array('id'=>$groupinfo['group_id']), 'user_group', 'status');//分组表
          $group_arr=get_model_one(array('id'=>$groupinfo['group_id']), 'user_group', 'rules,menus');
          if($group_status==0){
             echo '用户组已禁止请联系管理员';
             unset_admin_info('admin_userinfo');
             exit;
          }
          if($groupinfo['group_id']){
             $rules=$group_arr['rules'];
             if($rules){
                $rules=json_decode($rules);
                $info=get_model_one(array('name'=>$mca), 'user_auth_rule');
                if($info && $info['isverify']==1 && !in_array($mca, $rules)){
                   echo '你没有权限';unset_admin_info('admin_userinfo');exit;
                }
                return true;
             }else{
                echo '你没有权限,请联系管理员';unset_admin_info('admin_userinfo');exit;
             }
          }else{
             echo '你没有权限,请联系管理员';unset_admin_info('admin_userinfo');exit;
          }
       }
    }