Better scrambling to fix #235

This commit is contained in:
Lance Pioch
2024-05-16 00:22:55 -04:00
parent 8b62df6c53
commit 91a3bb969e
2 changed files with 17 additions and 37 deletions

View File

@ -6,6 +6,9 @@ use App\Extensions\Themes\Theme;
use App\Models;
use App\Models\ApiKey;
use App\Models\Node;
use Dedoc\Scramble\Scramble;
use Dedoc\Scramble\Support\Generator\OpenApi;
use Dedoc\Scramble\Support\Generator\SecurityScheme;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Broadcast;
@ -66,6 +69,10 @@ class AppServiceProvider extends ServiceProvider
$this->bootAuth();
$this->bootBroadcast();
Scramble::registerApi('application', ['api_path' => 'api/application', 'info' => ['version' => '1.0']]);
Scramble::registerApi('client', ['api_path' => 'api/client', 'info' => ['version' => '1.0']]);
Scramble::registerApi('remote', ['api_path' => 'api/remote', 'info' => ['version' => '1.0']]);
}
/**
@ -81,6 +88,9 @@ class AppServiceProvider extends ServiceProvider
$this->app->singleton('extensions.themes', function () {
return new Theme();
});
Scramble::extendOpenApi(fn (OpenApi $openApi) => $openApi->secure(SecurityScheme::http('bearer')));
Scramble::ignoreDefaultRoutes();
}
/**

View File

@ -1,51 +1,21 @@
<?php
use Dedoc\Scramble\Http\Middleware\RestrictedDocsAccess;
use Dedoc\Scramble\Scramble;
use Dedoc\Scramble\Support\Generator\OpenApi;
use Dedoc\Scramble\Support\Generator\SecurityScheme;
use Illuminate\Support\Facades\Route;
Route::group(['prefix' => 'api'], function () {
Scramble::extendOpenApi(fn (OpenApi $openApi) => $openApi->secure(SecurityScheme::http('bearer')));
Scramble::registerUiRoute(path: 'application', api: 'application');
Scramble::registerJsonSpecificationRoute(path: 'application.json', api: 'application');
Route::view('application', 'scramble::docs', ['api' => 'application'])->name('scramble.docs.api.application');
Route::view('client', 'scramble::docs', ['api' => 'client'])->name('scramble.docs.api.client');
Route::view('remote', 'scramble::docs', ['api' => 'remote'])->name('scramble.docs.api.remote');
Scramble::registerUiRoute(path: 'client', api: 'client');
Scramble::registerJsonSpecificationRoute(path: 'client.json', api: 'client');
Route::get('application.json', function (Dedoc\Scramble\Generator $generator) {
config()->set('scramble.api_path', 'api/application');
config()->set('scramble.info.description', '
These are the Application API endpoints for admins.
They let you interact with your Panel on a root basis.
');
return $generator();
})->name('scramble.docs.application');
Route::get('client.json', function (Dedoc\Scramble\Generator $generator) {
config()->set('scramble.api_path', 'api/client');
config()->set('scramble.info.description', '
These are the Client API endpoints for individual users.
They let your users interact with your Panel.
');
return $generator();
})->name('scramble.docs.client');
Route::get('remote.json', function (Dedoc\Scramble\Generator $generator) {
config()->set('scramble.api_path', 'api/remote');
config()->set('scramble.info.description', '
These are the Remote API endpoints for Wings.
They let Wings interact with your Panel.
');
return $generator();
})->name('scramble.docs.remote');
Scramble::registerUiRoute(path: 'remote', api: 'remote');
Scramble::registerJsonSpecificationRoute(path: 'remote.json', api: 'remote');
Route::get('', fn () => '
<li><a href="/docs/api/application">Application API for Admins</a></li>
<li><a href="/docs/api/client">Client API for Users</a></li>
<li><a href="/docs/api/remote">Daemon API for Wings</a></li>
');
})->middleware(config('scramble.middleware', [RestrictedDocsAccess::class]));
});