using AyCode.Interfaces.Messages; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Http.Features; using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; using System.Text; 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 TIAMWebApp.Server.Services; //using TIAM.Database.DataLayers.ServiceProviders; var builder = WebApplication.CreateBuilder(args); string MyAllowSpecificOrigins = "_myAllowSpecificOrigins"; // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); //builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DeveloperDbConnection")));; builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddCors(options => { options.AddPolicy(MyAllowSpecificOrigins, builder => { builder.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; }); 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();