diff --git a/SecurityService/Controllers/ApiResourceController.cs b/SecurityService/Controllers/ApiResourceController.cs index b519c4f..64e0323 100644 --- a/SecurityService/Controllers/ApiResourceController.cs +++ b/SecurityService/Controllers/ApiResourceController.cs @@ -1,4 +1,4 @@ -using System; +/*using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -122,3 +122,4 @@ public async Task GetApiResources(CancellationToken cancellationToken) #endregion } } +*/ \ No newline at end of file diff --git a/SecurityService/Controllers/ApiScopeController.cs b/SecurityService/Controllers/ApiScopeController.cs index 29d52ed..0630741 100644 --- a/SecurityService/Controllers/ApiScopeController.cs +++ b/SecurityService/Controllers/ApiScopeController.cs @@ -1,4 +1,4 @@ -using MediatR; +/*using MediatR; using Microsoft.AspNetCore.Http; using SecurityService.BusinessLogic.RequestHandlers; using SecurityService.BusinessLogic.Requests; @@ -109,4 +109,4 @@ public async Task GetApiScopes(CancellationToken cancellationToken) #endregion } -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/SecurityService/Controllers/ClientController.cs b/SecurityService/Controllers/ClientController.cs index d240f8d..f10199b 100644 --- a/SecurityService/Controllers/ClientController.cs +++ b/SecurityService/Controllers/ClientController.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Http; +/*using Microsoft.AspNetCore.Http; using Shared.Results.Web; using SimpleResults; @@ -155,4 +155,4 @@ public async Task GetClients(CancellationToken cancellationToken) #endregion } -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/SecurityService/Controllers/DeveloperController.cs b/SecurityService/Controllers/DeveloperController.cs index 69e2a86..24c2401 100644 --- a/SecurityService/Controllers/DeveloperController.cs +++ b/SecurityService/Controllers/DeveloperController.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Http; +/*using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; namespace SecurityService.Controllers @@ -64,3 +64,4 @@ public async Task GetLastSMSMessage(CancellationToken cancellatio #endregion } } +*/ \ No newline at end of file diff --git a/SecurityService/Controllers/IdentityResourceController.cs b/SecurityService/Controllers/IdentityResourceController.cs index 59d6c27..32f7c08 100644 --- a/SecurityService/Controllers/IdentityResourceController.cs +++ b/SecurityService/Controllers/IdentityResourceController.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Http; +/*using Microsoft.AspNetCore.Http; using Shared.Results.Web; using SimpleResults; @@ -140,4 +140,4 @@ public async Task GetIdentityResources(CancellationToken cancellationTo #endregion } -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/SecurityService/Controllers/RoleController.cs b/SecurityService/Controllers/RoleController.cs index 764086f..d7c5f37 100644 --- a/SecurityService/Controllers/RoleController.cs +++ b/SecurityService/Controllers/RoleController.cs @@ -1,4 +1,4 @@ -using System; +/*using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; @@ -123,3 +123,4 @@ public async Task GetRoles(CancellationToken cancellationToken) #endregion } } +*/ \ No newline at end of file diff --git a/SecurityService/Controllers/UserController.cs b/SecurityService/Controllers/UserController.cs index b979ceb..3b7c514 100644 --- a/SecurityService/Controllers/UserController.cs +++ b/SecurityService/Controllers/UserController.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Http; +/*using Microsoft.AspNetCore.Http; using Shared.Results; using Shared.Results.Web; using SimpleResults; @@ -144,4 +144,4 @@ public async Task GetUsers([FromQuery] String userName, #endregion } -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/SecurityService/Endpoints/ApiResourceEndpoints.cs b/SecurityService/Endpoints/ApiResourceEndpoints.cs new file mode 100644 index 0000000..3774e59 --- /dev/null +++ b/SecurityService/Endpoints/ApiResourceEndpoints.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Routing; + +namespace SecurityService.Endpoints +{ + using Microsoft.AspNetCore.Builder; + + public static class ApiResourceEndpoints + { + public static void MapApiResourceEndpoints(this IEndpointRouteBuilder endpoints) + { + endpoints.MapPost("api/apiresources", Handlers.ApiResourceHandler.CreateApiResource) + .WithName("CreateApiResource"); + + endpoints.MapGet("api/apiresources/{apiResourceName}", Handlers.ApiResourceHandler.GetApiResource) + .WithName("GetApiResource"); + + endpoints.MapGet("api/apiresources", Handlers.ApiResourceHandler.GetApiResources) + .WithName("GetApiResources"); + } + } +} \ No newline at end of file diff --git a/SecurityService/Endpoints/ApiScopeEndpoints.cs b/SecurityService/Endpoints/ApiScopeEndpoints.cs new file mode 100644 index 0000000..01ca68e --- /dev/null +++ b/SecurityService/Endpoints/ApiScopeEndpoints.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Routing; + +namespace SecurityService.Endpoints +{ + using Microsoft.AspNetCore.Builder; + + public static class ApiScopeEndpoints + { + public static void MapApiScopeEndpoints(this IEndpointRouteBuilder endpoints) + { + endpoints.MapPost("api/apiscopes", Handlers.ApiScopeHandler.CreateApiScope) + .WithName("CreateApiScope"); + + endpoints.MapGet("api/apiscopes/{apiScopeName}", Handlers.ApiScopeHandler.GetApiScope) + .WithName("GetApiScope"); + + endpoints.MapGet("api/apiscopes", Handlers.ApiScopeHandler.GetApiScopes) + .WithName("GetApiScopes"); + } + } +} \ No newline at end of file diff --git a/SecurityService/Endpoints/ClientEndpoints.cs b/SecurityService/Endpoints/ClientEndpoints.cs new file mode 100644 index 0000000..1d1e13f --- /dev/null +++ b/SecurityService/Endpoints/ClientEndpoints.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Routing; + +namespace SecurityService.Endpoints +{ + using Microsoft.AspNetCore.Builder; + + public static class ClientEndpoints + { + public static void MapClientEndpoints(this IEndpointRouteBuilder endpoints) + { + endpoints.MapPost("api/clients", Handlers.ClientHandler.CreateClient) + .WithName("CreateClient"); + + endpoints.MapGet("api/clients/{clientId}", Handlers.ClientHandler.GetClient) + .WithName("GetClient"); + + endpoints.MapGet("api/clients", Handlers.ClientHandler.GetClients) + .WithName("GetClients"); + } + } +} \ No newline at end of file diff --git a/SecurityService/Endpoints/DeveloperEndpoints.cs b/SecurityService/Endpoints/DeveloperEndpoints.cs new file mode 100644 index 0000000..d31eb1f --- /dev/null +++ b/SecurityService/Endpoints/DeveloperEndpoints.cs @@ -0,0 +1,18 @@ +using Microsoft.AspNetCore.Routing; + +namespace SecurityService.Endpoints +{ + using Microsoft.AspNetCore.Builder; + + public static class DeveloperEndpoints + { + public static void MapDeveloperEndpoints(this IEndpointRouteBuilder endpoints) + { + endpoints.MapGet("api/developer/lastemail", Handlers.DeveloperHandler.GetLastEmailMessage) + .WithName("GetLastEmailMessage"); + + endpoints.MapGet("api/developer/lastsms", Handlers.DeveloperHandler.GetLastSMSMessage) + .WithName("GetLastSMSMessage"); + } + } +} \ No newline at end of file diff --git a/SecurityService/Endpoints/IdentityResourceEndpoints.cs b/SecurityService/Endpoints/IdentityResourceEndpoints.cs new file mode 100644 index 0000000..60948c9 --- /dev/null +++ b/SecurityService/Endpoints/IdentityResourceEndpoints.cs @@ -0,0 +1,22 @@ +using Microsoft.AspNetCore.Routing; + +namespace SecurityService.Endpoints +{ + using Microsoft.AspNetCore.Builder; + + public static class IdentityResourceEndpoints + { + public static void MapIdentityResourceEndpoints(this IEndpointRouteBuilder endpoints) + { + endpoints.MapPost("api/identityresources", Handlers.IdentityResourceHandler.CreateIdentityResource) + .WithName("CreateIdentityResource"); + + + endpoints.MapGet("api/identityresources/{apiResourceName}", Handlers.IdentityResourceHandler.GetIdentityResource) + .WithName("GetIdentityResource"); + + endpoints.MapGet("api/identityresources", Handlers.IdentityResourceHandler.GetIdentityResources) + .WithName("GetIdentityResources"); + } + } +} \ No newline at end of file diff --git a/SecurityService/Endpoints/RoleEndpoints.cs b/SecurityService/Endpoints/RoleEndpoints.cs new file mode 100644 index 0000000..c88773b --- /dev/null +++ b/SecurityService/Endpoints/RoleEndpoints.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Routing; + +namespace SecurityService.Endpoints +{ + using Microsoft.AspNetCore.Builder; + + public static class RoleEndpoints + { + public static void MapRoleEndpoints(this IEndpointRouteBuilder endpoints) + { + endpoints.MapPost("api/roles", Handlers.RoleHandler.CreateRole) + .WithName("CreateRole"); + + endpoints.MapGet("api/roles/{roleId:guid}", Handlers.RoleHandler.GetRole) + .WithName("GetRole"); + + endpoints.MapGet("api/roles", Handlers.RoleHandler.GetRoles) + .WithName("GetRoles"); + } + } +} \ No newline at end of file diff --git a/SecurityService/Endpoints/UserEndpoints.cs b/SecurityService/Endpoints/UserEndpoints.cs new file mode 100644 index 0000000..659df72 --- /dev/null +++ b/SecurityService/Endpoints/UserEndpoints.cs @@ -0,0 +1,21 @@ +using Microsoft.AspNetCore.Routing; + +namespace SecurityService.Endpoints +{ + using Microsoft.AspNetCore.Builder; + + public static class UserEndpoints + { + public static void MapUserEndpoints(this IEndpointRouteBuilder endpoints) + { + endpoints.MapPost("api/users", Handlers.UserHandler.CreateUser) + .WithName("CreateUser"); + + endpoints.MapGet("api/users/{userId:guid}", Handlers.UserHandler.GetUser) + .WithName("GetUser"); + + endpoints.MapGet("api/users", Handlers.UserHandler.GetUsers) + .WithName("GetUsers"); + } + } +} \ No newline at end of file diff --git a/SecurityService/Handlers/ApiResourceHandler.cs b/SecurityService/Handlers/ApiResourceHandler.cs new file mode 100644 index 0000000..bdcb272 --- /dev/null +++ b/SecurityService/Handlers/ApiResourceHandler.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using SecurityService.BusinessLogic.Requests; +using Shared.Results; +using Shared.Results.Web; +using SimpleResults; + +namespace SecurityService.Handlers +{ + using DataTransferObjects.Requests; + using Factories; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Mvc; + using SecurityService.BusinessLogic; + + public static class ApiResourceHandler + { + public static async Task CreateApiResource(IMediator mediator, + CreateApiResourceRequest createApiResourceRequest, + CancellationToken cancellationToken) + { + var command = new SecurityServiceCommands.CreateApiResourceCommand( + createApiResourceRequest.Name, + createApiResourceRequest.DisplayName, + createApiResourceRequest.Description, + createApiResourceRequest.Secret, + createApiResourceRequest.Scopes, + createApiResourceRequest.UserClaims); + + Result result = await mediator.Send(command, cancellationToken); + + return ResponseFactory.FromResult(result); + } + + public static async Task GetApiResource(IMediator mediator, + IModelFactory modelFactory, + string apiResourceName, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetApiResourceQuery(apiResourceName); + + Result result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + + public static async Task GetApiResources(IMediator mediator, + IModelFactory modelFactory, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetApiResourcesQuery(); + + Result> result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + } +} \ No newline at end of file diff --git a/SecurityService/Handlers/ApiScopeHandler.cs b/SecurityService/Handlers/ApiScopeHandler.cs new file mode 100644 index 0000000..0bb8048 --- /dev/null +++ b/SecurityService/Handlers/ApiScopeHandler.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using SecurityService.BusinessLogic.Requests; +using Shared.Results; +using Shared.Results.Web; +using SimpleResults; + +namespace SecurityService.Handlers +{ + using DataTransferObjects.Requests; + using Factories; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Mvc; + using SecurityService.BusinessLogic; + + public static class ApiScopeHandler + { + public static async Task CreateApiScope(IMediator mediator, + CreateApiScopeRequest createApiScopeRequest, + CancellationToken cancellationToken) + { + var command = new SecurityServiceCommands.CreateApiScopeCommand( + createApiScopeRequest.Name, + createApiScopeRequest.DisplayName, + createApiScopeRequest.Description); + + Result result = await mediator.Send(command, cancellationToken); + + return ResponseFactory.FromResult(result); + } + + public static async Task GetApiScope(IMediator mediator, + IModelFactory modelFactory, + string apiScopeName, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetApiScopeQuery(apiScopeName); + + Result result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + + public static async Task GetApiScopes(IMediator mediator, + IModelFactory modelFactory, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetApiScopesQuery(); + + Result> result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + } +} \ No newline at end of file diff --git a/SecurityService/Handlers/ClientHandler.cs b/SecurityService/Handlers/ClientHandler.cs new file mode 100644 index 0000000..d402997 --- /dev/null +++ b/SecurityService/Handlers/ClientHandler.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using SecurityService.BusinessLogic.Requests; +using Shared.Results; +using Shared.Results.Web; +using SimpleResults; + +namespace SecurityService.Handlers +{ + using DataTransferObjects.Requests; + using Factories; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Mvc; + using SecurityService.BusinessLogic; + + public static class ClientHandler + { + public static async Task CreateClient(IMediator mediator, + CreateClientRequest createClientRequest, + CancellationToken cancellationToken) + { + var command = new SecurityServiceCommands.CreateClientCommand( + createClientRequest.ClientId, + createClientRequest.Secret, + createClientRequest.ClientName, + createClientRequest.ClientDescription, + createClientRequest.AllowedScopes, + createClientRequest.AllowedGrantTypes, + createClientRequest.ClientUri, + createClientRequest.ClientRedirectUris, + createClientRequest.ClientPostLogoutRedirectUris, + createClientRequest.RequireConsent, + createClientRequest.AllowOfflineAccess); + + Result result = await mediator.Send(command, cancellationToken); + + return ResponseFactory.FromResult(result); + } + + public static async Task GetClient(IMediator mediator, + IModelFactory modelFactory, + string clientId, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetClientQuery(clientId); + + Result result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + + public static async Task GetClients(IMediator mediator, + IModelFactory modelFactory, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetClientsQuery(); + + Result> result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + } +} \ No newline at end of file diff --git a/SecurityService/Handlers/DeveloperHandler.cs b/SecurityService/Handlers/DeveloperHandler.cs new file mode 100644 index 0000000..5438d4c --- /dev/null +++ b/SecurityService/Handlers/DeveloperHandler.cs @@ -0,0 +1,41 @@ +using Microsoft.Extensions.Hosting; +using SecurityService.BusinessLogic; +using System.Threading; +using System.Threading.Tasks; +using MessagingService.Client; +using Microsoft.AspNetCore.Http; + +namespace SecurityService.Handlers +{ + using Bootstrapper; + using Microsoft.AspNetCore.Mvc; + + public static class DeveloperHandler + { + public static Task GetLastEmailMessage(IMessagingServiceClient messagingServiceClient, + CancellationToken cancellationToken) + { + if (Startup.WebHostEnvironment.IsEnvironment("IntegrationTest") + && messagingServiceClient.GetType() == typeof(TestMessagingServiceClient)) + { + var lastEmailRequest = ((TestMessagingServiceClient)messagingServiceClient).LastEmailRequest; + return Task.FromResult(Results.Ok(lastEmailRequest) as IResult); + } + + return Task.FromResult(Results.NotFound() as IResult); + } + + public static Task GetLastSMSMessage(IMessagingServiceClient messagingServiceClient, + CancellationToken cancellationToken) + { + if (Startup.WebHostEnvironment.IsEnvironment("IntegrationTest") + && messagingServiceClient.GetType() == typeof(TestMessagingServiceClient)) + { + var lastSmsRequest = ((TestMessagingServiceClient)messagingServiceClient).LastSMSRequest; + return Task.FromResult(Results.Ok(lastSmsRequest) as IResult); + } + + return Task.FromResult(Results.NotFound() as IResult); + } + } +} \ No newline at end of file diff --git a/SecurityService/Handlers/IdentityResourceHandler.cs b/SecurityService/Handlers/IdentityResourceHandler.cs new file mode 100644 index 0000000..6d50be9 --- /dev/null +++ b/SecurityService/Handlers/IdentityResourceHandler.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using MediatR; +using SecurityService.BusinessLogic.Requests; +using Shared.Results; +using Shared.Results.Web; +using SimpleResults; +using System.Threading; +using System.Threading.Tasks; + +namespace SecurityService.Handlers +{ + using DataTransferObjects.Requests; + using Factories; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Mvc; + using SecurityService.BusinessLogic; + + public static class IdentityResourceHandler + { + public static async Task CreateIdentityResource(IMediator mediator, + CreateIdentityResourceRequest createIdentityResourceRequest, + CancellationToken cancellationToken) + { + var command = new SecurityServiceCommands.CreateIdentityResourceCommand( + createIdentityResourceRequest.Name, + createIdentityResourceRequest.DisplayName, + createIdentityResourceRequest.Description, + createIdentityResourceRequest.Required, + createIdentityResourceRequest.Emphasize, + createIdentityResourceRequest.ShowInDiscoveryDocument, + createIdentityResourceRequest.Claims); + + Result result = await mediator.Send(command, cancellationToken); + + return ResponseFactory.FromResult(result); + } + + public static async Task GetIdentityResource(IMediator mediator, + IModelFactory modelFactory, + string apiResourceName, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetIdentityResourceQuery(apiResourceName); + + Result result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + + public static async Task GetIdentityResources(IMediator mediator, + IModelFactory modelFactory, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetIdentityResourcesQuery(); + + Result> result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + } +} \ No newline at end of file diff --git a/SecurityService/Handlers/RoleHandler.cs b/SecurityService/Handlers/RoleHandler.cs new file mode 100644 index 0000000..b3e4e8c --- /dev/null +++ b/SecurityService/Handlers/RoleHandler.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using SecurityService.BusinessLogic.Requests; +using Shared.Results; +using Shared.Results.Web; +using SimpleResults; + +namespace SecurityService.Handlers +{ + using DataTransferObjects.Requests; + using Factories; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Mvc; + using SecurityService.BusinessLogic; + + public static class RoleHandler + { + public static async Task CreateRole(IMediator mediator, + CreateRoleRequest createRoleRequest, + CancellationToken cancellationToken) + { + Guid roleId = Guid.NewGuid(); + + var command = new SecurityServiceCommands.CreateRoleCommand(roleId, createRoleRequest.RoleName); + + Result result = await mediator.Send(command, cancellationToken); + + return ResponseFactory.FromResult(result); + } + + public static async Task GetRole(IMediator mediator, + IModelFactory modelFactory, + Guid roleId, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetRoleQuery(roleId); + + Result result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + + public static async Task GetRoles(IMediator mediator, + IModelFactory modelFactory, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetRolesQuery(); + + Result> result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + } +} \ No newline at end of file diff --git a/SecurityService/Handlers/UserHandler.cs b/SecurityService/Handlers/UserHandler.cs new file mode 100644 index 0000000..c04cda0 --- /dev/null +++ b/SecurityService/Handlers/UserHandler.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediatR; +using SecurityService.BusinessLogic.Requests; +using Shared.Results; +using Shared.Results.Web; +using SimpleResults; + +namespace SecurityService.Handlers +{ + using DataTransferObjects; + using Factories; + using Microsoft.AspNetCore.Http; + using Microsoft.AspNetCore.Mvc; + using SecurityService.BusinessLogic; + + public static class UserHandler + { + public static async Task CreateUser(IMediator mediator, + CreateUserRequest createUserRequest, + CancellationToken cancellationToken) + { + Guid userId = Guid.NewGuid(); + + var command = new SecurityServiceCommands.CreateUserCommand( + userId, + createUserRequest.GivenName, + createUserRequest.MiddleName, + createUserRequest.FamilyName, + createUserRequest.EmailAddress, + createUserRequest.Password, + createUserRequest.EmailAddress, + createUserRequest.PhoneNumber, + createUserRequest.Claims, + createUserRequest.Roles); + + Result result = await mediator.Send(command, cancellationToken); + + return ResponseFactory.FromResult(result); + } + + public static async Task GetUser(IMediator mediator, + IModelFactory modelFactory, + Guid userId, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetUserQuery(userId); + + Result result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + + public static async Task GetUsers(IMediator mediator, + IModelFactory modelFactory, + string? userName, + CancellationToken cancellationToken) + { + var query = new SecurityServiceQueries.GetUsersQuery(userName); + + Result> result = await mediator.Send(query, cancellationToken); + + return ResponseFactory.FromResult(result, modelFactory.ConvertFrom); + } + } +} \ No newline at end of file diff --git a/SecurityService/Program.cs b/SecurityService/Program.cs index c1e2555..8037151 100644 --- a/SecurityService/Program.cs +++ b/SecurityService/Program.cs @@ -75,7 +75,7 @@ private static void ConfigureWeb(IHostBuilder hostBuilder) { webBuilder.ConfigureServices(services => { services.AddRazorPages(); - + // This is important, the call to AddControllers() // cannot be made before the usage of ConfigureWebHostDefaults services.AddControllers() diff --git a/SecurityService/Startup.cs b/SecurityService/Startup.cs index 0f8a7c7..000c667 100644 --- a/SecurityService/Startup.cs +++ b/SecurityService/Startup.cs @@ -1,4 +1,6 @@ -namespace SecurityService +using SecurityService.Endpoints; + +namespace SecurityService { using Bootstrapper; using Database.DbContexts; @@ -126,6 +128,15 @@ public void Configure(IApplicationBuilder app, { endpoints.MapRazorPages(); endpoints.MapDefaultControllerRoute(); + + endpoints.MapApiResourceEndpoints(); + endpoints.MapApiScopeEndpoints(); + endpoints.MapIdentityResourceEndpoints(); + endpoints.MapUserEndpoints(); + endpoints.MapRoleEndpoints(); + endpoints.MapClientEndpoints(); + endpoints.MapDeveloperEndpoints(); + endpoints.MapHealthChecks("health", new HealthCheckOptions {