|
1 | | -using Microsoft.Extensions.DependencyInjection; |
| 1 | +using System.Collections.Generic; |
| 2 | +using Microsoft.Extensions.DependencyInjection; |
2 | 3 | using Microsoft.Extensions.Options; |
3 | | -using Microsoft.OpenApi.Models; |
| 4 | +using Microsoft.OpenApi; |
4 | 5 | using Swashbuckle.AspNetCore.Filters; |
5 | 6 | using Swashbuckle.AspNetCore.SwaggerGen; |
6 | 7 |
|
7 | 8 | namespace Samhammer.Swagger.Authentication.Guest |
8 | 9 | { |
9 | | - public class ConfigureSwaggerGenGuest : IConfigureOptions<SwaggerGenOptions> |
| 10 | + public class ConfigureSwaggerGenGuest(IOptions<SwaggerGuestOptions> options) : IConfigureOptions<SwaggerGenOptions> |
10 | 11 | { |
11 | | - private SwaggerGuestOptions Options { get; } |
| 12 | + private SwaggerGuestOptions Options { get; } = options.Value; |
12 | 13 |
|
13 | 14 | private const string HeaderKey = "GuestID"; |
14 | 15 |
|
15 | | - public ConfigureSwaggerGenGuest(IOptions<SwaggerGuestOptions> options) |
16 | | - { |
17 | | - Options = options.Value; |
18 | | - } |
19 | | - |
20 | 16 | public void Configure(SwaggerGenOptions swaggerGen) |
21 | 17 | { |
22 | 18 | if (!Options.Enabled) |
23 | 19 | { |
24 | 20 | return; |
25 | 21 | } |
26 | 22 |
|
27 | | - var apiKeyRef = new OpenApiReference |
28 | | - { |
29 | | - Id = "Guest", |
30 | | - Type = ReferenceType.SecurityScheme, |
31 | | - }; |
| 23 | + const string schemeId = "Guest"; |
32 | 24 |
|
33 | 25 | var apiKeyScheme = new OpenApiSecurityScheme |
34 | 26 | { |
35 | | - Reference = apiKeyRef, |
36 | 27 | Type = SecuritySchemeType.ApiKey, |
37 | 28 | In = ParameterLocation.Header, |
38 | 29 | Name = HeaderKey, |
39 | 30 | }; |
40 | 31 |
|
41 | | - swaggerGen.AddSecurityDefinition(apiKeyRef.Id, apiKeyScheme); |
42 | | - swaggerGen.AddSecurityRequirement(new OpenApiSecurityRequirement { { apiKeyScheme, new string[] { } } }); |
| 32 | + swaggerGen.AddSecurityDefinition(schemeId, apiKeyScheme); |
| 33 | + |
| 34 | + swaggerGen.AddSecurityRequirement(document => new OpenApiSecurityRequirement |
| 35 | + { |
| 36 | + [new OpenApiSecuritySchemeReference(schemeId, document)] = new List<string>(), |
| 37 | + }); |
43 | 38 |
|
44 | | - swaggerGen.OperationFilter<SecurityRequirementsOperationFilter>(true, apiKeyScheme.Reference.Id); |
| 39 | + swaggerGen.OperationFilter<SecurityRequirementsOperationFilter>(true, schemeId); |
45 | 40 |
|
46 | 41 | if (!swaggerGen.OperationFilterDescriptors.Exists(f => f.Type == typeof(AppendAuthorizeToSummaryOperationFilter))) |
47 | 42 | { |
|
0 commit comments