From bfcba0beb714e8d70cc4d4fc6472f26cac86a102 Mon Sep 17 00:00:00 2001 From: shept Date: Sun, 27 Apr 2025 15:56:47 +0500 Subject: [PATCH] add some filter to see which endpoints require authorization and which not --- .../Filters/EndpointAuthRequirementFilter.cs | 36 +++++++++++++++++++ SurveyBackend/SurveyBackend.API/Program.cs | 17 ++------- 2 files changed, 39 insertions(+), 14 deletions(-) create mode 100644 SurveyBackend/SurveyBackend.API/Filters/EndpointAuthRequirementFilter.cs diff --git a/SurveyBackend/SurveyBackend.API/Filters/EndpointAuthRequirementFilter.cs b/SurveyBackend/SurveyBackend.API/Filters/EndpointAuthRequirementFilter.cs new file mode 100644 index 0000000..37ff2a0 --- /dev/null +++ b/SurveyBackend/SurveyBackend.API/Filters/EndpointAuthRequirementFilter.cs @@ -0,0 +1,36 @@ +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.AspNetCore.Authorization; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace SurveyBackend.Filters; + +public class EndpointAuthRequirementFilter : IOperationFilter +{ + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + if (!context.ApiDescription + .ActionDescriptor + .EndpointMetadata + .OfType() + .Any()) + { + return; + } + + operation.Security = new List + { + new OpenApiSecurityRequirement + { + [new OpenApiSecurityScheme + { + Reference = new OpenApiReference + { + Type = ReferenceType.SecurityScheme, + Id = JwtBearerDefaults.AuthenticationScheme + } + }] = new List() + } + }; + } +} \ No newline at end of file diff --git a/SurveyBackend/SurveyBackend.API/Program.cs b/SurveyBackend/SurveyBackend.API/Program.cs index cb36952..f0669cb 100644 --- a/SurveyBackend/SurveyBackend.API/Program.cs +++ b/SurveyBackend/SurveyBackend.API/Program.cs @@ -7,6 +7,7 @@ using SurveyBackend.Contexts; using SurveyBackend.Core.Contexts; using SurveyBackend.Core.Repositories; using SurveyBackend.Core.Services; +using SurveyBackend.Filters; using SurveyBackend.Infrastructure.Data; using SurveyBackend.Infrastructure.Repositories; using SurveyBackend.Middlewares; @@ -84,20 +85,8 @@ public class Program Name = "Authorization", Type = SecuritySchemeType.ApiKey }); - c.AddSecurityRequirement(new OpenApiSecurityRequirement - { - { - new OpenApiSecurityScheme - { - Reference = new OpenApiReference - { - Type = ReferenceType.SecurityScheme, - Id = JwtBearerDefaults.AuthenticationScheme - } - }, - Array.Empty() - } - }); + + c.OperationFilter(); var filePath = Path.Combine(System.AppContext.BaseDirectory, "SurveyBackend.API.xml"); c.IncludeXmlComments(filePath);