using administration.Models; using administration.Services; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; using static DBConnectionController; namespace administration { public class Program { public static void Main(string[] args) { // Charger les variables d'environnement depuis .env DotNetEnv.Env.Load(); var builder = WebApplication.CreateBuilder(args); builder.Services.AddDbContext(options => options.UseSqlServer( Environment.GetEnvironmentVariable("ADMIN_DB_CONNECTION"), sqlOptions => sqlOptions.EnableRetryOnFailure() ) ); AppSettings.Initialize(builder.Configuration); builder.Services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(300); // Durée d'expiration options.Cookie.HttpOnly = true; options.Cookie.IsEssential = true; }); builder.Services.AddAuthentication("BasicAuthentication") .AddScheme("BasicAuthentication", null); builder.Services.AddAuthorization(); // Ajouter les services MVC builder.Services.AddControllersWithViews(); builder.Services.AddHttpContextAccessor(); // obligatoire builder.Services.AddScoped(); // Configurer la politique CORS pour autoriser l'accès depuis le frontend local builder.Services.AddCors(options => { options.AddPolicy("AllowFrontend", policy => { policy.WithOrigins("http://localhost:5018") .AllowAnyHeader() .AllowAnyMethod(); }); }); var app = builder.Build(); // Configuration du pipeline HTTP if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseCors("AllowFrontend"); app.UseSession(); app.UseAuthentication(); app.UseAuthorization(); // Route par défaut app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run(); } } }