using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.EntityFrameworkCore; using RazorPagesMovie.Data; using RazorPagesMovie.Models; using RazorPagesMovie.Services; using System.Text.Encodings.Web; using System.Text.Unicode; var builder = WebApplication.CreateBuilder(args); if (builder.Environment.IsDevelopment()) { builder.Configuration.AddJsonFile("appsettings.Local.json", optional: true, reloadOnChange: true); } builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("RazorPagesMovieContext") ?? throw new InvalidOperationException("Connection string 'RazorPagesMovieContext' not found."))); builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(options => { options.LoginPath = "/Login"; options.AccessDeniedPath = "/Login"; }); builder.Services.AddAuthorization(); builder.Services.AddRazorPages(options => { options.Conventions.AuthorizeFolder("/Admin"); }); builder.Services.AddControllers(); builder.Services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All)); builder.Services.AddHttpClient(); builder.Services.AddSingleton(); builder.Services.AddHostedService(); var app = builder.Build(); using (var scope = app.Services.CreateScope()) { var services = scope.ServiceProvider; var context = services.GetRequiredService(); context.Database.Migrate(); SeedData.Initialize(services); } if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); app.Run();