using System.Globalization; using System.Reflection; using CodeLiturgy.Data.Auth; using CodeLiturgy.Startup.Application; using CodeLiturgy.Views.Utils; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Localization; using Microsoft.OpenApi.Models; namespace CodeLiturgy.Views; public class Startup { private readonly IConfiguration _configuration; private readonly IWebHostEnvironment _environment; /// /// Startup ctor /// public Startup(IConfiguration configuration, IWebHostEnvironment hostEnvironment) { _configuration = configuration; _environment = hostEnvironment; } /// /// Configure Services /// /// Dependency injection public void ConfigureServices(IServiceCollection services) { services.AddSingleton(); // Add services to the container. services.Configure(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddLogging(builder => { builder.AddSimpleConsole(); }); if (_environment.IsDevelopment()) { services.ConfigureSwagger(); } services.AddControllersWithViews(x => x.EnableEndpointRouting = false); services.AddAuthServerServices(_configuration, _environment); services.PreparePostgresqlDatabasePool(_configuration, _environment); } /// /// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. /// /// Object with the necessary data to configure an application's request pipeline /// Provides information about the web hosting environment an application is running in. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // Configure the HTTP request pipeline. if (!_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.UseSwagger(); app.UseSwaggerUI(c => { c.RoutePrefix = "swagger"; c.SwaggerEndpoint("/swagger/v1/swagger.json", "CodeLiturgy.Views v1"); }); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseRequestLocalization(options => { var supportedCultures = CultureInfo.GetCultures(CultureTypes.AllCultures); options.DefaultRequestCulture = new RequestCulture("en-GB"); options.SupportedCultures = supportedCultures; options.SupportedUICultures = supportedCultures; }); app.UseAuthentication(); app.UseAuthorization(); app.UseSession(); app.UseMvcWithDefaultRoute(); } }