169 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Core.Cerberos.Adapters.Extensions;
 | |
| using Core.Cerberos.Adapters.Helpers;
 | |
| using Core.Cerberos.Application.UseCases.Modules;
 | |
| using Core.Cerberos.Application.UseCases.Modules.Adapter;
 | |
| using Core.Cerberos.Application.UseCases.Modules.Input;
 | |
| using Core.Cerberos.Application.UseCases.Modules.Ports;
 | |
| using Core.Cerberos.Application.UseCases.Modules.Validator;
 | |
| using Core.Cerberos.Application.UseCases.Permissions;
 | |
| using Core.Cerberos.Application.UseCases.Permissions.Adapter;
 | |
| using Core.Cerberos.Application.UseCases.Permissions.Input;
 | |
| using Core.Cerberos.Application.UseCases.Permissions.Ports;
 | |
| using Core.Cerberos.Application.UseCases.Permissions.Validator;
 | |
| using Core.Cerberos.Application.UseCases.Role;
 | |
| using Core.Cerberos.Application.UseCases.Roles.Adapter;
 | |
| using Core.Cerberos.Application.UseCases.Roles.Input;
 | |
| using Core.Cerberos.Application.UseCases.Roles.Ports;
 | |
| using Core.Cerberos.Application.UseCases.Roles.Validator;
 | |
| using Core.Cerberos.Application.UseCases.Users;
 | |
| using Core.Cerberos.Application.UseCases.Users.Adapter;
 | |
| using Core.Cerberos.Application.UseCases.Users.Input;
 | |
| using Core.Cerberos.Application.UseCases.Users.Ports;
 | |
| using Core.Cerberos.Application.UseCases.Users.Validator;
 | |
| using Core.Cerberos.External.ClientConfiguration;
 | |
| using Core.Cerberos.Service.API.Extensions;
 | |
| using FluentValidation;
 | |
| using Lib.Architecture.BuildingBlocks;
 | |
| using Microsoft.AspNetCore.ResponseCompression;
 | |
| using System.IO.Compression;
 | |
| 
 | |
| var builder = WebApplication.CreateBuilder(args);
 | |
| 
 | |
| var authSettings = AuthHelper.GetAuthSettings(builder, "cerberos_service");
 | |
| 
 | |
| builder.Services.ConfigureAuthentication(builder.Configuration, authSettings);
 | |
| 
 | |
