using administration.Models; using administration.Services; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; 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); // ============================================== // 1️⃣ Configurer la base de données // ============================================== var dbConnection = Environment.GetEnvironmentVariable("ADMIN_DB_CONNECTION"); if (string.IsNullOrEmpty(dbConnection)) throw new Exception("❌ ADMIN_DB_CONNECTION est introuvable dans les variables d'environnement."); builder.Services.AddDbContext(options => options.UseSqlServer(dbConnection, sqlOptions => sqlOptions.EnableRetryOnFailure()) ); AppSettings.Initialize(builder.Configuration); // ============================================== // 2️⃣ Ajouter la session // ============================================== builder.Services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(300); // Expiration session options.Cookie.HttpOnly = true; options.Cookie.IsEssential = true; }); // ============================================== // 3️⃣ Ajouter l’authentification Basic // ============================================== builder.Services.AddAuthentication("BasicAuthentication") .AddScheme("BasicAuthentication", null); builder.Services.AddAuthorization(); // ============================================== // 4️⃣ Ajouter MVC + dépendances // ============================================== builder.Services.AddControllersWithViews(); builder.Services.AddHttpContextAccessor(); builder.Services.AddScoped(); // ============================================== // 5️⃣ CORS pour le frontend // ============================================== builder.Services.AddCors(options => { options.AddPolicy("AllowFrontend", policy => { policy.WithOrigins("http://localhost:5018", "https://administration.byakurepo.online") .AllowAnyHeader() .AllowAnyMethod(); }); }); // ============================================== // 6️⃣ Construire l'application // ============================================== var app = builder.Build(); // ============================================== // 7️⃣ Middleware Pipeline // ============================================== 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(); // ============================================== // 8️⃣ Routes // ============================================== app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run(); } } }