40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
using Scalar.AspNetCore;
|
|
using Serilog;
|
|
using Tiku.Api.Logging;
|
|
using Tiku.Api.Middleware;
|
|
using Tiku.Api.Options;
|
|
|
|
namespace Tiku.Api.Configuration;
|
|
|
|
public static class ApplicationBuilderExtensions
|
|
{
|
|
public static WebApplication UseApiPipeline(this WebApplication app)
|
|
{
|
|
if (app.Environment.IsDevelopment())
|
|
{
|
|
app.MapOpenApi().AllowAnonymous();
|
|
app.MapScalarApiReference(options => options
|
|
.WithTitle("TIKU Backend API")
|
|
.AddPreferredSecuritySchemes("BearerAuth")
|
|
.EnablePersistentAuthentication())
|
|
.AllowAnonymous();
|
|
}
|
|
|
|
app.UseSerilogRequestLogging(SerilogRequestLogging.ConfigureRequestLogging);
|
|
app.UseMiddleware<ExceptionHandlingMiddleware>();
|
|
app.UseForwardedHeaders();
|
|
app.UseHttpsRedirection();
|
|
app.UseRouting();
|
|
app.UseCors(CorsOptions.PolicyName);
|
|
app.UseMiddleware<TenantResolutionMiddleware>();
|
|
app.UseAuthentication();
|
|
app.UseMiddleware<AuthRateLimitPartitionMiddleware>();
|
|
app.UseRateLimiter();
|
|
app.UseMiddleware<CurrentPrincipalMiddleware>();
|
|
app.UseAuthorization();
|
|
app.MapControllers();
|
|
|
|
return app;
|
|
}
|
|
}
|