diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5dfb212 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Ignore all .DS_Store files +.DS_Store +**/.DS_Store diff --git a/AdminBarPlugin.php b/AdminBarPlugin.php index f241d68..309a674 100644 --- a/AdminBarPlugin.php +++ b/AdminBarPlugin.php @@ -19,7 +19,9 @@ public function register() public function boot() { - $this->app->router->pushMiddlewareToGroup('web', \Wave\Plugins\AdminBar\Http\Middleware\InjectBarMiddleware::class); + if (!app()->runningInConsole() && !app()->environment('testing')) { + $this->app->router->pushMiddlewareToGroup('web', \Wave\Plugins\AdminBar\Http\Middleware\InjectBarMiddleware::class); + } $this->loadViewsFrom(__DIR__ . '/resources/views', 'admin-bar'); } diff --git a/resources/.DS_Store b/resources/.DS_Store deleted file mode 100644 index f91a859..0000000 Binary files a/resources/.DS_Store and /dev/null differ diff --git a/src/Http/Middleware/InjectBarMiddleware.php b/src/Http/Middleware/InjectBarMiddleware.php index 156812b..0167ab2 100644 --- a/src/Http/Middleware/InjectBarMiddleware.php +++ b/src/Http/Middleware/InjectBarMiddleware.php @@ -8,27 +8,30 @@ class InjectBarMiddleware { - /** - * Handle an incoming request. - * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next - */ public function handle(Request $request, Closure $next): Response { - if (auth()->guest()) { - return $next($request); - } else { + $response = $next($request); + + if (!$this->shouldInjectBar($request, $response)) { + return $response; + } + + $content = $response->getContent(); + + if (str_contains($content, 'render(); - - $response = $next($request); - $content = $response->getContent(); - - // Inject $cornerTabHTML inside the tag - $content = preg_replace('/(]*>)(.*?)(<\/body>)/s', '$1$2' . $cornerTabHTML . '$3', $content); - // dd($content); - return $response->setContent($content); + $content = preg_replace('/(]*>)(.*?)(<\/body>)/s', '$1$2' . $cornerTabHTML . '$3', $content, 1); + $response->setContent($content); } - - //return $next($request); + + return $response; + } + + private function shouldInjectBar(Request $request, Response $response): bool + { + return auth()->check() + && !$request->ajax() + && $response->headers->get('Content-Type') === 'text/html' + && $response->getStatusCode() === 200; } -} +} \ No newline at end of file