$currentControllerClass */ $currentControllerClass = Route::getCurrentRoute()->getControllerClass(); if(!class_exists($currentControllerClass) || !is_subclass_of($currentControllerClass, AdminToolController::class)) return $next($request); $currentMethod = Route::getCurrentRoute()->getActionMethod(); $reflector = new ReflectionClass($currentControllerClass); // Skip permission check if the attribute exists on this function if(count($reflector->getMethod($currentMethod)->getAttributes(IgnorePermissionCheck::class)) > 0) return $next($request); if(!Auth::user()->can($currentControllerClass::getNeededPermission())) abort(403); return $next($request); } }