using Serilog; using Serilog.Exceptions; using System.Text; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; using Renis.Database; using Microsoft.EntityFrameworkCore; using Renis.Repositories; using Renis.Services.Jwt; using renis_backend.Services.Polis; using renis_backend.Services; using renis_backend.Services.UserPolises; using renis_backend.Services.Users; var builder = WebApplication.CreateBuilder(args); // Database context builder.Services.AddDbContext(x => { var Hostname=Environment.GetEnvironmentVariable("DB_HOSTNAME") ?? "localhost"; var Port=Environment.GetEnvironmentVariable("DB_PORT") ?? "5432"; var Name=Environment.GetEnvironmentVariable("DB_NAME") ?? "postgres"; var Username=Environment.GetEnvironmentVariable("DB_USERNAME") ?? "postgres"; var Password=Environment.GetEnvironmentVariable("DB_PASSWORD") ?? "postgres"; x.UseNpgsql($"Server={Hostname}:{Port};Database={Name};Uid={Username};Pwd={Password};"); }); // Repos builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); // Services builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); configureLogging(); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } // Authorization builder.Services.AddAuthorization(); builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { string issuer = Environment.GetEnvironmentVariable("JWT_ISSUER") ?? "renis"; string audience = Environment.GetEnvironmentVariable("JWT_AUDIENCE") ?? "renis"; string secret = Environment.GetEnvironmentVariable("JWT_SECRET") ?? "TopSecretKeyForTheProtectionOfChocolateCookiesAndOtherSweetThings"; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = issuer, ValidateAudience = true, ValidAudience = audience, ValidateLifetime = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret)), ValidateIssuerSigningKey = true }; }); app.UseHttpsRedirection(); app.Run(); void configureLogging(){ var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"; var configuration = new ConfigurationBuilder() .AddJsonFile("appsettings.json",optional:false,reloadOnChange:true).Build(); Console.WriteLine(environment); Console.WriteLine(configuration); Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .Enrich.WithExceptionDetails() .WriteTo.Debug() .WriteTo.Console() .Enrich.WithProperty("Environment",environment) .ReadFrom.Configuration(configuration) .CreateLogger(); }