diff --git a/config/openapi.php b/config/openapi.php index 62299dec..48fb1a56 100644 --- a/config/openapi.php +++ b/config/openapi.php @@ -31,7 +31,7 @@ ], 'security' => [ - // GoldSpecDigital\ObjectOrientedOAS\Objects\SecurityRequirement::create()->securityScheme('JWT'), + // 'JWT', ], // Non standard attributes used by code/doc generation tools can be added here diff --git a/docs/security.md b/docs/security.md index ae849a14..d64752a1 100644 --- a/docs/security.md +++ b/docs/security.md @@ -13,7 +13,7 @@ After you generate a security scheme, it will be declared in the `securityScheme ```php 'security' => [ - GoldSpecDigital\ObjectOrientedOAS\Objects\SecurityRequirement::create()->securityScheme('BearerToken'), + 'BearerToken', ], ``` diff --git a/src/Generator.php b/src/Generator.php index 24f583a8..740cb208 100644 --- a/src/Generator.php +++ b/src/Generator.php @@ -2,6 +2,7 @@ namespace Vyuldashev\LaravelOpenApi; +use GoldSpecDigital\ObjectOrientedOAS\Objects\SecurityRequirement; use GoldSpecDigital\ObjectOrientedOAS\OpenApi; use Illuminate\Support\Arr; use Vyuldashev\LaravelOpenApi\Builders\ComponentsBuilder; @@ -50,13 +51,19 @@ public function generate(string $collection = self::COLLECTION_DEFAULT): OpenApi $components = $this->componentsBuilder->build($collection, Arr::get($middlewares, 'components', [])); $extensions = Arr::get($this->config, 'collections.'.$collection.'.extensions', []); + $securitySchemeNames = Arr::get($this->config, 'collections.'.$collection.'.security', []); + $securitySchemes = Arr::map( + $securitySchemeNames, + fn(string $name) => SecurityRequirement::create()->securityScheme($name) + ); + $openApi = OpenApi::create() ->openapi(OpenApi::OPENAPI_3_0_2) ->info($info) ->servers(...$servers) ->paths(...$paths) ->components($components) - ->security(...Arr::get($this->config, 'collections.'.$collection.'.security', [])) + ->security(...$securitySchemes) ->tags(...$tags); foreach ($extensions as $key => $value) {