/* * This file is part of FirmTracker - Server. * * FirmTracker - Server is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FirmTracker - Server is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FirmTracker - Server. If not, see . */ using NHibernate; using NHibernate.Cfg; using NHibernate.Dialect; using NHibernate.Driver; using FirmTracker_Server.Controllers; using FirmTracker_Server.nHibernate.Products; using FirmTracker_Server.nHibernate; using FirmTracker_Server.Utilities.Converters; using FirmTracker_Server.Utilities.Swagger; using FluentValidation; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.HttpOverrides; using Microsoft.AspNetCore.Identity; using Microsoft.IdentityModel.Tokens; using AutoMapper; using Microsoft.AspNetCore.Authentication; using System.Text; using FirmTracker_Server.Entities; using FirmTracker_Server.Middleware; using FirmTracker_Server.Services; using System.Reflection; using FirmTracker_Server.Mappings; namespace FirmTracker_Server { internal static class Program { public static async Task Main(string[] args) { var builder = WebApplication.CreateBuilder(args); string appDirectory = Directory.GetCurrentDirectory(); string configFilePath = Path.Combine(appDirectory, "appsettings.json"); string connectionString = ""; if (File.Exists(configFilePath)) { var config = new ConfigurationBuilder() .AddJsonFile(configFilePath) .Build(); var connectionstringsection = config.GetSection("AppSettings:ConnectionString"); connectionString = connectionstringsection.Value; SessionFactory.Init(connectionString); } else { Console.WriteLine($"The configuration file '{configFilePath}' was not found."); } TestClass test = new TestClass(); test.AddTestProduct(); builder.Services.AddCors(options => { options.AddPolicy("AllowSpecificOrigin", policy => policy.WithOrigins("http://localhost:3000", "https://localhost:7039", "https://localhost:5075", "https://localhost:3000") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials()); }); builder.Services.ConfigureAutoMapper(); builder.Services.ConfigureServiceInjection(); builder.Services.AddControllers() .AddJsonOptions(options => { options.JsonSerializerOptions.Converters.Add(new DateTimeConverter()); }); ; builder.ConfigureAuthentication(); builder.Services.AddAuthorization(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(c => { c.SchemaFilter(); }); var app = builder.Build(); var configSwagger = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .Build(); var port = configSwagger.GetValue("Port", 5075); var port2 = configSwagger.GetValue("Port", 7039); app.Urls.Add($"http://*:{port}"); app.Urls.Add($"https://*:{port2}"); try { app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint($"/swagger/v1/swagger.json", "FirmTracker - TEST"); c.RoutePrefix = "swagger"; }); Console.WriteLine("uruchomiono swaggera"); app.UseHttpsRedirection(); } catch (Exception ex) { Console.WriteLine("Nie udało się uruchomić swaggera"); } app.UseRouting(); app.UseCors("AllowSpecificOrigin"); app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); var configuration = new Configuration(); app.Run(); } private static void ConfigureAuthentication(this WebApplicationBuilder builder) { var authenticationSettings = new Authentication.AuthenticationSettings(); builder.Configuration.GetSection("TokenConfig").Bind(authenticationSettings); builder.Services.AddAuthentication(option => { option.DefaultAuthenticateScheme = "Bearer"; option.DefaultScheme = "Bearer"; option.DefaultChallengeScheme = "Bearer"; }).AddJwtBearer(options => { options.RequireHttpsMetadata = false; options.SaveToken = true; options.TokenValidationParameters = new TokenValidationParameters { ValidIssuer = authenticationSettings.JwtIssuer, ValidAudience = authenticationSettings.JwtIssuer, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(authenticationSettings.JwtSecKey)), }; }); builder.Services.AddSingleton(authenticationSettings); } private static void ConfigureAutoMapper(this IServiceCollection services) { var mapperConfig = new MapperConfiguration(mc => { mc.AddProfile(); // mc.AddProfile(); }); var mapper = mapperConfig.CreateMapper(); services.AddSingleton(mapper); services.AddAutoMapper(Assembly.GetExecutingAssembly()); } private static void ConfigureServiceInjection(this IServiceCollection services) { services.AddScoped(); services.AddScoped(); services.AddScoped, PasswordHasher>(); services.AddMvc(); } } }