171 lines
8.5 KiB
C#
171 lines
8.5 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.AddScoped<IComponentHandler<GetConsentFormPDFRequest>, UserHandler>();
|
|
services.AddScoped<IComponentHandler<AcceptUserConsentFormRequest>, 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();
|
|
|