using Models; using Serilog; using Microsoft.EntityFrameworkCore; //TODO Make this configurable from appsettings Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.Console() //.WriteTo.File("logs/portfolioportal.txt", rollingInterval: RollingInterval.Day) .CreateLogger(); Log.Information("Starting Portfolio Portal ASP.NET Core Backend"); var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers() .AddNewtonsoftJson(); builder.Logging.AddSerilog(); var conString = builder.Configuration.GetConnectionString("PortfolioPortalConnection"); Log.Information($"Connection string: {conString}"); builder.Services.AddDbContext(options => options.UseSqlServer(conString) .EnableSensitiveDataLogging()); var app = builder.Build(); app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); // Custom JWT handling with Ed25519 validation // Just add [Authorize(Roles = )] to require validation on a component app.UseMiddleware(); // If this is the production build make sure we're always using HTTPS if (!app.Environment.IsDevelopment()) { // If an unhandled exception is encountered redirect to Error endpoint //TODO Create an error endpoint app.UseExceptionHandler("/Error"); app.UseHsts(); } else { // Generates a rich error page with detailed information such as the exception type, message, stack trace, request details, and more app.UseDeveloperExceptionPage(); } app.Run();