Example #1
0
        public void Apply(Microsoft.OpenApi.Models.OpenApiOperation operation, Swashbuckle.AspNetCore.SwaggerGen.OperationFilterContext context)
        {
            var isAuthorized = (context.MethodInfo.DeclaringType.GetCustomAttributes(true).OfType <Microsoft.AspNetCore.Authorization.AuthorizeAttribute>().Any() ||
                                context.MethodInfo.GetCustomAttributes(true).OfType <Microsoft.AspNetCore.Authorization.AuthorizeAttribute>().Any()) &&
                               !context.MethodInfo.GetCustomAttributes(true).OfType <Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute>().Any();   // this excludes methods with AllowAnonymous attribute

            if (!isAuthorized)
            {
                return;
            }

            operation.Responses.TryAdd("401", new OpenApiResponse {
                Description = "Unauthorized"
            });
            operation.Responses.TryAdd("403", new OpenApiResponse {
                Description = "Forbidden"
            });

            var jwtbearerScheme = new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference {
                    Type = ReferenceType.SecurityScheme, Id = "bearer"
                }
            };

            operation.Security = new List <OpenApiSecurityRequirement>
            {
                new OpenApiSecurityRequirement {
                    [jwtbearerScheme] = new string [] {}
                }
            };
        }
        public void Apply(Microsoft.OpenApi.Models.OpenApiOperation operation, OperationFilterContext context)
        {
            var filters = context.ApiDescription.ActionDescriptor.FilterDescriptors.Select(filterInfo => filterInfo.Filter).ToList();

            var isAuthorized = filters.Any(filter => filter is Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter);

            var allowAnonymous = filters.Any(filter => filter is Microsoft.AspNetCore.Mvc.Authorization.IAllowAnonymousFilter);

            if (!isAuthorized || allowAnonymous)
            {
                return;
            }

            if (operation.Parameters == null)
            {
                operation.Parameters = new List <Microsoft.OpenApi.Models.OpenApiParameter>();
            }

            operation.Parameters.Add(new OpenApiParameter
            {
                Name        = "Authorization",
                In          = Microsoft.OpenApi.Models.ParameterLocation.Header,
                Description = "Access token",
                Required    = true,
            });
        }
Example #3
0
 public void Apply(Microsoft.OpenApi.Models.OpenApiOperation operation,
                   OperationFilterContext context)
 {
     if (operation.OperationId == "Post")
     {
         // operation.
         // operation.Parameters = new List<OpenApiParameter>
         // {
         //     new OpenApiParameter
         //     {
         //         Name = "myFile",
         //         Required = true,
         //         Schema = new OpenApiSchema
         //         {
         //             Type = "file"
         //         } ,
         //         In = ParameterLocation.Path,
         //     }
         // };
     }
 }
Example #4
0
 /// <summary>
 /// Add one operation into this path item.
 /// </summary>
 /// <param name="operationType">The operation type kind.</param>
 /// <param name="operation">The operation item.</param>
 public void AddOperation(OperationType operationType, OpenApiOperation operation)
 {
     Operations[operationType] = operation;
 }
Example #5
0
 public static bool IsOperationIdPluralized(this OpenApiOperation openApiOperation, OperationType operationType)
 {
     return(IsOperationNamePluralized(openApiOperation, operationType));
 }