reeplace cerberos by thalos
This commit is contained in:
		| @@ -0,0 +1,67 @@ | ||||
| using Core.Thalos.Adapters.Contracts; | ||||
| using Core.Thalos.Adapters.Handlers; | ||||
| using Core.Thalos.Adapters.TokenProvider; | ||||
| using Core.Thalos.External.GatewayConfigurations; | ||||
| using LSA.Dashboard.External.Clients.Dashboard; | ||||
| using Microsoft.AspNetCore.Http; | ||||
| using Microsoft.Extensions.Configuration; | ||||
| using Microsoft.Extensions.DependencyInjection; | ||||
| using Refit; | ||||
|  | ||||
| namespace Core.Thalos.External.ClientConfiguration | ||||
| { | ||||
|     public static class RegisterClientConfiguration | ||||
|     { | ||||
|         public static IServiceCollection RegisterExternalLayer(this IServiceCollection services, IConfiguration configuration) | ||||
|         { | ||||
|             var gatewayConfiguration = new GatewayConfiguration(); | ||||
|             var gatewaySettingsConfiguration = new GatewaySettingsConfigurations(configuration); | ||||
|  | ||||
|             // Register GatewayConfiguration as a singleton | ||||
|             services.AddSingleton(gatewayConfiguration); | ||||
|  | ||||
|             // Register IHttpContextAccessor | ||||
|             services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); | ||||
|  | ||||
|             // Register ITokenProvider | ||||
|             services.AddSingleton<ITokenProvider, HttpContextTokenProvider>(); | ||||
|  | ||||
|             // Register the custom AuthenticatedHttpClientHandler | ||||
|             services.AddTransient(provider => | ||||
|             { | ||||
|                 var tokenProvider = provider.GetRequiredService<ITokenProvider>(); | ||||
|                 var trackingIdHandler = new TrackingMechanismExtension(provider.GetRequiredService<IHttpContextAccessor>()); | ||||
|  | ||||
|                 var handler = new AuthenticatedHttpClientHandler(tokenProvider) | ||||
|                 { | ||||
|                     InnerHandler = new HttpClientHandler() // Setting the InnerHandler manually | ||||
|                 }; | ||||
|  | ||||
|                 // Attach the TrackingIdHandler as the outermost handler | ||||
|                 trackingIdHandler.InnerHandler = handler; | ||||
|  | ||||
|                 return handler; | ||||
|             }); | ||||
|  | ||||
|             var thalosServiceApiUrl = GatewaySettingsConfigurations.GetThalosServiceAPIEndpoint().Endpoint.Url; | ||||
|  | ||||
|             // Register IDashBoardServiceClient with the manually created HttpClient | ||||
|             services.AddScoped(provider => | ||||
|             { | ||||
|                 var handler = provider.GetRequiredService<AuthenticatedHttpClientHandler>(); | ||||
|                 var handlerTrackingId = new TrackingMechanismExtension(provider.GetRequiredService<IHttpContextAccessor>()); // Using the TrackingIdHandler here | ||||
|                                                                                                                              // Chain the handlers | ||||
|                 handlerTrackingId.InnerHandler = handler; //chaining | ||||
|  | ||||
|                 var httpClient = new HttpClient(handlerTrackingId) | ||||
|                 { | ||||
|                     BaseAddress = new Uri(thalosServiceApiUrl), | ||||
|                     Timeout = TimeSpan.FromMinutes(1) | ||||
|                 }; | ||||
|                 return RestService.For<IThalosServiceClient>(httpClient); | ||||
|             }); | ||||
|  | ||||
|             return services; | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										118
									
								
								Core.Thalos.External/Clients/Thalos/IThalosServiceClient.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								Core.Thalos.External/Clients/Thalos/IThalosServiceClient.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,118 @@ | ||||
| using Core.Thalos.Adapters; | ||||
| using Core.Thalos.Application.UseCases.Roles.Input; | ||||
| using Core.Thalos.Application.UseCases.Users.Input; | ||||
| using Core.Thalos.External.Clients.Thalos.Requests.Permissions; | ||||
| using Core.Thalos.External.Clients.Thalos.Requests.Users; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Refit; | ||||
|  | ||||
| namespace LSA.Dashboard.External.Clients.Dashboard | ||||
| { | ||||
|     public interface IThalosServiceClient | ||||
|     { | ||||
|         [Post("/v1/User/Create")] | ||||
|         Task<ApiResponse<UserAdapter>> CreateUserService([Header("TrackingId")][Body] CreateUserRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/User/GetById")] | ||||
|         Task<ApiResponse<UserAdapter>> GetUserByIdService([Header("TrackingId")][Body] GetUserRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/User/GetByEmail")] | ||||
|         Task<ApiResponse<UserAdapter>> GetUserByEmailService([Header("TrackingId")][Body] GetUserByEmailRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/User/ValidateExistence")] | ||||
|         Task<ApiResponse<UserExistenceAdapter>> ValidateUserExistenceService([Header("TrackingId")][Body] ValidateUserExistenceRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/User/GetByEmail")] | ||||
|         Task<ApiResponse<UserAdapter>> GetUserByEmailService([Header("Authorization")] string? authorization, [Header("TrackingId")][Body] GetUserByEmailRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Get("/v1/User/GetAll")] | ||||
|         Task<ApiResponse<IEnumerable<UserAdapter>>> GetAllUsersService([Header("TrackingId")][Body] GetAllUsersRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Put("/v1/User/Update")] | ||||
|         Task<ApiResponse<UserAdapter>> UpdateUserService([Header("TrackingId")][Body] UpdateUserRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Patch("/v1/User/LoginUser")] | ||||
|         Task<ApiResponse<UserAdapter>> LoginUserService([Header("TrackingId")][Body] LoginUserRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Patch("/v1/User/LogoutUser")] | ||||
|         Task<ApiResponse<UserAdapter>> LogoutUserService([Header("TrackingId")][FromBody] LogoutUserRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Patch("/v1/User/ChangeStatus")] | ||||
|         Task<ApiResponse<UserAdapter>> ChangeUserStatusService([Header("TrackingId")][Body] ChangeUserStatusRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/User/AddCompany")] | ||||
|         Task<ApiResponse<UserAdapter>> AddCompanyToUserService([Header("TrackingId")][Body] AddCompanyToUserRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Delete("/v1/User/RemoveCompany")] | ||||
|         Task<ApiResponse<UserAdapter>> RemoveCompanyFromUserService([Header("TrackingId")][Body] RemoveCompanyFromUserRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/User/AddProject")] | ||||
|         Task<ApiResponse<UserAdapter>> AddProjectToUserService([Header("TrackingId")][Body] AddProjectToUserRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Delete("/v1/User/RemoveProject")] | ||||
|         Task<ApiResponse<UserAdapter>> RemoveProjectFromUserService([Header("TrackingId")][Body] RemoveProjectFromUserRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/User/GetTokenAdapter")] | ||||
|         Task<ApiResponse<TokenAdapter>> GetTokenAdapterService([Header("TrackingId")][Body] GetTokenAdapterRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Role/Create")] | ||||
|         Task<ApiResponse<RoleAdapter>> CreateRoleService([Header("TrackingId")][Body] CreateRoleRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Role/GetById")] | ||||
|         Task<ApiResponse<RoleAdapter>> GetRoleByIdService([Header("TrackingId")][Body] GetRoleRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Role/GetById")] | ||||
|         Task<ApiResponse<RoleAdapter>> GetRoleByIdService([Header("Authorization")] string? authorization, [Header("TrackingId")][Body] GetRoleRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Get("/v1/Role/GetAll")] | ||||
|         Task<ApiResponse<IEnumerable<RoleAdapter>>> GetAllRolesService([Header("TrackingId")][Body] GetAllRolesRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Put("/v1/Role/Update")] | ||||
|         Task<ApiResponse<RoleAdapter>> UpdateRoleService([Header("TrackingId")][Body] UpdateRoleRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Patch("/v1/Role/ChangeStatus")] | ||||
|         Task<ApiResponse<RoleAdapter>> ChangeRoleStatusService([Header("TrackingId")][Body] ChangeRoleStatusRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Role/AddApplication")] | ||||
|         Task<ApiResponse<RoleAdapter>> AddApplicationToRoleService([Header("TrackingId")][Body] AddApplicationToRoleRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Delete("/v1/Role/RemoveApplication")] | ||||
|         Task<ApiResponse<RoleAdapter>> RemoveApplicationFromRoleService([Header("TrackingId")][Body] RemoveApplicationFromRoleRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Permission/Create")] | ||||
|         Task<ApiResponse<PermissionAdapter>> CreatePermissionService([Header("TrackingId")][Body] CreatePermissionRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Permission/GetById")] | ||||
|         Task<ApiResponse<PermissionAdapter>> GetPermissionByIdService([Header("TrackingId")][Body] GetPermissionRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Get("/v1/Permission/GetAll")] | ||||
|         Task<ApiResponse<IEnumerable<PermissionAdapter>>> GetAllPermissionsService([Header("TrackingId")][Body] GetAllPermissionsRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Permission/GetPermissionList")] | ||||
|         Task<ApiResponse<IEnumerable<PermissionAdapter>>> GetAllPermissionsByListService([Header("TrackingId")][Body] GetAllPermissionsByListRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Put("/v1/Permission/Update")] | ||||
|         Task<ApiResponse<PermissionAdapter>> UpdatePermissionService([Header("TrackingId")][Body] UpdatePermissionRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Patch("/v1/Permission/ChangeStatus")] | ||||
|         Task<ApiResponse<PermissionAdapter>> ChangePermissionStatusService([Header("TrackingId")][Body] ChangePermissionStatusRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Module/Create")] | ||||
|         Task<ApiResponse<ModuleAdapter>> CreateModuleService([Header("TrackingId")][Body] CreateModuleRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Module/GetById")] | ||||
|         Task<ApiResponse<ModuleAdapter>> GetModuleByIdService([Header("TrackingId")][Body] GetModuleRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Get("/v1/Module/GetAll")] | ||||
|         Task<ApiResponse<IEnumerable<ModuleAdapter>>> GetAllModulesService([Header("TrackingId")][Body] GetAllModulesRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Post("/v1/Module/GetModuleList")] | ||||
|         Task<ApiResponse<IEnumerable<ModuleAdapter>>> GetAllModulesByListService([Header("TrackingId")][Body] GetAllModulesByListRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Put("/v1/Module/Update")] | ||||
|         Task<ApiResponse<ModuleAdapter>> UpdateModuleService([Header("TrackingId")][Body] UpdateModuleRequest request, CancellationToken cancellationToken = default); | ||||
|  | ||||
|         [Patch("/v1/Module/ChangeStatus")] | ||||
|         Task<ApiResponse<ModuleAdapter>> ChangeModuleStatusService([Header("TrackingId")][Body] ChangeModuleStatusRequest request, CancellationToken cancellationToken = default); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,10 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class ChangeModuleStatusRequest | ||||
|     { | ||||
|         public string Id { get; set; } | ||||
|         public StatusEnum Status { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,14 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class CreateModuleRequest | ||||
|     { | ||||
|         public string Name { get; set; } = null!; | ||||
|         public string? Description { get; set; } | ||||
|         public string? Icon { get; set; } | ||||
|         public string Route { get; set; } = null!; | ||||
|         public int? Order { get; set; } | ||||
|         public ApplicationsEnum? Application { get; set; } = null!; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class GetAllModulesByListRequest | ||||
|     { | ||||
|         public string[] Modules { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class GetAllModulesRequest | ||||
|     { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class GetModuleRequest | ||||
|     { | ||||
|         public string Id { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,17 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class UpdateModuleRequest | ||||
|     { | ||||
|         public string Id { get; set; } = null!; | ||||
|         public string Name { get; set; } = null!; | ||||
|         public string? Description { get; set; } | ||||
|         public string? Icon { get; set; } | ||||
|         public string Route { get; set; } = null!; | ||||
|         public int? Order { get; set; } | ||||
|  | ||||
|         public ApplicationsEnum? Application { get; set; } = null!; | ||||
|         public StatusEnum Status { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,10 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class ChangePermissionStatusRequest | ||||
|     { | ||||
|         public string Id { get; set; } | ||||
|         public StatusEnum Status { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,11 @@ | ||||
| using Core.Thalos.Adapters.Common.Constants; | ||||
|  | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class CreatePermissionRequest | ||||
|     { | ||||
|         public string Name { get; set; } = null!; | ||||
|         public string Description { get; set; } = null!; | ||||
|         public AccessLevelEnum? AccessLevel { get; set; } = null!; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class GetAllPermissionsByListRequest | ||||
|     { | ||||
|         public string[] Permissions { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class GetAllPermissionsRequest | ||||
|     { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class GetPermissionRequest | ||||
|     { | ||||
|         public string Id { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,14 @@ | ||||
| using Core.Thalos.Adapters.Common.Constants; | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Permissions | ||||
| { | ||||
|     public class UpdatePermissionRequest | ||||
|     { | ||||
|         public string Id { get; set; } = null!; | ||||
|         public string Name { get; set; } = null!; | ||||
|         public string? Description { get; set; } | ||||
|         public AccessLevelEnum? AccessLevel { get; set; } = null!; | ||||
|         public StatusEnum Status { get; set; } = StatusEnum.Active; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,10 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.Application.UseCases.Roles.Input | ||||
| { | ||||
|     public class AddApplicationToRoleRequest | ||||
|     { | ||||
|         public string RoleId { get; set; } | ||||
|         public ApplicationsEnum Application { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,11 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.Application.UseCases.Roles.Input | ||||
| { | ||||
|     public class ChangeRoleStatusRequest | ||||
|     { | ||||
|         public string Id { get; set; } | ||||
|         public StatusEnum Status { get; set; } | ||||
|  | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,15 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
| using System.Text.Json.Serialization; | ||||
|  | ||||
| namespace Core.Thalos.Application.UseCases.Roles.Input | ||||
| { | ||||
|     public class CreateRoleRequest | ||||
|     { | ||||
|         public string Name { get; set; } = null!; | ||||
|         public string Description { get; set; } = null!; | ||||
|         [JsonConverter(typeof(EnumArrayJsonConverter<ApplicationsEnum>))] | ||||
|         public ApplicationsEnum[]? Applications { get; set; } = null!; | ||||
|         public string[] Modules { get; set; } = null!; | ||||
|         public string[] Permissions { get; set; } = null!; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Roles.Input | ||||
| { | ||||
|     public class GetAllRolesRequest | ||||
|     { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Roles.Input | ||||
| { | ||||
|     public class GetRoleRequest | ||||
|     { | ||||
|         public string Id { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,10 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.Application.UseCases.Roles.Input | ||||
| { | ||||
|     public class RemoveApplicationFromRoleRequest | ||||
|     { | ||||
|         public string RoleId { get; set; } | ||||
|         public ApplicationsEnum Application { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,17 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
| using System.Text.Json.Serialization; | ||||
|  | ||||
| namespace Core.Thalos.Application.UseCases.Roles.Input | ||||
| { | ||||
|     public class UpdateRoleRequest | ||||
|     { | ||||
|         public string Id { get; set; } = null!; | ||||
|         public string Name { get; set; } = null!; | ||||
|         public string? Description { get; set; } | ||||
|         [JsonConverter(typeof(EnumArrayJsonConverter<ApplicationsEnum>))] | ||||
|         public ApplicationsEnum[]? Applications { get; set; } | ||||
|         public string[] Modules { get; set; } = null!; | ||||
|         public string[] Permissions { get; set; } = null!; | ||||
|         public StatusEnum Status { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,8 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class AddCompanyToUserRequest | ||||
|     { | ||||
|         public string UserId { get; set; } | ||||
|         public string CompanyId { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,8 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class AddProjectToUserRequest | ||||
|     { | ||||
|         public string UserId { get; set; } | ||||
|         public string ProjectId { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,10 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class ChangeUserStatusRequest | ||||
|     { | ||||
|         public string Id { get; set; } | ||||
|         public StatusEnum Status { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,14 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class CreateUserRequest | ||||
|     { | ||||
|         public string Email { get; set; } = null!; | ||||
|         public string Name { get; set; } = null!; | ||||
|         public string? MiddleName { get; set; } | ||||
|         public string LastName { get; set; } = null!; | ||||
|         public string RoleId { get; set; } = null!; | ||||
|         public string[] Companies { get; set; } = null!; | ||||
|         public string[]? Projects { get; set; } | ||||
|         public bool SendInvitation { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,6 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class GetAllUsersRequest | ||||
|     { | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class GetUserByEmailRequest | ||||
|     { | ||||
|         public string Email { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class GetTokenAdapterRequest | ||||
|     { | ||||
|         public string Email { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class GetUserRequest | ||||
|     { | ||||
|         public string Id { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Users | ||||
| { | ||||
|     public class LoginUserRequest | ||||
|     { | ||||
|         public string Email { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.External.Clients.Thalos.Requests.Users | ||||
| { | ||||
|     public class LogoutUserRequest | ||||
|     { | ||||
|         public string Email { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,8 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class RemoveCompanyFromUserRequest | ||||
|     { | ||||
|         public string UserId { get; set; } | ||||
|         public string CompanyId { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,8 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class RemoveProjectFromUserRequest | ||||
|     { | ||||
|         public string UserId { get; set; } | ||||
|         public string ProjectId { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,17 @@ | ||||
| using Core.Thalos.Adapters.Common.Enums; | ||||
|  | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class UpdateUserRequest | ||||
|     { | ||||
|         public string Id { get; set; } = null!; | ||||
|         public string Email { get; set; } = null!; | ||||
|         public string Name { get; set; } = null!; | ||||
|         public string? MiddleName { get; set; } | ||||
|         public string LastName { get; set; } = null!; | ||||
|         public string RoleId { get; set; } = null!; | ||||
|         public string[] Companies { get; set; } = null!; | ||||
|         public string[]? Projects { get; set; } | ||||
|         public StatusEnum Status { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,7 @@ | ||||
| namespace Core.Thalos.Application.UseCases.Users.Input | ||||
| { | ||||
|     public class ValidateUserExistenceRequest | ||||
|     { | ||||
|         public string Email { get; set; } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										15
									
								
								Core.Thalos.External/Core.Thalos.External.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								Core.Thalos.External/Core.Thalos.External.csproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
|  | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>net8.0</TargetFramework> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <Nullable>enable</Nullable> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="BuildingBlocks.Library" Version="0.0.1" /> | ||||
|     <PackageReference Include="Thalos.Building.Blocks" Version="0.0.1" /> | ||||
|     <PackageReference Include="Refit" Version="8.0.0" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
| </Project> | ||||
| @@ -0,0 +1,19 @@ | ||||
| using Core.Blueprint.External; | ||||
|  | ||||
| namespace Core.Thalos.External.GatewayConfigurations | ||||
| { | ||||
|     public record GatewayConfiguration | ||||
|     { | ||||
|         public GatewayConfiguration() | ||||
|         { | ||||
|             ThalosService = new ThalosServiceAPI(); | ||||
|         } | ||||
|  | ||||
|         public ThalosServiceAPI ThalosService { get; set; } | ||||
|     } | ||||
|     public record ThalosServiceAPI | ||||
|     { | ||||
|         public string Channel { get; set; } | ||||
|         public BaseEndpoint Endpoint { get; set; } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,48 @@ | ||||
| using Core.Blueprint.External; | ||||
| using Microsoft.Extensions.Configuration; | ||||
|  | ||||
| namespace Core.Thalos.External.GatewayConfigurations | ||||
| { | ||||
|     public class GatewaySettingsConfigurations | ||||
|     { | ||||
|         private static GatewayConfiguration GatewayConfigurations { get; set; } = new GatewayConfiguration(); | ||||
|         private readonly IConfiguration _configuration; | ||||
|  | ||||
|         public GatewaySettingsConfigurations(IConfiguration configuration) | ||||
|         { | ||||
|             _configuration = configuration; | ||||
|             SetDashboardServiceAPIEndpoint(); | ||||
|         } | ||||
|         public static ThalosServiceAPI GetThalosServiceAPIEndpoint() | ||||
|         { | ||||
|             return GatewayConfigurations.ThalosService; | ||||
|         } | ||||
|         private GatewayConfiguration SetDashboardServiceAPIEndpoint() | ||||
|         { | ||||
|             IConfigurationSection source; | ||||
|             var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? string.Empty; | ||||
|  | ||||
|             if (environment == "Local") | ||||
|                 source = _configuration.GetSection("LocalGateways"); | ||||
|             else | ||||
|                 source = _configuration.GetSection("Gateways"); | ||||
|  | ||||
|             var endpoint = source["ThalosService"] ?? string.Empty; | ||||
|  | ||||
|             if (string.IsNullOrEmpty(endpoint)) throw new Exception("Thalos Service endpoint is empty or null"); | ||||
|  | ||||
|             GatewayConfigurations.ThalosService = new ThalosServiceAPI() | ||||
|             { | ||||
|                 Endpoint = new BaseEndpoint() | ||||
|                 { | ||||
|                     Uri = new Uri(endpoint), | ||||
|                     Url = endpoint, | ||||
|                     Token = string.Empty, | ||||
|                     APIName = "Thalos Service" | ||||
|                 } | ||||
|             }; | ||||
|  | ||||
|             return GatewayConfigurations; | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										18
									
								
								Core.Thalos.External/TrackingMechanismExtension.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Core.Thalos.External/TrackingMechanismExtension.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| using Microsoft.AspNetCore.Http; | ||||
|  | ||||
| namespace Core.Thalos.External | ||||
| { | ||||
|     public sealed class TrackingMechanismExtension(IHttpContextAccessor httpContextAccessor) : DelegatingHandler | ||||
|     { | ||||
|         private readonly IHttpContextAccessor _httpContextAccessor = httpContextAccessor ?? throw new ArgumentNullException(nameof(httpContextAccessor)); | ||||
|  | ||||
|         protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) | ||||
|         { | ||||
|             if (_httpContextAccessor.HttpContext != null) | ||||
|             { | ||||
|                 request.Headers.Add("TrackingId", Guid.NewGuid().ToString()); | ||||
|             } | ||||
|             return await base.SendAsync(request, cancellationToken).ConfigureAwait(false); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Sergio Matias Urquin
					Sergio Matias Urquin