diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 1b1a7f4..3d76dd5 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -10,6 +10,7 @@ use Illuminate\Foundation\Events\DiagnosingHealth; use Illuminate\Http\Request; use Illuminate\Support\Facades\Date; use Illuminate\Support\Facades\Event; +use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\RateLimiter; use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\URL; @@ -37,6 +38,8 @@ class AppServiceProvider extends ServiceProvider { $this->configureRateLimiting(); + Gate::define('viewApiDocs', fn (?Authenticatable $user = null): bool => true); + if ($this->app->environment('production')) { URL::forceScheme('https'); } diff --git a/resources/views/components/layouts/app/header.blade.php b/resources/views/components/layouts/app/header.blade.php index d13aa35..521ae0a 100644 --- a/resources/views/components/layouts/app/header.blade.php +++ b/resources/views/components/layouts/app/header.blade.php @@ -116,15 +116,15 @@ + + {{ __('API Dokumentation') }} + + {{ __('Repository') }} - - - {{ __('Documentation') }} - diff --git a/resources/views/components/layouts/app/sidebar.blade.php b/resources/views/components/layouts/app/sidebar.blade.php index 83a32fe..624d571 100644 --- a/resources/views/components/layouts/app/sidebar.blade.php +++ b/resources/views/components/layouts/app/sidebar.blade.php @@ -127,6 +127,11 @@ + + {{ __('API Dokumentation') }} + diff --git a/tests/Feature/Api/ApiDocsAccessTest.php b/tests/Feature/Api/ApiDocsAccessTest.php new file mode 100644 index 0000000..c47692e --- /dev/null +++ b/tests/Feature/Api/ApiDocsAccessTest.php @@ -0,0 +1,15 @@ +allows('viewApiDocs'))->toBeTrue(); +}); + +it('allows guests to open the api documentation', function () { + $this->get(route('scramble.docs.ui'))->assertSuccessful(); +}); + +it('serves the openapi document to guests', function () { + $this->get(route('scramble.docs.document'))->assertSuccessful(); +});