From 20a3bab1ac44e91aa12884c8a32940cd854cd96f Mon Sep 17 00:00:00 2001 From: Arunas Skirius Date: Wed, 10 Apr 2024 10:06:06 +0300 Subject: [PATCH] ability to not register web routes for Log Viewer --- config/log-viewer.php | 2 ++ src/LogViewerServiceProvider.php | 18 ++++++++++-------- tests/Feature/RoutesTest.php | 22 ++++++++++++++++++++++ 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/config/log-viewer.php b/config/log-viewer.php index b672b540..656b46cf 100644 --- a/config/log-viewer.php +++ b/config/log-viewer.php @@ -12,6 +12,8 @@ 'enabled' => env('LOG_VIEWER_ENABLED', true), + 'api_only' => env('LOG_VIEWER_API_ONLY', false), + 'require_auth_in_production' => true, /* diff --git a/src/LogViewerServiceProvider.php b/src/LogViewerServiceProvider.php index 63c71740..1dcfeffb 100644 --- a/src/LogViewerServiceProvider.php +++ b/src/LogViewerServiceProvider.php @@ -95,14 +95,16 @@ protected function registerRoutes() $this->loadRoutesFrom(self::basePath('/routes/api.php')); }); - Route::group([ - 'domain' => config('log-viewer.route_domain', null), - 'prefix' => config('log-viewer.route_path'), - 'namespace' => 'Opcodes\LogViewer\Http\Controllers', - 'middleware' => config('log-viewer.middleware', null), - ], function () { - $this->loadRoutesFrom(self::basePath('/routes/web.php')); - }); + if (! config('log-viewer.api_only', false)) { + Route::group([ + 'domain' => config('log-viewer.route_domain', null), + 'prefix' => config('log-viewer.route_path'), + 'namespace' => 'Opcodes\LogViewer\Http\Controllers', + 'middleware' => config('log-viewer.middleware', null), + ], function () { + $this->loadRoutesFrom(self::basePath('/routes/web.php')); + }); + } } protected function registerResources() diff --git a/tests/Feature/RoutesTest.php b/tests/Feature/RoutesTest.php index ba47abfa..0eb03d84 100644 --- a/tests/Feature/RoutesTest.php +++ b/tests/Feature/RoutesTest.php @@ -1,5 +1,7 @@ set('log-viewer.route_path', 'new-log-route'); @@ -25,6 +27,22 @@ expect(route('log-viewer.index'))->toBe('http://localhost'); }); +test('only use api', function () { + config()->set('log-viewer.api_only', true); + + reloadRoutes(); + + route('log-viewer.index'); +})->throws(RouteNotFoundException::class); + +test('only both api and web', function () { + config()->set('log-viewer.api_only', false); + + reloadRoutes(); + + expect(route('log-viewer.index'))->toBe('http://localhost/log-viewer'); +}); + /* |-------------------------------------------------------------------------- | HELPERS @@ -33,5 +51,9 @@ function reloadRoutes(): void { + // unset any routes that were set previously + app('router')->setRoutes(new \Illuminate\Routing\RouteCollection()); + + // boot the service provider to register the routes again (new \Opcodes\LogViewer\LogViewerServiceProvider(app()))->boot(); }