add flower controller

This commit is contained in:
2023-05-24 22:01:37 +08:00
parent 589940adc2
commit 1400fcdeb4
14 changed files with 1099 additions and 69 deletions

View File

@@ -25,7 +25,26 @@ public class Program
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(options =>
{
options.OperationFilter<SwaggerHttpHeaderOperation>();
//options.OperationFilter<SwaggerHttpHeaderOperation>();
var scheme = new OpenApiSecurityScheme
{
Description = "授权头。 示例: \"RG//HkvcTZdBospBOT6OuoWfsc1GS+P/js9zFdflBr0=\"",
Reference = new OpenApiReference
{
Type = ReferenceType.SecurityScheme,
Id = "Authorization"
},
Scheme = "oauth2",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey
};
options.AddSecurityDefinition("Authorization", scheme);
options.AddSecurityRequirement(new OpenApiSecurityRequirement
{
[scheme] = Array.Empty<string>()
});
options.SwaggerDoc(Version, new OpenApiInfo
{
@@ -38,6 +57,7 @@ public class Program
});
builder.Services.AddDbContext<FlowerDatabase>(options => options.UseSqlite("DataSource=flower.db;Cache=Shared"));
builder.Services.AddScoped<SwaggerGenerator>();
var app = builder.Build();
@@ -64,12 +84,23 @@ public class SwaggerHttpHeaderOperation : IOperationFilter
/// <inheritdoc/>
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
operation.Parameters.Add(new OpenApiParameter
var required = context.ApiDescription.RelativePath switch
{
Name = "X-Auth",
In = ParameterLocation.Header,
Required = false,
Schema = new OpenApiSchema { Type = "string" }
});
"user/update" or
"user/profile" or
"user/logout" => true,
_ => false
};
if (required)
{
operation.Parameters.Add(new OpenApiParameter
{
Name = "Authorization",
Description = "授权 Token",
In = ParameterLocation.Header,
Required = true,
Schema = new OpenApiSchema { Type = "string" }
});
}
}
}