using Blazored.LocalStorage; using HealthcareManagerUiWebAssem; using HealthcareManagerUiWebAssem.Services.AdminUserManagement; using HealthcareManagerUiWebAssem.Services.Authentication; using HealthcareManagerUiWebAssem.Services.DoctorManagement; using HealthcareManagerUiWebAssem.Services.PatientManagement; using HealthcareManagerUiWebAssem.Services.RequestHttp; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.RootComponents.Add("#app"); builder.RootComponents.Add("head::after"); // Configure API settings var apiSettings = builder.Configuration.GetSection("ApiSettings").Get(); builder.Services.AddSingleton(apiSettings); // Configure custom HttpClient handler builder.Services.AddTransient(); builder.Services.AddHttpClient((sp, httpClient) => { var settings = sp.GetRequiredService(); httpClient.BaseAddress = new Uri(settings.BaseAddress); }).AddHttpMessageHandler(); builder.Services.AddBlazoredLocalStorage(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); // Register CustomAuthenticationStateProvider as the AuthenticationStateProvider builder.Services.AddScoped(); builder.Services.AddAuthorizationCore(config => { config.AddPolicy("AdminOnly", policy => policy.RequireRole(UserRoles.Admin)); config.AddPolicy("DoctorOnly", policy => policy.RequireRole(UserRoles.Doctor)); config.AddPolicy("PatientOnly", policy => policy.RequireRole(UserRoles.Patient)); }); await builder.Build().RunAsync();