From ba756b947a3122ab418808247b58d5aa3a1bf2c4 Mon Sep 17 00:00:00 2001 From: djordy Date: Fri, 14 Feb 2025 16:35:57 +0100 Subject: [PATCH] Create security schema --- src/Describer/SecurityDescriber.php | 9 ++------- src/OpenApiPhp/Util.php | 9 +++++++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Describer/SecurityDescriber.php b/src/Describer/SecurityDescriber.php index c8d2588ca..3a45334d0 100644 --- a/src/Describer/SecurityDescriber.php +++ b/src/Describer/SecurityDescriber.php @@ -11,8 +11,8 @@ namespace Nelmio\ApiDocBundle\Describer; +use Nelmio\ApiDocBundle\OpenApiPhp\Util; use OpenApi\Annotations as OA; -use OpenApi\Generator; final class SecurityDescriber implements DescriberInterface { @@ -31,13 +31,8 @@ public function __construct(array $securitySchemes) public function describe(OA\OpenApi $api): void { - $securitySchemes = Generator::UNDEFINED !== $api->components && Generator::UNDEFINED !== $api->components->securitySchemes ? $api->components->securitySchemes : []; - foreach ($this->securitySchemes as $name => $securityScheme) { - $securitySchemes[] = new OA\SecurityScheme([ - 'securityScheme' => $name, - ...$securitySchemes, - ]); + Util::getSecuritySchema($api, $name, $securityScheme); } } } diff --git a/src/OpenApiPhp/Util.php b/src/OpenApiPhp/Util.php index 75d50ac2b..1067d3f39 100644 --- a/src/OpenApiPhp/Util.php +++ b/src/OpenApiPhp/Util.php @@ -110,6 +110,15 @@ public static function getSchema(OA\OpenApi $api, string $schema): OA\Schema return self::getIndexedCollectionItem($api->components, OA\Schema::class, $schema); } + public static function getSecuritySchema(OA\OpenApi $api, string $name, array $properties = []): OA\SecurityScheme + { + if (!$api->components instanceof OA\Components) { + $api->components = new OA\Components(['_context' => self::createWeakContext($api->_context)]); + } + + return self::getCollectionItem($api->components, OA\SecurityScheme::class, [...$properties, 'securityScheme' => $name]); + } + /** * Return an existing Property object from $schema->properties[] * having its member property set to $property.