diff --git a/backend/Directory.Packages.props b/backend/Directory.Packages.props
index 6673224..5696310 100644
--- a/backend/Directory.Packages.props
+++ b/backend/Directory.Packages.props
@@ -14,5 +14,6 @@
+
\ No newline at end of file
diff --git a/backend/src/Tnsu.ApprovalRoute.Api/Program.cs b/backend/src/Tnsu.ApprovalRoute.Api/Program.cs
index 01a6c2d..76e4a2d 100644
--- a/backend/src/Tnsu.ApprovalRoute.Api/Program.cs
+++ b/backend/src/Tnsu.ApprovalRoute.Api/Program.cs
@@ -3,6 +3,7 @@ using Extensions.Hosting.AsyncInitialization;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
+using Microsoft.OpenApi;
using Tnsu.ApprovalRoute.Api.Auth;
using Tnsu.ApprovalRoute.Application;
using Tnsu.ApprovalRoute.Application.Common.Interfaces;
@@ -15,7 +16,33 @@ builder.Services.AddApprovalRouteApplication();
builder.Services.AddApprovalRouteAuth(builder.Configuration);
builder.Services.AddHttpContextAccessor();
builder.Services.AddScoped();
-builder.Services.AddOpenApi();
+builder.Services.AddOpenApi(options =>
+{
+ options.AddDocumentTransformer((document, _, _) =>
+ {
+ document.Components ??= new OpenApiComponents();
+ document.Components.SecuritySchemes ??= new Dictionary();
+ document.Components.SecuritySchemes["Bearer"] = new OpenApiSecurityScheme
+ {
+ Type = SecuritySchemeType.Http,
+ Scheme = "bearer",
+ BearerFormat = "JWT",
+ Description = "Введите JWT токен"
+ };
+ return Task.CompletedTask;
+ });
+ options.AddOperationTransformer((operation, context, _) =>
+ {
+ operation.Security =
+ [
+ new OpenApiSecurityRequirement
+ {
+ [new OpenApiSecuritySchemeReference("Bearer", context.Document)] = []
+ }
+ ];
+ return Task.CompletedTask;
+ });
+});
builder.Services.AddHealthChecks();
builder.Services.AddControllers()
.AddJsonOptions(o => o.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));
@@ -23,7 +50,16 @@ builder.Services.AddControllers()
var app = builder.Build();
if (app.Environment.IsDevelopment())
+{
app.MapOpenApi();
+ app.UseSwaggerUI(c =>
+ {
+ c.SwaggerEndpoint("/openapi/v1.json", "Tnsu Approval Route v1");
+ c.RoutePrefix = string.Empty;
+ c.ConfigObject.AdditionalItems["persistAuthorization"] = true;
+ c.EnableTryItOutByDefault();
+ });
+}
app.MapHealthChecks("/health");
diff --git a/backend/src/Tnsu.ApprovalRoute.Api/Tnsu.ApprovalRoute.Api.csproj b/backend/src/Tnsu.ApprovalRoute.Api/Tnsu.ApprovalRoute.Api.csproj
index 325ff39..72b635e 100644
--- a/backend/src/Tnsu.ApprovalRoute.Api/Tnsu.ApprovalRoute.Api.csproj
+++ b/backend/src/Tnsu.ApprovalRoute.Api/Tnsu.ApprovalRoute.Api.csproj
@@ -12,5 +12,6 @@
all
runtime; build; native; contentfiles; analyzers; buildtransitive
+