using Auth.Contracts.DTOs.Auth; using Auth.Domain; using Auth.Domain.Entities; using Auth.API.Config; using Auth.API.Config; using Auth.API.Endpoints.v1.UserEndpoints; using Auth.API.Endpoints.v1; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Auth.Domain.Entities.HR; var builder = WebApplication.CreateBuilder(args); builder.Services.AddSwagger(); builder.Services.Configure(builder.Configuration.GetSection("JWT")); // builder.Services.AddDbContext( // options => options.(builder.Configuration["ConnectionStrings:maria"], ServerVersion.AutoDetect(builder.Configuration["ConnectionStrings:maria"]))); builder.Services.AddDbContext(options => options.UseNpgsql(builder.Configuration.GetConnectionString("PostgreDB")) ); builder .Services.AddIdentity() .AddRoles() .AddEntityFrameworkStores() .AddDefaultTokenProviders(); builder.Services.AddCustomCors(); builder.Services.RegFluentEmail(builder.Configuration); builder.Services.Authenticate(builder.Configuration); builder.Services.AddPermissionPolicies(); builder.Services.Authorize(); builder.Services.RegisterServices(); // builder.Services.AddAntiforgery(); // builder.Services.AddOpenApi(); var app = builder.Build(); using (var scope = app.Services.CreateScope()) { var db = scope.ServiceProvider.GetRequiredService(); db.Database.Migrate(); // Applies pending migrations } // app.UseHttpsRedirection(); // app.UseStaticFiles(); // app.UseRouting(); app.UseCors("default"); app.UseAuthentication(); app.UseAuthorization(); app.MapOpenApi(); if (app.Environment.IsDevelopment()) { app.UseSwag(); } // app.UseAntiforgery(); app.MapGroup("api/v1/").UserEndpoints().WithTags("users").RequireCors("default"); app.MapGroup("api/v1/").AuthEndpoints().WithTags("Auth").RequireCors("default"); app.MapGroup("api/v1/").RoleEndpoints().WithTags("Roles").RequireCors("default"); app.Run(); // Add services to the container. // Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi