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();
+});