From f5b5f7d0f038872e8ba4c34ef22e4aee9250b90b Mon Sep 17 00:00:00 2001 From: Oscar Morales Date: Wed, 4 Jun 2025 11:39:29 -0600 Subject: [PATCH 1/3] Fix some issues in the endpoints and use local mongodb --- .../Controllers/ModuleController.cs | 35 ++-- .../Controllers/PermissionController.cs | 36 ++-- .../Controllers/RoleController.cs | 38 ++-- .../Controllers/UserController.cs | 56 +++--- .../Core.Thalos.DAL.API.csproj | 2 +- .../Extensions/SwaggerExtensions.cs | 71 +++++++ Core.Thalos.DAL.API/Program.cs | 134 ++++++------- .../Properties/launchSettings.json | 2 +- .../appsettings.Development.json | 14 ++ Core.Thalos.DAL.API/sample.settings.json | 2 +- Core.Thalos.Domain/Core.Thalos.Domain.csproj | 2 +- .../Core.Thalos.Provider.csproj | 2 +- .../Providers/Onboarding/ModuleProvider.cs | 25 ++- .../Onboarding/PermissionProvider.cs | 31 +-- .../Providers/Onboarding/RoleProvider.cs | 27 +-- .../Providers/Onboarding/UserProvider.cs | 186 +++++++++++------- .../ServiceCollectionExtensions.cs | 63 ++---- 17 files changed, 410 insertions(+), 316 deletions(-) create mode 100644 Core.Thalos.DAL.API/Extensions/SwaggerExtensions.cs diff --git a/Core.Thalos.DAL.API/Controllers/ModuleController.cs b/Core.Thalos.DAL.API/Controllers/ModuleController.cs index 05193ad..322a5ae 100644 --- a/Core.Thalos.DAL.API/Controllers/ModuleController.cs +++ b/Core.Thalos.DAL.API/Controllers/ModuleController.cs @@ -15,7 +15,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Graph; using ModuleRequest = Core.Thalos.Domain.Contexts.Onboarding.Request.ModuleRequest; -namespace LSA.Core.Kerberos.API.Controllers +namespace LSA.Core.Thalos.API.Controllers { /// /// Handles all requests for module authentication. @@ -25,6 +25,7 @@ namespace LSA.Core.Kerberos.API.Controllers [Produces(MimeTypes.ApplicationJson)] [Consumes(MimeTypes.ApplicationJson)] [ApiController] + [AllowAnonymous] public class ModuleController(IModuleProvider service) : ControllerBase { /// @@ -38,8 +39,8 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("ModuleManagement.Read, RoleManagement.Read")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("ModuleManagement.Read, RoleManagement.Read")] public async Task GetAllModulesAsync(CancellationToken cancellationToken) { var result = await service.GetAllModules(cancellationToken).ConfigureAwait(false); @@ -59,8 +60,8 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("ModuleManagement.Read")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("ModuleManagement.Read")] public async Task GetAllModulesByList([FromBody] string[] modules, CancellationToken cancellationToken) { if (modules == null || !modules.Any()) @@ -86,11 +87,11 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(ModuleAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("ModuleManagement.Read")] - public async Task GetModuleByIdAsync([FromRoute] string _id, CancellationToken cancellationToken) + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("ModuleManagement.Read")] + public async Task GetModuleByIdAsync([FromRoute] string id, CancellationToken cancellationToken) { - var result = await service.GetModuleById(_id, cancellationToken).ConfigureAwait(false); + var result = await service.GetModuleById(id, cancellationToken).ConfigureAwait(false); if (result == null) { @@ -110,8 +111,8 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal e|ror. [HttpPost] [ProducesResponseType(typeof(ModuleAdapter), StatusCodes.Status201Created)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("ModuleManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("ModuleManagement.Write")] public async Task CreateModuleAsync([FromBody] ModuleRequest newModule, CancellationToken cancellationToken) { var result = await service.CreateModule(newModule, cancellationToken).ConfigureAwait(false); @@ -133,11 +134,11 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(ModuleAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("ModuleManagement.Write")] - public async Task UpdateModuleAsync([FromRoute] string _id, ModuleAdapter entity, CancellationToken cancellationToken) + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("ModuleManagement.Write")] + public async Task UpdateModuleAsync([FromRoute] string id, ModuleAdapter entity, CancellationToken cancellationToken) { - if (_id != entity._Id?.ToString()) + if (id != entity._Id?.ToString()) { return BadRequest("Module ID mismatch"); } @@ -162,8 +163,8 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(ModuleAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("ModuleManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("ModuleManagement.Write")] public async Task ChangeModuleStatus([FromRoute] string id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken) { var result = await service.ChangeModuleStatus(id, newStatus, cancellationToken).ConfigureAwait(false); diff --git a/Core.Thalos.DAL.API/Controllers/PermissionController.cs b/Core.Thalos.DAL.API/Controllers/PermissionController.cs index e2c86e7..15105d6 100644 --- a/Core.Thalos.DAL.API/Controllers/PermissionController.cs +++ b/Core.Thalos.DAL.API/Controllers/PermissionController.cs @@ -15,7 +15,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Graph; using PermissionRequest = Core.Thalos.Domain.Contexts.Onboarding.Request.PermissionRequest; -namespace LSA.Core.Kerberos.API.Controllers +namespace LSA.Core.Thalos.API.Controllers { /// /// Handles all requests for permission authentication. @@ -38,8 +38,8 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("PermissionManagement.Read, RoleManagement.Read")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("PermissionManagement.Read, RoleManagement.Read")] public async Task GetAllPermissionsAsync(CancellationToken cancellationToken) { var result = await service.GetAllPermissions(cancellationToken).ConfigureAwait(false); @@ -59,13 +59,13 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("PermissionManagement.Read")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("PermissionManagement.Read")] public async Task GetAllPermissionsByList([FromBody] string[] permissions, CancellationToken cancellationToken) { if (permissions == null || !permissions.Any()) { - return BadRequest("Module identifiers are required."); + return BadRequest("Permissions identifiers are required."); } var result = await service.GetAllPermissionsByList(permissions, cancellationToken).ConfigureAwait(false); @@ -85,11 +85,11 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(PermissionAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("PermissionManagement.Read")] - public async Task GetPermissionByIdAsync([FromRoute] string _id, CancellationToken cancellationToken) + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("PermissionManagement.Read")] + public async Task GetPermissionByIdAsync([FromRoute] string id, CancellationToken cancellationToken) { - var result = await service.GetPermissionById(_id, cancellationToken).ConfigureAwait(false); + var result = await service.GetPermissionById(id, cancellationToken).ConfigureAwait(false); if (result == null) { @@ -109,8 +109,8 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal e|ror. [HttpPost] [ProducesResponseType(typeof(PermissionAdapter), StatusCodes.Status201Created)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("PermissionManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("PermissionManagement.Write")] public async Task CreatePermissionAsync([FromBody] PermissionRequest newPermission, CancellationToken cancellationToken) { var result = await service.CreatePermission(newPermission, cancellationToken).ConfigureAwait(false); @@ -132,11 +132,11 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(PermissionAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("PermissionManagement.Write")] - public async Task UpdatePermissionAsync([FromRoute] string _id, PermissionAdapter entity, CancellationToken cancellationToken) + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("PermissionManagement.Write")] + public async Task UpdatePermissionAsync([FromRoute] string id, PermissionAdapter entity, CancellationToken cancellationToken) { - if (_id != entity._Id?.ToString()) + if (id != entity._Id?.ToString()) { return BadRequest("Permission ID mismatch"); } @@ -161,8 +161,8 @@ namespace LSA.Core.Kerberos.API.Controllers [Consumes(MimeTypes.ApplicationJson)] [Produces(MimeTypes.ApplicationJson)] [ProducesResponseType(typeof(PermissionAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("PermissionManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("PermissionManagement.Write")] public async Task ChangePermissionStatus([FromRoute] string id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken) { var result = await service.ChangePermissionStatus(id, newStatus, cancellationToken).ConfigureAwait(false); diff --git a/Core.Thalos.DAL.API/Controllers/RoleController.cs b/Core.Thalos.DAL.API/Controllers/RoleController.cs index 63f3930..a68560a 100644 --- a/Core.Thalos.DAL.API/Controllers/RoleController.cs +++ b/Core.Thalos.DAL.API/Controllers/RoleController.cs @@ -14,7 +14,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using StatusEnum = Core.Blueprint.Mongo.StatusEnum; -namespace LSA.Core.Kerberos.API.Controllers +namespace LSA.Core.Thalos.API.Controllers { /// /// Handles all requests for role authentication. @@ -35,8 +35,8 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal error. [HttpGet] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("RoleManagement.Read")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("RoleManagement.Read")] public async Task GetAllRolesAsync(CancellationToken cancellationToken) { var result = await service.GetAllRoles(cancellationToken).ConfigureAwait(false); @@ -54,11 +54,11 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpGet] [Route(Routes.Id)] [ProducesResponseType(typeof(RoleAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("RoleManagement.Read")] - public async Task GetRoleByIdAsync([FromRoute] string _id, CancellationToken cancellationToken) + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("RoleManagement.Read")] + public async Task GetRoleByIdAsync([FromRoute] string id, CancellationToken cancellationToken) { - var result = await service.GetRoleById(_id, cancellationToken).ConfigureAwait(false); + var result = await service.GetRoleById(id, cancellationToken).ConfigureAwait(false); if (result == null) { @@ -78,8 +78,8 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal error. [HttpPost] [ProducesResponseType(typeof(RoleAdapter), StatusCodes.Status201Created)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("RoleManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("RoleManagement.Write")] public async Task CreateRoleAsync([FromBody] RoleRequest newRole, CancellationToken cancellationToken) { var result = await service.CreateRole(newRole, cancellationToken).ConfigureAwait(false); @@ -99,11 +99,11 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpPut] [Route(Routes.Id)] [ProducesResponseType(typeof(RoleAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("RoleManagement.Write")] - public async Task UpdateRoleAsync([FromRoute] string _id, [FromBody] RoleAdapter entity, CancellationToken cancellationToken) + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("RoleManagement.Write")] + public async Task UpdateRoleAsync([FromRoute] string id, [FromBody] RoleAdapter entity, CancellationToken cancellationToken) { - if (_id != entity._Id?.ToString()) + if (id != entity._Id?.ToString()) { return BadRequest("Role ID mismatch"); } @@ -126,8 +126,8 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpPatch] [Route(Routes.ChangeStatus)] [ProducesResponseType(typeof(RoleAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("RoleManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("RoleManagement.Write")] public async Task ChangeRoleStatus([FromRoute] string id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken) { var result = await service.ChangeRoleStatus(id, newStatus, cancellationToken).ConfigureAwait(false); @@ -146,8 +146,8 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal error. [HttpPost(Routes.AddApplication)] [ProducesResponseType(typeof(RoleAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("RoleManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("RoleManagement.Write")] public async Task AddApplicationToRoleAsync([FromRoute] string roleId, [FromRoute] ApplicationsEnum application, CancellationToken cancellationToken) { var result = await service.AddApplicationToRole(roleId, application, cancellationToken).ConfigureAwait(false); @@ -166,8 +166,8 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal error. [HttpDelete(Routes.RemoveApplication)] [ProducesResponseType(typeof(RoleAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("RoleManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("RoleManagement.Write")] public async Task RemoveApplicationFromRoleAsync([FromRoute] string roleId, [FromRoute] ApplicationsEnum application, CancellationToken cancellationToken) { var result = await service.RemoveApplicationFromRole(roleId, application, cancellationToken).ConfigureAwait(false); diff --git a/Core.Thalos.DAL.API/Controllers/UserController.cs b/Core.Thalos.DAL.API/Controllers/UserController.cs index 7f8bb83..1cbf74b 100644 --- a/Core.Thalos.DAL.API/Controllers/UserController.cs +++ b/Core.Thalos.DAL.API/Controllers/UserController.cs @@ -14,7 +14,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Graph; using UserRequest = Core.Thalos.Domain.Contexts.Onboarding.Request.UserRequest; -namespace LSA.Core.Kerberos.API.Controllers +namespace LSA.Core.Thalos.API.Controllers { /// /// Handles all requests for user authentication. @@ -35,8 +35,8 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal error. [HttpGet] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("UserManagement.Read")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("UserManagement.Read")] public async Task GetAllUsers(CancellationToken cancellationToken) { var result = await service.GetAllUsers(cancellationToken).ConfigureAwait(false); @@ -54,11 +54,11 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpGet] [Route(Routes.Id)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("UserManagement.Read")] - public async Task GetUserById([FromRoute] string _id, CancellationToken cancellationToken) + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("UserManagement.Read")] + public async Task GetUserById([FromRoute] string id, CancellationToken cancellationToken) { - var result = await service.GetUserById(_id, cancellationToken).ConfigureAwait(false); + var result = await service.GetUserById(id, cancellationToken).ConfigureAwait(false); if (result == null) { @@ -79,7 +79,7 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpGet] [Route(Routes.Email)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = $"{Schemes.DefaultScheme}, {Schemes.AzureScheme}")] + //[Authorize(AuthenticationSchemes = $"{Schemes.DefaultScheme}, {Schemes.AzureScheme}")] public async Task GetUserByEmail([FromRoute] string email, CancellationToken cancellationToken) { var result = await service.GetUserByEmail(email, cancellationToken).ConfigureAwait(false); @@ -127,8 +127,8 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal error. [HttpPost(Routes.Register)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status201Created)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("UserManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("UserManagement.Write")] public async Task CreateUserAsync([FromBody] UserRequest newUser, CancellationToken cancellationToken) { var result = await service.CreateUser(newUser, cancellationToken).ConfigureAwait(false); @@ -148,11 +148,11 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpPut] [Route(Routes.Id)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("UserManagement.Write")] - public async Task UpdateUserAsync([FromRoute] string _id, [FromBody] UserAdapter entity, CancellationToken cancellationToken) + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("UserManagement.Write")] + public async Task UpdateUserAsync([FromRoute] string id, [FromBody] UserAdapter entity, CancellationToken cancellationToken) { - if (_id != entity._Id?.ToString()) + if (id != entity._Id?.ToString()) { return BadRequest("User ID mismatch"); } @@ -173,7 +173,7 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal error. [HttpPatch(Routes.LogIn)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = $"{Schemes.DefaultScheme}, {Schemes.AzureScheme}")] + //[Authorize(AuthenticationSchemes = $"{Schemes.DefaultScheme}, {Schemes.AzureScheme}")] public async Task LoginUserAsync([FromRoute] string email, CancellationToken cancellationToken) { var result = await service.LogInUser(email, cancellationToken).ConfigureAwait(false); @@ -194,7 +194,7 @@ namespace LSA.Core.Kerberos.API.Controllers /// The service internal error. [HttpPatch(Routes.LogOut)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = $"{Schemes.DefaultScheme}, {Schemes.AzureScheme}")] + //[Authorize(AuthenticationSchemes = $"{Schemes.DefaultScheme}, {Schemes.AzureScheme}")] public async Task LogOutUserSessionAsync([FromRoute] string email, CancellationToken cancellationToken) { var result = await service.LogOutUserSession(email, cancellationToken).ConfigureAwait(false); @@ -216,8 +216,8 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpPatch] [Route(Routes.ChangeStatus)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("UserManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("UserManagement.Write")] public async Task ChangeUserStatus([FromRoute] string id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken) { var result = await service.ChangeUserStatus(id, newStatus, cancellationToken).ConfigureAwait(false); @@ -236,8 +236,8 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpPost] [Route(Routes.AddCompany)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("UserManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("UserManagement.Write")] public async Task AddCompanyToUserAsync([FromRoute] string userId, [FromRoute] string companyId, CancellationToken cancellationToken) { var result = await service.AddCompanyToUser(userId, companyId, cancellationToken).ConfigureAwait(false); @@ -256,8 +256,8 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpDelete] [Route(Routes.RemoveCompany)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("UserManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("UserManagement.Write")] public async Task RemoveCompanyFromUserAsync([FromRoute] string userId, [FromRoute] string companyId, CancellationToken cancellationToken) { var result = await service.RemoveCompanyFromUser(userId, companyId, cancellationToken).ConfigureAwait(false); ; @@ -276,8 +276,8 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpPost] [Route(Routes.AddProject)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("UserManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("UserManagement.Write")] public async Task AddProjectToUserAsync([FromRoute] string userId, [FromRoute] string projectId, CancellationToken cancellationToken) { var result = await service.AddProjectToUser(userId, projectId, cancellationToken).ConfigureAwait(false); @@ -296,11 +296,11 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpDelete] [Route(Routes.RemoveProject)] [ProducesResponseType(typeof(UserAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] - [Permission("UserManagement.Write")] + //[Authorize(AuthenticationSchemes = Schemes.DefaultScheme)] + //[Permission("UserManagement.Write")] public async Task RemoveProjectFromUserAsync([FromRoute] string userId, [FromRoute] string projectId, CancellationToken cancellationToken) { - var result = await service.RemoveCompanyFromUser(userId, projectId, cancellationToken).ConfigureAwait(false); + var result = await service.RemoveProjectFromUser(userId, projectId, cancellationToken).ConfigureAwait(false); return Ok(result); } @@ -315,7 +315,7 @@ namespace LSA.Core.Kerberos.API.Controllers [HttpGet] [Route("{email}/GetTokenAdapter")] [ProducesResponseType(typeof(TokenAdapter), StatusCodes.Status200OK)] - [Authorize(AuthenticationSchemes = $"{Schemes.DefaultScheme}, {Schemes.AzureScheme}")] + //[Authorize(AuthenticationSchemes = $"{Schemes.DefaultScheme}, {Schemes.AzureScheme}")] public async Task GetTokenAdapter([FromRoute] string email, CancellationToken cancellationToken) { var tokenAdapter = await service.GetToken(email, cancellationToken).ConfigureAwait(false); diff --git a/Core.Thalos.DAL.API/Core.Thalos.DAL.API.csproj b/Core.Thalos.DAL.API/Core.Thalos.DAL.API.csproj index d2718dd..97fe482 100644 --- a/Core.Thalos.DAL.API/Core.Thalos.DAL.API.csproj +++ b/Core.Thalos.DAL.API/Core.Thalos.DAL.API.csproj @@ -15,7 +15,7 @@ - + diff --git a/Core.Thalos.DAL.API/Extensions/SwaggerExtensions.cs b/Core.Thalos.DAL.API/Extensions/SwaggerExtensions.cs new file mode 100644 index 0000000..c7e3d01 --- /dev/null +++ b/Core.Thalos.DAL.API/Extensions/SwaggerExtensions.cs @@ -0,0 +1,71 @@ +using Asp.Versioning.ApiExplorer; +using Microsoft.Extensions.Options; +using Microsoft.OpenApi.Any; +using Swashbuckle.AspNetCore.SwaggerGen; +using Swashbuckle.AspNetCore.SwaggerUI; + +namespace Core.Thalos.DAL.API.Extensions +{ + public static class SwaggerExtensions + { + public static void AddSwagger(this IServiceCollection services) + { + services.AddEndpointsApiExplorer(); + services.AddSwaggerGen(); + services.AddTransient, ConfigureSwaggerOptions>(); + } + + public static void ConfigureSwagger(this WebApplication app) + { + app.UseSwagger(); + app.UseSwaggerUI(options => + { + foreach (var version in app.DescribeApiVersions().Select(version => version.GroupName)) + options.SwaggerEndpoint($"/swagger/{version}/swagger.json", version); + + options.DisplayRequestDuration(); + options.EnableTryItOutByDefault(); + options.DocExpansion(DocExpansion.None); + }); + } + public static IServiceCollection AddVersioning(this IServiceCollection services) + { + services.AddApiVersioning(options => options.ReportApiVersions = true) + .AddApiExplorer(options => + { + options.GroupNameFormat = "'v'VVV"; + options.SubstituteApiVersionInUrl = true; + }); + + return services; + } + } + public class ConfigureSwaggerOptions : IConfigureOptions + { + private readonly IApiVersionDescriptionProvider _provider; + + public ConfigureSwaggerOptions(IApiVersionDescriptionProvider provider) + { + _provider = provider; + } + + public void Configure(SwaggerGenOptions options) + { + foreach (var description in _provider.ApiVersionDescriptions) + options.SwaggerDoc(description.GroupName, new() + { + Title = AppDomain.CurrentDomain.FriendlyName, + Version = description.ApiVersion.ToString() + }); + + //Map ALL Values Format TODO + options.MapType(() => new() + { + Format = "date", + Example = new OpenApiString(DateOnly.MinValue.ToString()) + }); + + options.CustomSchemaIds(type => type.ToString().Replace("+", ".")); + } + } +} diff --git a/Core.Thalos.DAL.API/Program.cs b/Core.Thalos.DAL.API/Program.cs index a88d514..fd55259 100644 --- a/Core.Thalos.DAL.API/Program.cs +++ b/Core.Thalos.DAL.API/Program.cs @@ -1,90 +1,80 @@ +using Core.Blueprint.DAL.Mongo.Configuration; using Core.Blueprint.Logging.Configuration; using Core.Thalos.Adapters.Extensions; -using Core.Thalos.Adapters.Helpers; +using Core.Thalos.DAL.API.Extensions; using Core.Thalos.Provider; -using Microsoft.AspNetCore.RateLimiting; -using Microsoft.AspNetCore.ResponseCompression; -using System.IO.Compression; +using Microsoft.AspNetCore.HttpLogging; using System.Reflection; -using System.Threading.RateLimiting; +using System.Text.Json.Serialization; var builder = WebApplication.CreateBuilder(args); -var authSettings = AuthHelper.GetAuthSettings(builder, "thalos_dal"); - -builder.Services.ConfigureAuthentication(builder.Configuration, authSettings); - -builder.Configuration.AddUserSecrets(Assembly.GetExecutingAssembly()).AddEnvironmentVariables(); - -// Add services to the container. - -builder.Services.AddControllers(); -// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); +builder.Configuration + .AddUserSecrets(Assembly.GetExecutingAssembly()) + .AddEnvironmentVariables(); -builder.Services.AddLogs(builder); - -builder.Services.AddCors(options => -{ - options.AddPolicy("AllowAll", policyBuilder => - policyBuilder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()); -}); -builder.Services.AddMvc().AddJsonOptions(options => -{ - options.JsonSerializerOptions.WriteIndented = true; - options.JsonSerializerOptions.MaxDepth = 20; - options.JsonSerializerOptions.NumberHandling = System.Text.Json.Serialization.JsonNumberHandling.AllowNamedFloatingPointLiterals; -}); -builder.Services.Configure(options => -{ - options.Level = CompressionLevel.Fastest; -}); -builder.Services.Configure(options => -{ - options.Level = CompressionLevel.SmallestSize; -}); -builder.Services.AddResponseCompression(options => -{ - options.EnableForHttps = true; - options.Providers.Add(); - options.Providers.Add(); -}); - -builder.Services.AddRateLimiter(_ => _ - .AddFixedWindowLimiter("fixed", options => - { - options.PermitLimit = 5; - options.Window = TimeSpan.FromSeconds(10); - options.QueueProcessingOrder = QueueProcessingOrder.OldestFirst; - options.QueueLimit = 2; - }) - .AddSlidingWindowLimiter("sliding", options => - { - options.PermitLimit = 5; - options.Window = TimeSpan.FromSeconds(10); - options.SegmentsPerWindow = 5; - options.QueueProcessingOrder = QueueProcessingOrder.OldestFirst; - options.QueueLimit = 2; - })); - -builder.Services.AddResponseCaching(); -builder.Services.AddControllers(); -builder.Services.AddEndpointsApiExplorer(); -builder.Services.AddSwagger(builder.Configuration, "Core.Thalos.DAL.API.xml", authSettings); -builder.Services.AddVersioning(builder.Configuration); -builder.Services.AddLogging(); +builder.Services.AddResponseCompression(); builder.Services.AddProblemDetails(); +builder.Services.AddMemoryCache(); +builder.Services.AddLogs(builder); +builder.Services.AddMongoLayer(builder.Configuration); +builder.Services.AddDALLayerServices(builder.Configuration); +builder.Host.ConfigureServices((context, services) => +{ -builder.Services.AddDALLayer(builder.Configuration); + services.AddLogging(); + services.AddControllers(); + services.AddProblemDetails(); + services.AddCors(options + => options.AddDefaultPolicy(policyBuilder + => policyBuilder + .AllowAnyOrigin() + .AllowAnyHeader() + .AllowAnyMethod())); + + builder.Services.Configure(options => + { + options.SerializerOptions.Converters.Add(new JsonStringEnumConverter()); + }); + + services + .AddEndpointsApiExplorer() + .AddVersioning() + .AddSwagger(); + + services.AddHealthChecks(); + services.AddHttpLogging(options => options.LoggingFields = HttpLoggingFields.All); + + builder.Services.AddOutputCache(options => + { + options.AddBasePolicy(builder => + builder.Expire(TimeSpan.FromSeconds(10))); + options.AddPolicy("Expire20", builder => + builder.Expire(TimeSpan.FromSeconds(20))); + options.AddPolicy("Expire30", builder => + builder.Expire(TimeSpan.FromSeconds(30))); + }); +}); var app = builder.Build(); -app.UseSwaggerUI(builder.Configuration, authSettings); -app.ConfigureSwagger(builder.Configuration); -app.UseLogging(builder.Configuration); -app.UseHttpsRedirection(); +app.UseSwagger(); +app.UseSwaggerUI(); +app.UseAuthentication(); app.UseAuthorization(); app.MapControllers(); +app.UseCors(); +app.ConfigureSwagger(); +app.UseHttpsRedirection(); +app.UseStaticFiles(); +app.UseRouting(); +app.UseResponseCompression(); +app.UseOutputCache(); +app.UseResponseCaching(); +app.UseLogging(builder.Configuration); +app.MapHealthChecks("/health"); -app.Run(); +app.Run(); \ No newline at end of file diff --git a/Core.Thalos.DAL.API/Properties/launchSettings.json b/Core.Thalos.DAL.API/Properties/launchSettings.json index 2deec93..105edd9 100644 --- a/Core.Thalos.DAL.API/Properties/launchSettings.json +++ b/Core.Thalos.DAL.API/Properties/launchSettings.json @@ -26,7 +26,7 @@ "launchUrl": "swagger", "applicationUrl": "https://localhost:7031;http://localhost:5211", "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Local" + "ASPNETCORE_ENVIRONMENT": "Development" } }, "IIS Express": { diff --git a/Core.Thalos.DAL.API/appsettings.Development.json b/Core.Thalos.DAL.API/appsettings.Development.json index a339ca1..2f19a3c 100644 --- a/Core.Thalos.DAL.API/appsettings.Development.json +++ b/Core.Thalos.DAL.API/appsettings.Development.json @@ -5,4 +5,18 @@ "Microsoft.AspNetCore": "Warning" } }, + "AllowedHosts": "*", + "MongoDbSettings": { + "ConnectionString": "mongodb://localhost:27017", + "Databasename": "Thalos", + "Audience": "local-dev" + }, + "ConnectionStrings": { + "MongoDB": "mongodb://localhost:27017" + }, + "MongoDb": { + "DatabaseName": "Thalos", + "LocalAudience": "local-dev" + }, + "DetailedErrors": true } diff --git a/Core.Thalos.DAL.API/sample.settings.json b/Core.Thalos.DAL.API/sample.settings.json index b783692..502e8bc 100644 --- a/Core.Thalos.DAL.API/sample.settings.json +++ b/Core.Thalos.DAL.API/sample.settings.json @@ -26,7 +26,7 @@ "AuthorizationUrl": "", // URL for authorization endpoint (STORED IN KEY VAULT) "TokenUrl": "", // URL for token endpoint (STORED IN KEY VAULT) "Scope": "", // Scope for application permissions (STORED IN KEY VAULT) - "ClientId": "" // Client ID for Kerberos application (STORED IN KEY VAULT) + "ClientId": "" // Client ID for Thalos application (STORED IN KEY VAULT) }, "MicrosoftGraph": { "Scopes": "", // Scopes for Microsoft Graph API access diff --git a/Core.Thalos.Domain/Core.Thalos.Domain.csproj b/Core.Thalos.Domain/Core.Thalos.Domain.csproj index 05d9012..6debfa5 100644 --- a/Core.Thalos.Domain/Core.Thalos.Domain.csproj +++ b/Core.Thalos.Domain/Core.Thalos.Domain.csproj @@ -7,7 +7,7 @@ - + diff --git a/Core.Thalos.Provider/Core.Thalos.Provider.csproj b/Core.Thalos.Provider/Core.Thalos.Provider.csproj index 2023c09..cfe33f6 100644 --- a/Core.Thalos.Provider/Core.Thalos.Provider.csproj +++ b/Core.Thalos.Provider/Core.Thalos.Provider.csproj @@ -11,7 +11,7 @@ - + diff --git a/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs index a002270..a895c44 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs @@ -22,15 +22,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding { private readonly CollectionRepository repository; private readonly CacheSettings cacheSettings; - private readonly IRedisCacheProvider cacheProvider; + //private readonly IRedisCacheProvider cacheProvider; - public ModuleProvider(CollectionRepository repository, - IRedisCacheProvider cacheProvider, IOptions cacheSettings) + public ModuleProvider(CollectionRepository repository, IOptions cacheSettings) { this.repository = repository; this.repository.CollectionInitialization(); this.cacheSettings = cacheSettings.Value; - this.cacheProvider = cacheProvider; + //this.cacheProvider = cacheProvider; } /// @@ -57,13 +56,13 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask GetModuleById(string _id, CancellationToken cancellationToken) { var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetModuleById", _id); - var cachedData = await cacheProvider.GetAsync(cacheKey); + //var cachedData = await cacheProvider.GetAsync(cacheKey); - if (cachedData is not null) { return cachedData; } + //if (cachedData is not null) { return cachedData; } var module = await repository.FindByIdAsync(_id); - await cacheProvider.SetAsync(cacheKey, module); + //await cacheProvider.SetAsync(cacheKey, module); return module; } @@ -76,13 +75,13 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask> GetAllModules(CancellationToken cancellationToken) { var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetModules"); - var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - if (cachedData.Any()) return cachedData; + //if (cachedData.Any()) return cachedData; var modules = await repository.AsQueryable(); - await cacheProvider.SetAsync(cacheKey, modules); + //await cacheProvider.SetAsync(cacheKey, modules); return modules; } @@ -97,9 +96,9 @@ namespace Core.Thalos.Provider.Providers.Onboarding { var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllModulesByList", modules); - var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - if (cachedData.Any()) return cachedData; + //if (cachedData.Any()) return cachedData; var builder = Builders.Filter; var filters = new List>(); @@ -113,7 +112,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding var modulesList = await repository.FilterByMongoFilterAsync(finalFilter); - await cacheProvider.SetAsync(cacheKey, modulesList); + //await cacheProvider.SetAsync(cacheKey, modulesList); return modulesList; } diff --git a/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs index 77a2768..e2bf7d5 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs @@ -22,15 +22,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding { private readonly CollectionRepository repository; private readonly CacheSettings cacheSettings; - private readonly IRedisCacheProvider cacheProvider; + //private readonly IRedisCacheProvider cacheProvider; public PermissionProvider(CollectionRepository repository, - IRedisCacheProvider cacheProvider, IOptions cacheSettings) + //IRedisCacheProvider cacheProvider, + IOptions cacheSettings) { this.repository = repository; this.repository.CollectionInitialization(); this.cacheSettings = cacheSettings.Value; - this.cacheProvider = cacheProvider; + //this.cacheProvider = cacheProvider; } /// @@ -56,14 +57,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service.0 public async ValueTask GetPermissionById(string _id, CancellationToken cancellationToken) { - var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetPermissionById", _id); - var cachedData = await cacheProvider.GetAsync(cacheKey); + //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetPermissionById", _id); + //var cachedData = await cacheProvider.GetAsync(cacheKey); - if (cachedData is not null) { return cachedData; } + //if (cachedData is not null) { return cachedData; } var permission = await repository.FindByIdAsync(_id); - await cacheProvider.SetAsync(cacheKey, permission); + //await cacheProvider.SetAsync(cacheKey, permission); return permission; } @@ -75,14 +76,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask> GetAllPermissions(CancellationToken cancellationToken) { - var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissions"); - var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissions"); + //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - if (cachedData.Any()) return cachedData; + //if (cachedData.Any()) return cachedData; var permissions = await repository.AsQueryable(); - await cacheProvider.SetAsync(cacheKey, permissions); + //await cacheProvider.SetAsync(cacheKey, permissions); return permissions; } @@ -95,11 +96,11 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask> GetAllPermissionsByList(string[] permissions, CancellationToken cancellationToken) { - var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissionsByList", permissions); + //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissionsByList", permissions); - var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - if (cachedData.Any()) return cachedData; + //if (cachedData.Any()) return cachedData; var builder = Builders.Filter; var filters = new List>(); @@ -113,7 +114,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding var permissionsList = await repository.FilterByMongoFilterAsync(finalFilter); - await cacheProvider.SetAsync(cacheKey, permissionsList); + //await cacheProvider.SetAsync(cacheKey, permissionsList); return permissionsList; } diff --git a/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs index 70b009d..727c4ab 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs @@ -28,15 +28,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding { private readonly CollectionRepository repository; private readonly CacheSettings cacheSettings; - private readonly IRedisCacheProvider cacheProvider; + //private readonly IRedisCacheProvider cacheProvider; public RoleProvider(CollectionRepository repository, - IRedisCacheProvider cacheProvider, IOptions cacheSettings) + //IRedisCacheProvider cacheProvider, + IOptions cacheSettings) { this.repository = repository; this.repository.CollectionInitialization(); this.cacheSettings = cacheSettings.Value; - this.cacheProvider = cacheProvider; + //this.cacheProvider = cacheProvider; } /// @@ -62,14 +63,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask GetRoleById(string _id, CancellationToken cancellationToken) { - var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetRoleById", _id); - var cachedData = await cacheProvider.GetAsync(cacheKey); + //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetRoleById", _id); + //var cachedData = await cacheProvider.GetAsync(cacheKey); - if (cachedData is not null) { return cachedData; } + //if (cachedData is not null) { return cachedData; } var role = await repository.FindByIdAsync(_id); - await cacheProvider.SetAsync(cacheKey, role); + //await cacheProvider.SetAsync(cacheKey, role); return role; } @@ -81,14 +82,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask> GetAllRoles(CancellationToken cancellationToken) { - var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllRoles"); - var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllRoles"); + //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - if (cachedData.Any()) return cachedData; + //if (cachedData.Any()) return cachedData; var roles = await repository.AsQueryable(); - await cacheProvider.SetAsync(cacheKey, roles); + //await cacheProvider.SetAsync(cacheKey, roles); return roles; } @@ -133,7 +134,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask AddApplicationToRole(string roleId, ApplicationsEnum application, CancellationToken cancellationToken) { var role = await repository.FindOneAsync( - u => u.Id == roleId && + u => u._Id == roleId && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); var updatedApplications = role.Applications.Append(application).Distinct().ToArray(); @@ -153,7 +154,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask RemoveApplicationFromRole(string roleId, ApplicationsEnum application, CancellationToken cancellationToken) { var role = await repository.FindOneAsync( - u => u.Id == roleId && + u => u._Id == roleId && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); var updatedApplications = role.Applications diff --git a/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs index bed3c21..706e05b 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs @@ -26,15 +26,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding { private readonly CollectionRepository repository; private readonly CacheSettings cacheSettings; - private readonly IRedisCacheProvider cacheProvider; + //private readonly IRedisCacheProvider cacheProvider; public UserProvider(CollectionRepository repository, - IRedisCacheProvider cacheProvider, IOptions cacheSettings) + //IRedisCacheProvider cacheProvider, + IOptions cacheSettings) { this.repository = repository; this.repository.CollectionInitialization(); this.cacheSettings = cacheSettings.Value; - this.cacheProvider = cacheProvider; + //this.cacheProvider = cacheProvider; } /// @@ -60,14 +61,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask GetUserById(string _id, CancellationToken cancellationToken) { - var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserById", _id); - var cachedData = await cacheProvider.GetAsync(cacheKey); + //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserById", _id); + //var cachedData = await cacheProvider.GetAsync(cacheKey); - if (cachedData is not null) { return cachedData; } + //if (cachedData is not null) { return cachedData; } var user = await repository.FindByIdAsync(_id); - await cacheProvider.SetAsync(cacheKey, user); + //await cacheProvider.SetAsync(cacheKey, user); return user; } @@ -79,14 +80,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask> GetAllUsers(CancellationToken cancellationToken) { - var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllUsers"); - var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllUsers"); + //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - if (cachedData.Any()) return cachedData; + //if (cachedData.Any()) return cachedData; var users = await repository.AsQueryable(); - await cacheProvider.SetAsync(cacheKey, users); + //await cacheProvider.SetAsync(cacheKey, users); return users; } @@ -99,16 +100,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask GetUserByEmail(string? email, CancellationToken cancellationToken) { - var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); - var cachedData = await cacheProvider.GetAsync(cacheKey); + //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); + //var cachedData = await cacheProvider.GetAsync(cacheKey); - if (cachedData is not null) { return cachedData; } + //if (cachedData is not null) { return cachedData; } var user = await repository.FindOneAsync( u => u.Email == email && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); - await cacheProvider.SetAsync(cacheKey, user); + //await cacheProvider.SetAsync(cacheKey, user); return user; } @@ -121,16 +122,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask ValidateUserExistence(string? email, CancellationToken cancellationToken) { - var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); - var cachedData = await cacheProvider.GetAsync(cacheKey); + //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); + //var cachedData = await cacheProvider.GetAsync(cacheKey); - if (cachedData is not null) { return cachedData; } + //if (cachedData is not null) { return cachedData; } var user = await repository.FindOneAsync( u => u.Email == email && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); - await cacheProvider.SetAsync(cacheKey, user); + //await cacheProvider.SetAsync(cacheKey, user); return user; } @@ -213,7 +214,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask AddCompanyToUser(string userId, string companyId, CancellationToken cancellationToken) { var user = await repository.FindOneAsync( - u => u.Id == userId && + u => u._Id == userId && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); var updatedCompanies = user.Companies.Append(companyId).Distinct().ToArray(); @@ -233,7 +234,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask RemoveCompanyFromUser(string userId, string companyId, CancellationToken cancellationToken) { var user = await repository.FindOneAsync( - u => u.Id == userId && + u => u._Id == userId && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); var updatedCompanies = user.Companies @@ -256,11 +257,11 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask AddProjectToUser(string userId, string projectId, CancellationToken cancellationToken) { var user = await repository.FindOneAsync( - u => u.Id == userId && + u => u._Id == userId && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); var updatedProjects = user.Projects.Append(projectId).Distinct().ToArray(); - user.Companies = updatedProjects; + user.Projects = updatedProjects; await repository.ReplaceOneAsync(user); @@ -276,14 +277,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask RemoveProjectFromUser(string userId, string projectId, CancellationToken cancellationToken) { var user = await repository.FindOneAsync( - u => u.Id == userId && + u => u._Id == userId && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); var updatedProjects = user.Projects ?.Where(c => c != projectId) .ToArray(); - user.Companies = updatedProjects; + user.Projects = updatedProjects; await repository.ReplaceOneAsync(user); @@ -399,53 +400,106 @@ namespace Core.Thalos.Provider.Providers.Onboarding User = new UserAdapter { Id = result["_id"]?.ToString() ?? "", - Guid = result["guid"].AsString, - Email = result["email"].AsString, - Name = result["name"].AsString, - MiddleName = result["middleName"].AsString, - LastName = result["lastName"].AsString, - DisplayName = result["displayName"].AsString, - RoleId = result["roleId"]?.ToString() ?? "", - Companies = result["companies"].AsBsonArray - .Select(c => c.AsString) - .ToArray(), - Projects = result["projects"].AsBsonArray - .Select(c => c.AsString) - .ToArray(), - LastLogIn = result["lastLogIn"].ToUniversalTime(), - LastLogOut = result["lastLogOut"].ToUniversalTime(), - CreatedAt = result["createdAt"].ToUniversalTime(), - CreatedBy = result["createdBy"].AsString, - UpdatedAt = result["updatedAt"].ToUniversalTime(), - UpdatedBy = result["updatedBy"].AsString, - Status = (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["status"].AsString), + Guid = result.Contains("guid") && !result["guid"].IsBsonNull ? result["guid"].AsString : "", + Email = result.Contains("email") && !result["email"].IsBsonNull ? result["email"].AsString : "", + Name = result.Contains("name") && !result["name"].IsBsonNull ? result["name"].AsString : "", + MiddleName = result.Contains("middleName") && !result["middleName"].IsBsonNull ? result["middleName"].AsString : "", + LastName = result.Contains("lastName") && !result["lastName"].IsBsonNull ? result["lastName"].AsString : "", + DisplayName = result.Contains("displayName") && !result["displayName"].IsBsonNull ? result["displayName"].AsString : "", + RoleId = result.Contains("roleId") && !result["roleId"].IsBsonNull ? result["roleId"].ToString() : "", + Companies = result.Contains("companies") && result["companies"].IsBsonArray + ? result["companies"].AsBsonArray + .Where(c => c != null && !c.IsBsonNull) + .Select(c => c.AsString) + .ToArray() + : Array.Empty(), + Projects = result.Contains("projects") && result["projects"].IsBsonArray + ? result["projects"].AsBsonArray + .Where(p => p != null && !p.IsBsonNull) + .Select(p => p.AsString) + .ToArray() + : Array.Empty(), + LastLogIn = result.Contains("lastLogIn") && !result["lastLogIn"].IsBsonNull ? result["lastLogIn"].ToUniversalTime() : DateTime.MinValue, + LastLogOut = result.Contains("lastLogOut") && !result["lastLogOut"].IsBsonNull ? result["lastLogOut"].ToUniversalTime() : DateTime.MinValue, + CreatedAt = result.Contains("createdAt") && !result["createdAt"].IsBsonNull ? result["createdAt"].ToUniversalTime() : DateTime.MinValue, + CreatedBy = result.Contains("createdBy") && !result["createdBy"].IsBsonNull ? result["createdBy"].AsString : "", + UpdatedAt = result.Contains("updatedAt") && !result["updatedAt"].IsBsonNull ? result["updatedAt"].ToUniversalTime() : DateTime.MinValue, + UpdatedBy = result.Contains("updatedBy") && !result["updatedBy"].IsBsonNull ? result["updatedBy"].AsString : "", + Status = result.Contains("status") && !result["status"].IsBsonNull + ? (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["status"].AsString) + : Core.Blueprint.Mongo.StatusEnum.Inactive }, Role = new RoleAdapter { - Id = result["role"]["_id"]?.ToString() ?? "", - Name = result["role"]["name"].AsString, - Description = result["role"]["description"].AsString, - Applications = result["role"]["applications"].AsBsonArray - .Select(c => (ApplicationsEnum)c.AsInt32) - .ToArray(), - Modules = result["role"]["modules"].AsBsonArray - .Select(c => c.ToString() ?? "") - .ToArray(), - Permissions = result["role"]["permissions"].AsBsonArray - .Select(c => c.ToString() ?? "") - .ToArray(), - Status = (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["role"]["status"].AsString), - CreatedAt = result["role"]["createdAt"].ToUniversalTime(), - UpdatedAt = result["role"]["updatedAt"].ToUniversalTime(), - CreatedBy = result["role"]["createdBy"].AsString, - UpdatedBy = result["role"]["updatedBy"].AsString + Id = result.Contains("role") && result["role"].IsBsonDocument && result["role"].AsBsonDocument.Contains("_id") + ? result["role"]["_id"]?.ToString() ?? "" + : "", + Name = result.Contains("role") && result["role"].IsBsonDocument && result["role"].AsBsonDocument.Contains("name") + ? result["role"]["name"]?.AsString ?? "" + : "", + Description = result.Contains("role") && result["role"].IsBsonDocument && result["role"].AsBsonDocument.Contains("description") + ? result["role"]["description"]?.AsString ?? "" + : "", + Applications = result.Contains("role") && result["role"].IsBsonDocument && + result["role"].AsBsonDocument.Contains("applications") && + result["role"]["applications"].IsBsonArray + ? result["role"]["applications"].AsBsonArray + .Where(app => app != null && app.IsInt32) + .Select(app => (ApplicationsEnum)app.AsInt32) + .ToArray() + : Array.Empty(), + Modules = result.Contains("role") && result["role"].IsBsonDocument && + result["role"].AsBsonDocument.Contains("modules") && + result["role"]["modules"].IsBsonArray + ? result["role"]["modules"].AsBsonArray + .Where(m => m != null) + .Select(m => m.ToString() ?? "") + .ToArray() + : Array.Empty(), + Permissions = result.Contains("role") && result["role"].IsBsonDocument && + result["role"].AsBsonDocument.Contains("permissions") && + result["role"]["permissions"].IsBsonArray + ? result["role"]["permissions"].AsBsonArray + .Where(p => p != null) + .Select(p => p.ToString() ?? "") + .ToArray() + : Array.Empty(), + Status = result.Contains("role") && result["role"].IsBsonDocument && + result["role"].AsBsonDocument.Contains("status") && + !result["role"]["status"].IsBsonNull + ? (Core.Blueprint.Mongo.StatusEnum)Enum.Parse(typeof(Core.Blueprint.Mongo.StatusEnum), result["role"]["status"].AsString) + : Core.Blueprint.Mongo.StatusEnum.Inactive, + CreatedAt = result.Contains("role") && result["role"].IsBsonDocument && + result["role"].AsBsonDocument.Contains("createdAt") && + !result["role"]["createdAt"].IsBsonNull + ? result["role"]["createdAt"].ToUniversalTime() + : DateTime.MinValue, + UpdatedAt = result.Contains("role") && result["role"].IsBsonDocument && + result["role"].AsBsonDocument.Contains("updatedAt") && + !result["role"]["updatedAt"].IsBsonNull + ? result["role"]["updatedAt"].ToUniversalTime() + : DateTime.MinValue, + CreatedBy = result.Contains("role") && result["role"].IsBsonDocument && + result["role"].AsBsonDocument.Contains("createdBy") && + !result["role"]["createdBy"].IsBsonNull + ? result["role"]["createdBy"].AsString + : "", + UpdatedBy = result.Contains("role") && result["role"].IsBsonDocument && + result["role"].AsBsonDocument.Contains("updatedBy") && + !result["role"]["updatedBy"].IsBsonNull + ? result["role"]["updatedBy"].AsString + : "" }, - Permissions = result["permissions"].AsBsonArray - .Select(permission => BsonSerializer.Deserialize(permission.AsBsonDocument)) - .Where(permission => permission.Status == Core.Blueprint.Mongo.StatusEnum.Active) - .ToList() + Permissions = result.Contains("permissions") && result["permissions"].IsBsonArray + ? result["permissions"].AsBsonArray + .Where(p => p != null && p.IsBsonDocument) + .Select(p => BsonSerializer.Deserialize(p.AsBsonDocument)) + .Where(p => p.Status == Core.Blueprint.Mongo.StatusEnum.Active) + .ToList() + : new List() }; + return tokenAdapter; } diff --git a/Core.Thalos.Provider/ServiceCollectionExtensions.cs b/Core.Thalos.Provider/ServiceCollectionExtensions.cs index 4305164..bdd18cd 100644 --- a/Core.Thalos.Provider/ServiceCollectionExtensions.cs +++ b/Core.Thalos.Provider/ServiceCollectionExtensions.cs @@ -1,4 +1,6 @@ -using Core.Thalos.Infraestructure.Caching.Contracts; +using Core.Blueprint.Mongo; +using Core.Thalos.Adapters; +using Core.Thalos.Infraestructure.Caching.Contracts; using Core.Thalos.Infraestructure.Contexts.Mongo; using Core.Thalos.Provider.Contracts; using Core.Thalos.Provider.Providers; @@ -14,60 +16,21 @@ namespace Core.Thalos.Provider { public static class ServiceCollectionExtensions { - public static IServiceCollection AddDALLayer(this IServiceCollection services, IConfiguration configuration) + public static IServiceCollection AddDALLayerServices(this IServiceCollection services, IConfiguration configuration) { - var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? string.Empty; + //Mongo + services.AddScoped(); + services.AddScoped>(); - var connectionString = configuration.GetSection("ConnectionStrings:MongoDB").Value ?? string.Empty; - var databaseName = configuration.GetSection("MongoDB:DatabaseName").Value ?? string.Empty; - var audience = (environment == "Local") - ? configuration.GetSection("MongoDB:LocalAudience").Value - : configuration.GetSection("MongoDB:Audience").Value; + services.AddScoped(); + services.AddScoped>(); - if (string.IsNullOrEmpty(connectionString) || string.IsNullOrEmpty(databaseName) || string.IsNullOrEmpty(audience)) - { - throw new InvalidOperationException("Mongo connection is not configured correctly."); - } - - services.Configure(options => - { - options.ConnectionString = connectionString; - options.Databasename = databaseName; - options.Audience = audience ?? string.Empty; - }); - - services.AddSingleton(serviceProvider => - { - var settings = serviceProvider.GetRequiredService>().Value; - var mongoClientSettings = MongoClientSettings.FromConnectionString(settings.ConnectionString); - mongoClientSettings.Credential = MongoCredential.CreateOidcCredential(new HeathOidcCallback(settings.Audience)); - return new MongoClient(mongoClientSettings); - }); - - services.AddSingleton(serviceProvider => - { - var settings = serviceProvider.GetRequiredService>().Value; - var client = serviceProvider.GetRequiredService(); - return client.GetDatabase(settings.Databasename); - }); - - services.AddDALConfigurationLayer(); - services.AddLogs(); - services.AddRedisCacheService(configuration); - - return services; - } - - - private static IServiceCollection AddDALConfigurationLayer(this IServiceCollection services) - { - services.AddHttpContextAccessor(); + services.AddScoped(); + services.AddScoped>(); services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); + services.AddScoped>(); + return services; } From 8207048c25c872f92a5eef4f52f8b501982a969d Mon Sep 17 00:00:00 2001 From: Oscar Morales Date: Fri, 6 Jun 2025 10:22:07 -0600 Subject: [PATCH 2/3] Apply cache configuration --- Core.Thalos.DAL.API/Program.cs | 2 ++ .../Properties/launchSettings.json | 2 +- .../appsettings.Development.json | 16 +++++----- Core.Thalos.DAL.API/appsettings.json | 14 ++++++-- .../Core.Thalos.Provider.csproj | 4 +-- .../Providers/Onboarding/ModuleProvider.cs | 32 +++++++++++-------- .../Onboarding/PermissionProvider.cs | 13 ++++---- .../Providers/Onboarding/RoleProvider.cs | 13 ++++---- .../Providers/Onboarding/UserProvider.cs | 13 ++++---- 9 files changed, 64 insertions(+), 45 deletions(-) diff --git a/Core.Thalos.DAL.API/Program.cs b/Core.Thalos.DAL.API/Program.cs index fd55259..40eacb0 100644 --- a/Core.Thalos.DAL.API/Program.cs +++ b/Core.Thalos.DAL.API/Program.cs @@ -1,3 +1,4 @@ +using Core.Blueprint.Caching.Configuration; using Core.Blueprint.DAL.Mongo.Configuration; using Core.Blueprint.Logging.Configuration; using Core.Thalos.Adapters.Extensions; @@ -19,6 +20,7 @@ builder.Services.AddResponseCompression(); builder.Services.AddProblemDetails(); builder.Services.AddMemoryCache(); builder.Services.AddLogs(builder); +builder.Services.AddRedis(builder.Configuration); builder.Services.AddMongoLayer(builder.Configuration); builder.Services.AddDALLayerServices(builder.Configuration); diff --git a/Core.Thalos.DAL.API/Properties/launchSettings.json b/Core.Thalos.DAL.API/Properties/launchSettings.json index 105edd9..2deec93 100644 --- a/Core.Thalos.DAL.API/Properties/launchSettings.json +++ b/Core.Thalos.DAL.API/Properties/launchSettings.json @@ -26,7 +26,7 @@ "launchUrl": "swagger", "applicationUrl": "https://localhost:7031;http://localhost:5211", "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" + "ASPNETCORE_ENVIRONMENT": "Local" } }, "IIS Express": { diff --git a/Core.Thalos.DAL.API/appsettings.Development.json b/Core.Thalos.DAL.API/appsettings.Development.json index 2f19a3c..66f27d7 100644 --- a/Core.Thalos.DAL.API/appsettings.Development.json +++ b/Core.Thalos.DAL.API/appsettings.Development.json @@ -6,17 +6,17 @@ } }, "AllowedHosts": "*", - "MongoDbSettings": { - "ConnectionString": "mongodb://localhost:27017", - "Databasename": "Thalos", - "Audience": "local-dev" - }, "ConnectionStrings": { - "MongoDB": "mongodb://localhost:27017" + "MongoDB": "mongodb://localhost:27017", + "Redis": "localhost:6379" }, "MongoDb": { "DatabaseName": "Thalos", - "LocalAudience": "local-dev" + "LocalAudience": "" }, - "DetailedErrors": true + "DetailedErrors": true, + "UseRedisCache": true, + "CacheSettings": { + "DefaultCacheDurationInMinutes": 3 + } } diff --git a/Core.Thalos.DAL.API/appsettings.json b/Core.Thalos.DAL.API/appsettings.json index d321977..66f27d7 100644 --- a/Core.Thalos.DAL.API/appsettings.json +++ b/Core.Thalos.DAL.API/appsettings.json @@ -6,7 +6,17 @@ } }, "AllowedHosts": "*", - "Endpoints": { - "AppConfigurationURI": "https://sandbox-hci-usc-appcg.azconfig.io" + "ConnectionStrings": { + "MongoDB": "mongodb://localhost:27017", + "Redis": "localhost:6379" + }, + "MongoDb": { + "DatabaseName": "Thalos", + "LocalAudience": "" + }, + "DetailedErrors": true, + "UseRedisCache": true, + "CacheSettings": { + "DefaultCacheDurationInMinutes": 3 } } diff --git a/Core.Thalos.Provider/Core.Thalos.Provider.csproj b/Core.Thalos.Provider/Core.Thalos.Provider.csproj index cfe33f6..f2a69fe 100644 --- a/Core.Thalos.Provider/Core.Thalos.Provider.csproj +++ b/Core.Thalos.Provider/Core.Thalos.Provider.csproj @@ -11,8 +11,8 @@ - - + + diff --git a/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs index a895c44..fa8e248 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs @@ -5,13 +5,15 @@ // *********************************************************************** using Core.Thalos.Adapters; using Core.Blueprint.Mongo; -using Core.Blueprint.Redis; -using Core.Blueprint.Redis.Helpers; +using Core.Blueprint.Caching; +using Core.Blueprint.Caching.Helpers; using Mapster; using Microsoft.Extensions.Options; using MongoDB.Driver; using Core.Thalos.Provider.Contracts; using Core.Thalos.Domain.Contexts.Onboarding.Request; +using Core.Blueprint.Caching.Contracts; +using Core.Blueprint.Caching.Adapters; namespace Core.Thalos.Provider.Providers.Onboarding { @@ -22,14 +24,16 @@ namespace Core.Thalos.Provider.Providers.Onboarding { private readonly CollectionRepository repository; private readonly CacheSettings cacheSettings; - //private readonly IRedisCacheProvider cacheProvider; + private readonly ICacheProvider cacheProvider; - public ModuleProvider(CollectionRepository repository, IOptions cacheSettings) + public ModuleProvider(CollectionRepository repository, + ICacheProvider cacheProvider, + IOptions cacheSettings) { this.repository = repository; this.repository.CollectionInitialization(); this.cacheSettings = cacheSettings.Value; - //this.cacheProvider = cacheProvider; + this.cacheProvider = cacheProvider; } /// @@ -56,13 +60,13 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask GetModuleById(string _id, CancellationToken cancellationToken) { var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetModuleById", _id); - //var cachedData = await cacheProvider.GetAsync(cacheKey); + var cachedData = await cacheProvider.GetAsync(cacheKey); - //if (cachedData is not null) { return cachedData; } + if (cachedData is not null) { return cachedData; } var module = await repository.FindByIdAsync(_id); - //await cacheProvider.SetAsync(cacheKey, module); + await cacheProvider.SetAsync(cacheKey, module); return module; } @@ -75,13 +79,13 @@ namespace Core.Thalos.Provider.Providers.Onboarding public async ValueTask> GetAllModules(CancellationToken cancellationToken) { var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetModules"); - //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - //if (cachedData.Any()) return cachedData; + if (cachedData.Any()) return cachedData; var modules = await repository.AsQueryable(); - //await cacheProvider.SetAsync(cacheKey, modules); + await cacheProvider.SetAsync(cacheKey, modules); return modules; } @@ -96,9 +100,9 @@ namespace Core.Thalos.Provider.Providers.Onboarding { var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllModulesByList", modules); - //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - //if (cachedData.Any()) return cachedData; + if (cachedData.Any()) return cachedData; var builder = Builders.Filter; var filters = new List>(); @@ -112,7 +116,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding var modulesList = await repository.FilterByMongoFilterAsync(finalFilter); - //await cacheProvider.SetAsync(cacheKey, modulesList); + await cacheProvider.SetAsync(cacheKey, modulesList); return modulesList; } diff --git a/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs index e2bf7d5..e2c1421 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs @@ -5,8 +5,8 @@ // *********************************************************************** using Core.Thalos.Adapters; using Core.Blueprint.Mongo; -using Core.Blueprint.Redis; -using Core.Blueprint.Redis.Helpers; +//using Core.Blueprint.Redis; +//using Core.Blueprint.Redis.Helpers; using Mapster; using Microsoft.Extensions.Options; using MongoDB.Driver; @@ -21,16 +21,17 @@ namespace Core.Thalos.Provider.Providers.Onboarding public class PermissionProvider : IPermissionProvider { private readonly CollectionRepository repository; - private readonly CacheSettings cacheSettings; + //private readonly CacheSettings cacheSettings; //private readonly IRedisCacheProvider cacheProvider; - public PermissionProvider(CollectionRepository repository, + public PermissionProvider(CollectionRepository repository //IRedisCacheProvider cacheProvider, - IOptions cacheSettings) + //IOptions cacheSettings + ) { this.repository = repository; this.repository.CollectionInitialization(); - this.cacheSettings = cacheSettings.Value; + //this.cacheSettings = cacheSettings.Value; //this.cacheProvider = cacheProvider; } diff --git a/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs index 727c4ab..ac58137 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs @@ -6,8 +6,8 @@ using Core.Thalos.Adapters; using Core.Thalos.Adapters.Common.Enums; using Core.Blueprint.Mongo; -using Core.Blueprint.Redis; -using Core.Blueprint.Redis.Helpers; +//using Core.Blueprint.Redis; +//using Core.Blueprint.Redis.Helpers; using Mapster; using Microsoft.Extensions.Options; using MongoDB.Driver; @@ -27,16 +27,17 @@ namespace Core.Thalos.Provider.Providers.Onboarding public class RoleProvider : IRoleProvider { private readonly CollectionRepository repository; - private readonly CacheSettings cacheSettings; + //private readonly CacheSettings cacheSettings; //private readonly IRedisCacheProvider cacheProvider; - public RoleProvider(CollectionRepository repository, + public RoleProvider(CollectionRepository repository //IRedisCacheProvider cacheProvider, - IOptions cacheSettings) + //IOptions cacheSettings + ) { this.repository = repository; this.repository.CollectionInitialization(); - this.cacheSettings = cacheSettings.Value; + //this.cacheSettings = cacheSettings.Value; //this.cacheProvider = cacheProvider; } diff --git a/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs index 706e05b..705a2d6 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs @@ -7,8 +7,8 @@ using Core.Thalos.Adapters; using Core.Thalos.Adapters.Common.Enums; using Core.Blueprint.Mongo; -using Core.Blueprint.Redis; -using Core.Blueprint.Redis.Helpers; +//using Core.Blueprint.Redis; +//using Core.Blueprint.Redis.Helpers; using Mapster; using Microsoft.Extensions.Options; using MongoDB.Driver; @@ -25,16 +25,17 @@ namespace Core.Thalos.Provider.Providers.Onboarding public class UserProvider : IUserProvider { private readonly CollectionRepository repository; - private readonly CacheSettings cacheSettings; + //private readonly CacheSettings cacheSettings; //private readonly IRedisCacheProvider cacheProvider; - public UserProvider(CollectionRepository repository, + public UserProvider(CollectionRepository repository //IRedisCacheProvider cacheProvider, - IOptions cacheSettings) + //IOptions cacheSettings + ) { this.repository = repository; this.repository.CollectionInitialization(); - this.cacheSettings = cacheSettings.Value; + //this.cacheSettings = cacheSettings.Value; //this.cacheProvider = cacheProvider; } From 6cb0aea1a06c46033e50e81858ef822da7bf5086 Mon Sep 17 00:00:00 2001 From: Oscar Morales Date: Tue, 10 Jun 2025 23:12:43 -0600 Subject: [PATCH 3/3] Uncomment the cache settings --- .../Controllers/ModuleController.cs | 2 +- .../Controllers/PermissionController.cs | 2 +- .../Controllers/RoleController.cs | 2 +- .../Controllers/UserController.cs | 2 +- .../Contracts/IUserProvider.cs | 2 +- .../Providers/Onboarding/ModuleProvider.cs | 5 +- .../Onboarding/PermissionProvider.cs | 51 +++++++-------- .../Providers/Onboarding/RoleProvider.cs | 53 +++++++-------- .../Providers/Onboarding/UserProvider.cs | 64 ++++++++++--------- 9 files changed, 95 insertions(+), 88 deletions(-) diff --git a/Core.Thalos.DAL.API/Controllers/ModuleController.cs b/Core.Thalos.DAL.API/Controllers/ModuleController.cs index 322a5ae..82472d2 100644 --- a/Core.Thalos.DAL.API/Controllers/ModuleController.cs +++ b/Core.Thalos.DAL.API/Controllers/ModuleController.cs @@ -138,7 +138,7 @@ namespace LSA.Core.Thalos.API.Controllers //[Permission("ModuleManagement.Write")] public async Task UpdateModuleAsync([FromRoute] string id, ModuleAdapter entity, CancellationToken cancellationToken) { - if (id != entity._Id?.ToString()) + if (id != entity.Id?.ToString()) { return BadRequest("Module ID mismatch"); } diff --git a/Core.Thalos.DAL.API/Controllers/PermissionController.cs b/Core.Thalos.DAL.API/Controllers/PermissionController.cs index 15105d6..d8037ff 100644 --- a/Core.Thalos.DAL.API/Controllers/PermissionController.cs +++ b/Core.Thalos.DAL.API/Controllers/PermissionController.cs @@ -136,7 +136,7 @@ namespace LSA.Core.Thalos.API.Controllers //[Permission("PermissionManagement.Write")] public async Task UpdatePermissionAsync([FromRoute] string id, PermissionAdapter entity, CancellationToken cancellationToken) { - if (id != entity._Id?.ToString()) + if (id != entity.Id?.ToString()) { return BadRequest("Permission ID mismatch"); } diff --git a/Core.Thalos.DAL.API/Controllers/RoleController.cs b/Core.Thalos.DAL.API/Controllers/RoleController.cs index a68560a..dde13db 100644 --- a/Core.Thalos.DAL.API/Controllers/RoleController.cs +++ b/Core.Thalos.DAL.API/Controllers/RoleController.cs @@ -103,7 +103,7 @@ namespace LSA.Core.Thalos.API.Controllers //[Permission("RoleManagement.Write")] public async Task UpdateRoleAsync([FromRoute] string id, [FromBody] RoleAdapter entity, CancellationToken cancellationToken) { - if (id != entity._Id?.ToString()) + if (id != entity.Id?.ToString()) { return BadRequest("Role ID mismatch"); } diff --git a/Core.Thalos.DAL.API/Controllers/UserController.cs b/Core.Thalos.DAL.API/Controllers/UserController.cs index 1cbf74b..d4a32d5 100644 --- a/Core.Thalos.DAL.API/Controllers/UserController.cs +++ b/Core.Thalos.DAL.API/Controllers/UserController.cs @@ -152,7 +152,7 @@ namespace LSA.Core.Thalos.API.Controllers //[Permission("UserManagement.Write")] public async Task UpdateUserAsync([FromRoute] string id, [FromBody] UserAdapter entity, CancellationToken cancellationToken) { - if (id != entity._Id?.ToString()) + if (id != entity.Id?.ToString()) { return BadRequest("User ID mismatch"); } diff --git a/Core.Thalos.Provider/Contracts/IUserProvider.cs b/Core.Thalos.Provider/Contracts/IUserProvider.cs index 7fe150a..ab20202 100644 --- a/Core.Thalos.Provider/Contracts/IUserProvider.cs +++ b/Core.Thalos.Provider/Contracts/IUserProvider.cs @@ -49,7 +49,7 @@ namespace Core.Thalos.Provider.Contracts /// The User email. /// A representing /// the asynchronous execution of the service. - ValueTask ValidateUserExistence(string? email, CancellationToken cancellationToken); + ValueTask ValidateUserExistence(string? email, CancellationToken cancellationToken); /// /// Changes the status of the user. diff --git a/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs index fa8e248..2435445 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/ModuleProvider.cs @@ -5,7 +5,6 @@ // *********************************************************************** using Core.Thalos.Adapters; using Core.Blueprint.Mongo; -using Core.Blueprint.Caching; using Core.Blueprint.Caching.Helpers; using Mapster; using Microsoft.Extensions.Options; @@ -107,9 +106,9 @@ namespace Core.Thalos.Provider.Providers.Onboarding var builder = Builders.Filter; var filters = new List>(); - if (modules == null || !modules.Any()) + if (modules != null || !modules.Any()) { - filters.Add(builder.In(x => x.Id, modules)); + filters.Add(builder.In(x => x._Id, modules)); } var finalFilter = filters.Any() ? builder.And(filters) : builder.Empty; diff --git a/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs index e2c1421..bafd9ea 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/PermissionProvider.cs @@ -3,15 +3,16 @@ // AgileWebs // // *********************************************************************** -using Core.Thalos.Adapters; +using Core.Blueprint.Caching.Adapters; +using Core.Blueprint.Caching.Contracts; +using Core.Blueprint.Caching.Helpers; using Core.Blueprint.Mongo; -//using Core.Blueprint.Redis; -//using Core.Blueprint.Redis.Helpers; +using Core.Thalos.Adapters; +using Core.Thalos.Domain.Contexts.Onboarding.Request; +using Core.Thalos.Provider.Contracts; using Mapster; using Microsoft.Extensions.Options; using MongoDB.Driver; -using Core.Thalos.Provider.Contracts; -using Core.Thalos.Domain.Contexts.Onboarding.Request; namespace Core.Thalos.Provider.Providers.Onboarding { @@ -21,18 +22,18 @@ namespace Core.Thalos.Provider.Providers.Onboarding public class PermissionProvider : IPermissionProvider { private readonly CollectionRepository repository; - //private readonly CacheSettings cacheSettings; - //private readonly IRedisCacheProvider cacheProvider; + private readonly CacheSettings cacheSettings; + private readonly ICacheProvider cacheProvider; - public PermissionProvider(CollectionRepository repository - //IRedisCacheProvider cacheProvider, - //IOptions cacheSettings + public PermissionProvider(CollectionRepository repository, + ICacheProvider cacheProvider, + IOptions cacheSettings ) { this.repository = repository; this.repository.CollectionInitialization(); - //this.cacheSettings = cacheSettings.Value; - //this.cacheProvider = cacheProvider; + this.cacheSettings = cacheSettings.Value; + this.cacheProvider = cacheProvider; } /// @@ -58,14 +59,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service.0 public async ValueTask GetPermissionById(string _id, CancellationToken cancellationToken) { - //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetPermissionById", _id); - //var cachedData = await cacheProvider.GetAsync(cacheKey); + var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetPermissionById", _id); + var cachedData = await cacheProvider.GetAsync(cacheKey); //if (cachedData is not null) { return cachedData; } var permission = await repository.FindByIdAsync(_id); - //await cacheProvider.SetAsync(cacheKey, permission); + await cacheProvider.SetAsync(cacheKey, permission); return permission; } @@ -77,14 +78,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask> GetAllPermissions(CancellationToken cancellationToken) { - //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissions"); - //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissions"); + var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - //if (cachedData.Any()) return cachedData; + if (cachedData.Any()) return cachedData; var permissions = await repository.AsQueryable(); - //await cacheProvider.SetAsync(cacheKey, permissions); + await cacheProvider.SetAsync(cacheKey, permissions); return permissions; } @@ -97,25 +98,25 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask> GetAllPermissionsByList(string[] permissions, CancellationToken cancellationToken) { - //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissionsByList", permissions); + var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllPermissionsByList", permissions); - //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - //if (cachedData.Any()) return cachedData; + if (cachedData.Any()) return cachedData; var builder = Builders.Filter; var filters = new List>(); - if (permissions == null || !permissions.Any()) + if (permissions != null || !permissions.Any()) { - filters.Add(builder.In(x => x.Id, permissions)); + filters.Add(builder.In(x => x._Id, permissions)); } var finalFilter = filters.Any() ? builder.And(filters) : builder.Empty; var permissionsList = await repository.FilterByMongoFilterAsync(finalFilter); - //await cacheProvider.SetAsync(cacheKey, permissionsList); + await cacheProvider.SetAsync(cacheKey, permissionsList); return permissionsList; } diff --git a/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs index ac58137..bf8372d 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/RoleProvider.cs @@ -3,21 +3,22 @@ // AgileWebs // // *********************************************************************** +using Core.Blueprint.Caching.Adapters; +using Core.Blueprint.Caching.Contracts; +using Core.Blueprint.Caching.Helpers; +using Core.Blueprint.Mongo; using Core.Thalos.Adapters; using Core.Thalos.Adapters.Common.Enums; -using Core.Blueprint.Mongo; -//using Core.Blueprint.Redis; -//using Core.Blueprint.Redis.Helpers; +using Core.Thalos.Domain.Contexts.Onboarding.Request; +using Core.Thalos.Provider.Contracts; using Mapster; using Microsoft.Extensions.Options; -using MongoDB.Driver; -using Core.Thalos.Provider.Contracts; -using MongoDB.Bson; -using System.Text.RegularExpressions; -using MongoDB.Bson.Serialization; -using Core.Thalos.Domain.Contexts.Onboarding.Request; using Microsoft.Graph; +using MongoDB.Bson; +using MongoDB.Bson.Serialization; +using MongoDB.Driver; using System.ComponentModel.Design; +using System.Text.RegularExpressions; namespace Core.Thalos.Provider.Providers.Onboarding { @@ -27,19 +28,19 @@ namespace Core.Thalos.Provider.Providers.Onboarding public class RoleProvider : IRoleProvider { private readonly CollectionRepository repository; - //private readonly CacheSettings cacheSettings; - //private readonly IRedisCacheProvider cacheProvider; + private readonly CacheSettings cacheSettings; + private readonly ICacheProvider cacheProvider; - public RoleProvider(CollectionRepository repository - //IRedisCacheProvider cacheProvider, - //IOptions cacheSettings - ) + public RoleProvider(CollectionRepository repository, + ICacheProvider cacheProvider, + IOptions cacheSettings + ) { this.repository = repository; this.repository.CollectionInitialization(); - //this.cacheSettings = cacheSettings.Value; - //this.cacheProvider = cacheProvider; - } + this.cacheSettings = cacheSettings.Value; + this.cacheProvider = cacheProvider; + } /// /// Creates a new Role. @@ -64,14 +65,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask GetRoleById(string _id, CancellationToken cancellationToken) { - //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetRoleById", _id); - //var cachedData = await cacheProvider.GetAsync(cacheKey); + var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetRoleById", _id); + var cachedData = await cacheProvider.GetAsync(cacheKey); - //if (cachedData is not null) { return cachedData; } + if (cachedData is not null) { return cachedData; } var role = await repository.FindByIdAsync(_id); - //await cacheProvider.SetAsync(cacheKey, role); + await cacheProvider.SetAsync(cacheKey, role); return role; } @@ -83,14 +84,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask> GetAllRoles(CancellationToken cancellationToken) { - //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllRoles"); - //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllRoles"); + var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - //if (cachedData.Any()) return cachedData; + if (cachedData.Any()) return cachedData; var roles = await repository.AsQueryable(); - //await cacheProvider.SetAsync(cacheKey, roles); + await cacheProvider.SetAsync(cacheKey, roles); return roles; } diff --git a/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs b/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs index 705a2d6..cf9a4b4 100644 --- a/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs +++ b/Core.Thalos.Provider/Providers/Onboarding/UserProvider.cs @@ -4,18 +4,20 @@ // // *********************************************************************** +using Core.Blueprint.Caching.Adapters; +using Core.Blueprint.Caching.Contracts; +using Core.Blueprint.Caching.Helpers; +using Core.Blueprint.Mongo; using Core.Thalos.Adapters; using Core.Thalos.Adapters.Common.Enums; -using Core.Blueprint.Mongo; -//using Core.Blueprint.Redis; -//using Core.Blueprint.Redis.Helpers; +using Core.Thalos.Provider.Contracts; using Mapster; using Microsoft.Extensions.Options; -using MongoDB.Driver; -using Core.Thalos.Provider.Contracts; using MongoDB.Bson; -using System.Text.RegularExpressions; using MongoDB.Bson.Serialization; +using MongoDB.Driver; +using System.Reflection; +using System.Text.RegularExpressions; namespace Core.Thalos.Provider.Providers.Onboarding { @@ -25,19 +27,19 @@ namespace Core.Thalos.Provider.Providers.Onboarding public class UserProvider : IUserProvider { private readonly CollectionRepository repository; - //private readonly CacheSettings cacheSettings; - //private readonly IRedisCacheProvider cacheProvider; + private readonly CacheSettings cacheSettings; + private readonly ICacheProvider cacheProvider; - public UserProvider(CollectionRepository repository - //IRedisCacheProvider cacheProvider, - //IOptions cacheSettings + public UserProvider(CollectionRepository repository, + ICacheProvider cacheProvider, + IOptions cacheSettings ) { this.repository = repository; this.repository.CollectionInitialization(); - //this.cacheSettings = cacheSettings.Value; - //this.cacheProvider = cacheProvider; - } + this.cacheSettings = cacheSettings.Value; + this.cacheProvider = cacheProvider; + } /// /// Creates a new User. @@ -62,14 +64,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask GetUserById(string _id, CancellationToken cancellationToken) { - //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserById", _id); - //var cachedData = await cacheProvider.GetAsync(cacheKey); + var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserById", _id); + var cachedData = await cacheProvider.GetAsync(cacheKey); //if (cachedData is not null) { return cachedData; } var user = await repository.FindByIdAsync(_id); - //await cacheProvider.SetAsync(cacheKey, user); + await cacheProvider.SetAsync(cacheKey, user); return user; } @@ -81,14 +83,14 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask> GetAllUsers(CancellationToken cancellationToken) { - //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllUsers"); - //var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; + var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetAllUsers"); + var cachedData = await cacheProvider.GetAsync>(cacheKey) ?? []; - //if (cachedData.Any()) return cachedData; + if (cachedData.Any()) return cachedData; var users = await repository.AsQueryable(); - //await cacheProvider.SetAsync(cacheKey, users); + await cacheProvider.SetAsync(cacheKey, users); return users; } @@ -101,8 +103,8 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// the asynchronous execution of the service. public async ValueTask GetUserByEmail(string? email, CancellationToken cancellationToken) { - //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); - //var cachedData = await cacheProvider.GetAsync(cacheKey); + var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); + var cachedData = await cacheProvider.GetAsync(cacheKey); //if (cachedData is not null) { return cachedData; } @@ -110,7 +112,7 @@ namespace Core.Thalos.Provider.Providers.Onboarding u => u.Email == email && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); - //await cacheProvider.SetAsync(cacheKey, user); + await cacheProvider.SetAsync(cacheKey, user); return user; } @@ -121,10 +123,10 @@ namespace Core.Thalos.Provider.Providers.Onboarding /// The User email. /// A representing /// the asynchronous execution of the service. - public async ValueTask ValidateUserExistence(string? email, CancellationToken cancellationToken) + public async ValueTask ValidateUserExistence(string? email, CancellationToken cancellationToken) { - //var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); - //var cachedData = await cacheProvider.GetAsync(cacheKey); + var cacheKey = CacheKeyHelper.GenerateCacheKey(this, "GetUserByEmail", email); + var cachedData = await cacheProvider.GetAsync(cacheKey); //if (cachedData is not null) { return cachedData; } @@ -132,9 +134,13 @@ namespace Core.Thalos.Provider.Providers.Onboarding u => u.Email == email && u.Status == Core.Blueprint.Mongo.StatusEnum.Active); - //await cacheProvider.SetAsync(cacheKey, user); + UserExistenceAdapter userExistance = new UserExistenceAdapter(); - return user; + userExistance.Existence = (user != null) ? true : false; + + await cacheProvider.SetAsync(cacheKey, userExistance); + + return userExistance; } ///