using marlin.web.Controllers.Api; using marlin.web.Data; using marlin.web.Models; using marlin.web.Services; using Microsoft.EntityFrameworkCore; using ProtoBuf.Grpc.Server; DotNetEnv.Env.NoClobber().TraversePath().Load(); var builder = WebApplication.CreateBuilder(args); builder.Services.AddCodeFirstGrpc(); builder.Services.AddDbContext(options => options .UseNpgsql(builder.Configuration.GetConnectionString("Master")) .UseSnakeCaseNamingConvention()); builder.Services.AddScoped(); builder.Services .AddAuthentication(AgentSchemeOptions.Name) .AddScheme(AgentSchemeOptions.Name, null); builder.Services.AddAuthorization(options => { options.AddPolicy("Agent", p => p.RequireClaim("agent_id")); options.AddPolicy("JobScoped", p => p.RequireClaim("agent_id").RequireClaim("job_id")); }); builder.Services.AddHostedService(); builder.Services.AddSingleton(); builder.Services.AddHostedService(sp => sp .GetRequiredService()); // Add services to the container. builder.Services.AddControllersWithViews(options => options.OutputFormatters.RemoveType()); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseHttpsRedirection(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapGrpcService(); app.MapStaticAssets(); app .MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}") .WithStaticAssets(); app.Run();