50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace app\middleware; | ||
|  | 
 | ||
|  | use Closure; | ||
|  | use app\model\AuthRule; | ||
|  | use tauthz\facade\Enforcer; | ||
|  | use think\facade\Cache; | ||
|  | 
 | ||
|  | class Auth | ||
|  | { | ||
|  |     public function handle($request, Closure $next) | ||
|  |     { | ||
|  |         $auth = session('auth'); | ||
|  |         if (!$auth) { | ||
|  |             return redirect(url('manager.login/index')); | ||
|  |         } | ||
|  | 
 | ||
|  |         $module = 'manager'; | ||
|  |         $controller = unCamelize(request()->controller()); | ||
|  |         $controller = str_replace($module.'.', '', $controller); | ||
|  |         $controller = str_replace('.', '/', $controller);//兼容多层级目录  如 /manager/test/article/index
 | ||
|  |         $action     = unCamelize(request()->action()); | ||
|  |         $roles = Enforcer::getRolesForUser($auth['user_id']); | ||
|  | //        $per = Enforcer::getPermissionsForUser($roles[0]);
 | ||
|  | //        var_dump($controller);
 | ||
|  | //        var_dump($action);
 | ||
|  | //        var_dump($roles);
 | ||
|  | //        var_dump($per);
 | ||
|  | //        exit;
 | ||
|  | //        return $next($request);//暂时停用权限校验
 | ||
|  | //        var_dump($controller);
 | ||
|  | //        var_dump($action);
 | ||
|  | //        var_dump(Enforcer::hasPermissionForUser(1, $controller, 'group-make'));exit;
 | ||
|  | 
 | ||
|  |         foreach ($roles as $role) { | ||
|  |             // TODO 关注批量权限检测是否可用
 | ||
|  |             //只需要有一个角色具有权限就放通 此处第一个参数不是用户 而是 角色 此方法是检测用户|角色是否具有某个权限的公用方法
 | ||
|  |             if (Enforcer::hasPermissionForUser($role, $controller, $action)) { | ||
|  |                 return $next($request); | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         if (request()->isAjax()) { | ||
|  |             return json(['code' => 4001, 'msg' => '没有权限']); | ||
|  |         } else { | ||
|  |             return view('/manager/error/jump')->assign('msg', '很抱歉,您还没有权限,请联系管理员开通!'); | ||
|  |         } | ||
|  |     } | ||
|  | } |