Add initial implementation of API, database, and user management components.

This commit is contained in:
2026-03-15 23:17:51 +01:00
commit 0543120f3b
53 changed files with 2241 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.OpenApi;
using System.Collections.Generic;
namespace MikrocopApi.Extensions;
public static class SwaggerExtensions
{
public static IServiceCollection AddSwaggerWithJwtAuth(this IServiceCollection services)
{
services.AddEndpointsApiExplorer();
services.AddSwaggerGen(options =>
{
const string schemeName = "Bearer";
options.SwaggerDoc("v1", new OpenApiInfo
{
Title = "Mikrocop API",
Version = "v1"
});
options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Name = "Authorization",
Type = SecuritySchemeType.Http,
Scheme = "bearer",
BearerFormat = "JWT",
In = ParameterLocation.Header,
Description = "Enter 'Bearer' followed by a space and your token, e.g., 'Bearer abc123'"
});
options.AddSecurityRequirement(document => new OpenApiSecurityRequirement
{
[new OpenApiSecuritySchemeReference("bearer", document)] = []
});
});
return services;
}
public static IApplicationBuilder UseSwaggerWithJwtAuth(this IApplicationBuilder app)
{
app.UseSwagger(options =>
{
options.PreSerializeFilters.Add((swaggerDoc, _) =>
{
swaggerDoc.Security =
[
new OpenApiSecurityRequirement
{
[new OpenApiSecuritySchemeReference("Bearer", swaggerDoc, null)] = new List<string>()
}
];
});
});
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/swagger/v1/swagger.json", "Mikrocop API v1");
options.EnablePersistAuthorization();
});
return app;
}
}