using SumaTube.LogConfig; using Microsoft.AspNetCore.Authentication.Cookies; using Microsoft.AspNetCore.Authentication.Google; using Microsoft.AspNetCore.Authentication.MicrosoftAccount; using Microsoft.AspNetCore.Localization; using Microsoft.AspNetCore.Mvc.Razor; using Microsoft.Extensions.Options; using Serilog; using Serilog.Sinks.Grafana.Loki; using Stripe; using Stripe.Forwarding; using System.Globalization; using System.Security.Policy; using SumaTube.Crosscutting.Logging.Configuration; using SumaTube.Application.Register; using SumaTube.Infra.Register; var builder = WebApplication.CreateBuilder(args); builder.Host.UseSerilog((context, services, configuration) => { builder.SetLoggerConfiguration(configuration, services, context.Configuration); }); // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddApplicationServices(); builder.Services.AddInfraServices(builder.Configuration); var config = builder.Configuration; //builder.Services.AddAuthentication() builder.Services.AddAuthentication( options => { options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = MicrosoftAccountDefaults.AuthenticationScheme; }) .AddCookie(options => { options.ExpireTimeSpan = TimeSpan.FromMinutes(20); options.SlidingExpiration = true; options.AccessDeniedPath = "/Forbidden/"; }) .AddGoogle(googleOptions => { googleOptions.ClientId = config["Authentication:Google:ClientId"]; googleOptions.ClientSecret = config["Authentication:Google:ClientSecret"]; }) .AddMicrosoftAccount(microsoftOptions => { microsoftOptions.ClientId = config["Authentication:Microsoft:ClientId"]; //microsoftOptions.ClientSecret = "2a7cb1bd-037a-49fa-9e5e-2b2655431af9"; microsoftOptions.ClientSecret = config["Authentication:Microsoft:ClientSecret"]; }) ; builder.Services.AddLocalization(options => options.ResourcesPath = "Resources"); builder.Services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization(); builder.Services.Configure(options => { var supportedCultures = new List { new CultureInfo("pt-BR"), new CultureInfo("en") }; options.DefaultRequestCulture = new RequestCulture("pt-BR"); options.SupportedCultures = supportedCultures; options.SupportedUICultures = supportedCultures; }); StripeConfiguration.ApiKey = builder.Configuration["Stripe:SecretKey"]; builder.Services.AddControllersWithViews(); builder.Services.AddHttpClient(); var app = builder.Build(); app.UseSerilogRequestLogging(options => { options.EnrichDiagnosticContext = (diagnosticContext, httpContext) => { diagnosticContext.Set("UserAgent", httpContext.Request.Headers["User-Agent"]); diagnosticContext.Set("ClientIP", httpContext.Connection.RemoteIpAddress); diagnosticContext.Set("UserName", httpContext.User?.Identity?.Name ?? "Anonymous"); }; }); var locOptions = app.Services.GetService>(); app.UseRequestLocalization(locOptions.Value); app.UseMiddleware(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.UseRequestLocalization(); Log.Information("Aplicação iniciando"); Log.Warning("Este é um aviso de teste"); Log.Error("Este é um erro de teste para verificar o Seq"); app.Run();