| builder.Host.ConfigureServices((context, services) =>
 | |
| {
 | |
|     services.AddCors(options =>
 | |
|     {
 | |
|         options.AddPolicy("AllowAll", policyBuilder =>
 | |
|             policyBuilder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
 | |
|     });
 | |
|     services.AddMvc().AddJsonOptions(options =>
 | |
|     {
 | |
|         options.JsonSerializerOptions.WriteIndented = true;
 | |
|         options.JsonSerializerOptions.MaxDepth = 20;
 | |
|         options.JsonSerializerOptions.NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals;
 | |
|     });
 | |
|     services.Configure<BrotliCompressionProviderOptions>(options =>
 | |
|     {
 | |
|         options.Level = CompressionLevel.SmallestSize;
 | |
|     });
 | |
|     services.Configure<GzipCompressionProviderOptions>(options =>
 | |
|     {
 | |
|         options.Level = CompressionLevel.SmallestSize;
 | |
|     });
 | |
|     services.AddResponseCompression(options =>
 | |
|     {
 | |
|         options.EnableForHttps = true;
 | |
|         options.Providers.Add<BrotliCompressionProvider>();
 | |
|         options.Providers.Add<GzipCompressionProvider>();
 | |
|     });
 | |
| 
 | |
|     services.AddResponseCaching();
 | |
|     services.AddControllers();
 | |
|     services.AddEndpointsApiExplorer();
 | |
|     builder.Services.AddSwagger(builder.Configuration, "Core.Cerberos.Service.API.xml", authSettings);
 | |
|     builder.Services.AddVersioning(builder.Configuration);
 | |
|     services.AddLogging();
 | |
|     services.AddProblemDetails();
 | |
| 
 | |
|     //Register Stuff
 | |
|     services.RegisterExternalLayer(builder.Configuration);
 | |
| 
 | |
|     services.AddScoped<IUserPort, UserPort>();
 | |
|     services.AddScoped<IComponentHandler<GetAllUsersRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<GetUserRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<LoginUserRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<LogoutUserRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<GetUserByEmailRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<AddCompanyToUserRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<RemoveCompanyFromUserRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<AddProjectToUserRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<RemoveProjectFromUserRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<ValidateUserExistenceRequest>, UserHandler>();
 | |
|     services.AddScoped<IComponentHandler<GetTokenAdapterRequest>, UserHandler>();
 | |
| 
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<CreateUserValidator>();
 | |
|     services.AddScoped<IValidator<CreateUserRequest>, CreateUserValidator>();
 | |
|     services.AddScoped<IComponentHandler<CreateUserRequest>, UserHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<UpdateUserValidator>();
 | |
|     services.AddScoped<IValidator<UpdateUserRequest>, UpdateUserValidator>();
 | |
|     services.AddScoped<IComponentHandler<UpdateUserRequest>, UserHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<ChangeUserStatusValidator>();
 | |
|     services.AddScoped<IValidator<ChangeUserStatusRequest>, ChangeUserStatusValidator>();
 | |
|     services.AddScoped<IComponentHandler<ChangeUserStatusRequest>, UserHandler>();
 | |
| 
 | |
|     services.AddScoped<IRolePort, RolePort>();
 | |
|     services.AddScoped<IComponentHandler<GetAllRolesRequest>, RoleHandler>();
 | |
|     services.AddScoped<IComponentHandler<GetRoleRequest>, RoleHandler>();
 | |
|     services.AddScoped<IComponentHandler<AddApplicationToRoleRequest>, RoleHandler>();
 | |
|     services.AddScoped<IComponentHandler<RemoveApplicationFromRoleRequest>, RoleHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<CreateRoleValidator>();
 | |
|     services.AddScoped<IValidator<CreateRoleRequest>, CreateRoleValidator>();
 | |
|     services.AddScoped<IComponentHandler<CreateRoleRequest>, RoleHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<UpdateRoleValidator>();
 | |
|     services.AddScoped<IValidator<UpdateRoleRequest>, UpdateRoleValidator>();
 | |
|     services.AddScoped<IComponentHandler<UpdateRoleRequest>, RoleHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<ChangeRoleStatusValidator>();
 | |
|     services.AddScoped<IValidator<ChangeRoleStatusRequest>, ChangeRoleStatusValidator>();
 | |
|     services.AddScoped<IComponentHandler<ChangeRoleStatusRequest>, RoleHandler>();
 | |
| 
 | |
|     services.AddScoped<IPermissionPort, PermissionPort>();
 | |
|     services.AddScoped<IComponentHandler<GetAllPermissionsRequest>, PermissionHandler>();
 | |
|     services.AddScoped<IComponentHandler<GetPermissionRequest>, PermissionHandler>();
 | |
|     services.AddScoped<IComponentHandler<GetAllPermissionsByListRequest>, PermissionHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<CreatePermissionValidator>();
 | |
|     services.AddScoped<IValidator<CreatePermissionRequest>, CreatePermissionValidator>();
 | |
|     services.AddScoped<IComponentHandler<CreatePermissionRequest>, PermissionHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<UpdatePermissionValidator>();
 | |
|     services.AddScoped<IValidator<UpdatePermissionRequest>, UpdatePermissionValidator>();
 | |
|     services.AddScoped<IComponentHandler<UpdatePermissionRequest>, PermissionHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<ChangePermissionStatusValidator>();
 | |
|     services.AddScoped<IValidator<ChangePermissionStatusRequest>, ChangePermissionStatusValidator>();
 | |
|     services.AddScoped<IComponentHandler<ChangePermissionStatusRequest>, PermissionHandler>();
 | |
| 
 | |
|     services.AddScoped<IModulePort, ModulePort>();
 | |
|     services.AddScoped<IComponentHandler<GetAllModulesRequest>, ModuleHandler>();
 | |
|     services.AddScoped<IComponentHandler<GetModuleRequest>, ModuleHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<GetAllModulesByListValidator>();
 | |
|     services.AddScoped<IValidator<GetAllModulesByListRequest>, GetAllModulesByListValidator>();
 | |
|     services.AddScoped<IComponentHandler<GetAllModulesByListRequest>, ModuleHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<CreateModuleValidator>();
 | |
|     services.AddScoped<IValidator<CreateModuleRequest>, CreateModuleValidator>();
 | |
|     services.AddScoped<IComponentHandler<CreateModuleRequest>, ModuleHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<UpdateModuleValidator>();
 | |
|     services.AddScoped<IValidator<UpdateModuleRequest>, UpdateModuleValidator>();
 | |
|     services.AddScoped<IComponentHandler<UpdateModuleRequest>, ModuleHandler>();
 | |
| 
 | |
|     services.AddValidatorsFromAssemblyContaining<ChangeModuleStatusValidator>();
 | |
|     services.AddScoped<IValidator<ChangeModuleStatusRequest>, ChangeModuleStatusValidator>();
 | |
|     services.AddScoped<IComponentHandler<ChangeModuleStatusRequest>, ModuleHandler>();
 | |
| });
 | |
| 
 | |
| var app = builder.Build();
 | |
| app.UseSwaggerUI(builder.Configuration, authSettings);
 | |
| app.ConfigureSwagger(builder.Configuration);
 | |
| app.UseResponseCompression();
 | |
| app.UseResponseCaching();
 | |
| app.UseHttpsRedirection();
 | |
| app.UseCors("AllowAll");
 | |
| app.UseAuthorization();
 | |
| app.MapControllers();
 | |
| 
 | |
| app.Run();
 | |
| 
 | 
