135 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			PHP
		
	
	
<?php declare(strict_types=1);
 | 
						|
 | 
						|
/**
 | 
						|
 * @license Apache 2.0
 | 
						|
 */
 | 
						|
 | 
						|
namespace OpenApi\Annotations;
 | 
						|
 | 
						|
use OpenApi\Generator;
 | 
						|
 | 
						|
/**
 | 
						|
 * @Annotation
 | 
						|
 * A "Security Scheme Object":
 | 
						|
 * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#securitySchemeObject
 | 
						|
 */
 | 
						|
class SecurityScheme extends AbstractAnnotation
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * $ref See http://json-schema.org/latest/json-schema-core.html#rfc.section.7.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    public $ref = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * The key into OpenApi->security array.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    public $securityScheme = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * The type of the security scheme.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    public $type = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * A short description for security scheme.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    public $description = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * The name of the header or query parameter to be used.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    public $name = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Required The location of the API key.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    public $in = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * The flow used by the OAuth2 security scheme.
 | 
						|
     *
 | 
						|
     * @var Flow[]
 | 
						|
     */
 | 
						|
    public $flows = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an
 | 
						|
     * authorization server, so this information is primarily for documentation purposes.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    public $bearerFormat = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * The name of the HTTP Authorization scheme.
 | 
						|
     *
 | 
						|
     * @see https://tools.ietf.org/html/rfc7235#section-5.1
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    public $scheme = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL.
 | 
						|
     *
 | 
						|
     * @var string
 | 
						|
     */
 | 
						|
    public $openIdConnectUrl = Generator::UNDEFINED;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    public static $_required = ['securityScheme', 'type'];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    public static $_types = [
 | 
						|
        'type' => ['http', 'apiKey', 'oauth2', 'openIdConnect'],
 | 
						|
        'description' => 'string',
 | 
						|
        'name' => 'string',
 | 
						|
        'bearerFormat' => 'string',
 | 
						|
        'in' => ['query', 'header', 'cookie'],
 | 
						|
    ];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    public static $_nested = [
 | 
						|
        Flow::class => ['flows', 'flow'],
 | 
						|
    ];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    public static $_parents = [
 | 
						|
        Components::class,
 | 
						|
    ];
 | 
						|
 | 
						|
    /**
 | 
						|
     * @inheritdoc
 | 
						|
     */
 | 
						|
    public function merge(array $annotations, bool $ignore = false): array
 | 
						|
    {
 | 
						|
        $unmerged = parent::merge($annotations, $ignore);
 | 
						|
 | 
						|
        if ($this->type === 'oauth2') {
 | 
						|
            $this->name = Generator::UNDEFINED;
 | 
						|
        }
 | 
						|
 | 
						|
        return $unmerged;
 | 
						|
    }
 | 
						|
}
 |