using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Http.Features; using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; using System.Text; using AyCode.Core.Loggers; using TIAM.Core.Loggers; using TIAM.Database; using TIAM.Database.DataLayers.Admins; using TIAM.Database.DataLayers.Auctions; using TIAM.Database.DataLayers.TransferDestinations; using TIAM.Database.DataLayers.Users; using TIAM.Entities.Emails; using TIAM.Services.Server; using TIAMWebApp.Shared.Application.Utility; using Microsoft.Extensions.DependencyInjection; using TIAMWebApp.Server.Controllers; using TIAMWebApp.Server.Services; using Microsoft.AspNetCore.Server.Kestrel.Core; //using TIAM.Database.DataLayers.ServiceProviders; var builder = WebApplication.CreateBuilder(args); const string myAllowSpecificOrigins = "_myAllowSpecificOrigins"; // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddCors(options => { options.AddPolicy(myAllowSpecificOrigins, policy => { policy.AllowAnyOrigin(); }); }); builder.Services.AddSwaggerGen(swagger => { swagger.SwaggerDoc("v1", new OpenApiInfo { Title = "API Title", Version = "V1", Description = "API Description" }); var securitySchema = new OpenApiSecurityScheme { Description = "Authorization header using the Bearer scheme. Example \"Authorization: Bearer {token}\"", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.Http, Scheme = "Bearer", Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }; swagger.AddSecurityDefinition(securitySchema.Reference.Id, securitySchema); swagger.AddSecurityRequirement(new OpenApiSecurityRequirement { {securitySchema,Array.Empty() } }); }); builder.Services.AddAuthentication(f => { f.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; f.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(k => { var key = Encoding.UTF8.GetBytes(builder.Configuration["JWT:Key"]); k.SaveToken = true; k.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = builder.Configuration["JWT:Issuer"], ValidAudience = builder.Configuration["JWT:Audience"], IssuerSigningKey = new SymmetricSecurityKey(key), ClockSkew = TimeSpan.Zero }; }); builder.Services.Configure(options => { options.MultipartBodyLengthLimit = 200000000; // Increase the limit to 200MB }); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.ConfigureApplicationCookie(options => { options.Cookie.HttpOnly = false; options.ExpireTimeSpan = TimeSpan.FromMinutes(5); options.LoginPath = "/Login"; options.SlidingExpiration = true; }); builder.WebHost.ConfigureKestrel((context, options) => { options.ListenAnyIP(7116, listenOptions => { listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3; listenOptions.UseHttps(); }); }); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseWebAssemblyDebugging(); } else { app.UseExceptionHandler("/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.SwaggerEndpoint("/swagger/v1/swagger.json", "v1"); }); //app.UseHttpsRedirection(); app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); app.UseAuthentication(); app.UseRouting(); //cors app.UseCors(myAllowSpecificOrigins); app.UseAuthorization(); app.UsePathBase("/"); app.MapRazorPages(); app.MapControllers(); app.MapFallbackToFile("index.html"); app.Run();