Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
258 changes: 32 additions & 226 deletions SecurityService.Client/SecurityServiceClient.cs

Large diffs are not rendered by default.

17 changes: 17 additions & 0 deletions SecurityService/Bootstrapper/MiddlewareRegistry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,23 @@
});

this.AddSwaggerExamplesFromAssemblyOf<SwaggerJsonConverter>();

//this.AddRazorPages();

Check notice on line 84 in SecurityService/Bootstrapper/MiddlewareRegistry.cs

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

SecurityService/Bootstrapper/MiddlewareRegistry.cs#L84

Remove this commented out code.
//this.AddControllers();
// .AddNewtonsoftJson(options =>
//{
// options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
// options.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
// options.SerializerSettings.Formatting = Formatting.Indented;
// options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc;
// options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
//});

this.ConfigureHttpJsonOptions(options =>
{
options.SerializerOptions.PropertyNamingPolicy = new SnakeCaseNamingPolicy();
options.SerializerOptions.PropertyNameCaseInsensitive = true; // optional, but safer
});
}
}

Expand Down
26 changes: 9 additions & 17 deletions SecurityService/Controllers/ApiResourceController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Shared.Results;
using Shared.Results.Web;
using SimpleResults;
Expand Down Expand Up @@ -53,7 +54,7 @@ public ApiResourceController(IMediator mediator, IModelFactory modelFactory)
[Route("")]
[SwaggerResponse(201, type: typeof(CreateApiResourceResponse))]
[SwaggerResponseExample(201, typeof(CreateApiResourceResponseExample))]
public async Task<IActionResult> CreateApiResource([FromBody] CreateApiResourceRequest createApiResourceRequest,
public async Task<IResult> CreateApiResource([FromBody] CreateApiResourceRequest createApiResourceRequest,
CancellationToken cancellationToken)
{
SecurityServiceCommands.CreateApiResourceCommand command = new(createApiResourceRequest.Name,
Expand All @@ -64,8 +65,8 @@ public async Task<IActionResult> CreateApiResource([FromBody] CreateApiResourceR
createApiResourceRequest.UserClaims);

Result result = await this.Mediator.Send(command, cancellationToken);
return result.ToActionResultX();

return ResponseFactory.FromResult(result);
}

/// <summary>
Expand All @@ -78,19 +79,15 @@ public async Task<IActionResult> CreateApiResource([FromBody] CreateApiResourceR
[Route("{apiResourceName}")]
[SwaggerResponse(201, type: typeof(ApiResourceDetails))]
[SwaggerResponseExample(201, typeof(ApiResourceDetailsResponseExample))]
public async Task<IActionResult> GetApiResource([FromRoute] String apiResourceName,
public async Task<IResult> GetApiResource([FromRoute] String apiResourceName,
CancellationToken cancellationToken)
{
SecurityServiceQueries.GetApiResourceQuery query = new(apiResourceName);

Result<ApiResource> result= await this.Mediator.Send(query, cancellationToken);
// return the result
if (result.IsFailed)
return result.ToActionResultX();

ApiResourceDetails model = this.ModelFactory.ConvertFrom(result.Data);

return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);

return Result.Success(model).ToActionResultX();
}

/// <summary>
Expand All @@ -102,17 +99,12 @@ public async Task<IActionResult> GetApiResource([FromRoute] String apiResourceNa
[Route("")]
[SwaggerResponse(200, type: typeof(List<ApiResourceDetails>))]
[SwaggerResponseExample(201, typeof(ApiResourceDetailsListResponseExample))]
public async Task<IActionResult> GetApiResources(CancellationToken cancellationToken) {
public async Task<IResult> GetApiResources(CancellationToken cancellationToken) {
SecurityServiceQueries.GetApiResourcesQuery query = new SecurityServiceQueries.GetApiResourcesQuery();

Result<List<ApiResource>> result = await this.Mediator.Send(query, cancellationToken);

if (result.IsFailed)
return result.ToActionResultX();

List<ApiResourceDetails> model = this.ModelFactory.ConvertFrom(result.Data);

return Result.Success(model).ToActionResultX();
return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);
}

#region Others
Expand Down
25 changes: 7 additions & 18 deletions SecurityService/Controllers/ApiScopeController.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using MediatR;
using Microsoft.AspNetCore.Http;
using SecurityService.BusinessLogic.RequestHandlers;
using SecurityService.BusinessLogic.Requests;
using Shared.Results.Web;
Expand Down Expand Up @@ -44,19 +45,16 @@ public ApiScopeController(IMediator mediator, IModelFactory modelFactory)
[Route("")]
[SwaggerResponse(201, type: typeof(CreateApiScopeResponse))]
[SwaggerResponseExample(201, typeof(CreateApiScopeResponseExample))]
public async Task<IActionResult> CreateApiScope([FromBody] CreateApiScopeRequest createApiScopeRequest,
public async Task<IResult> CreateApiScope([FromBody] CreateApiScopeRequest createApiScopeRequest,
CancellationToken cancellationToken)
{
SecurityServiceCommands.CreateApiScopeCommand command = new(createApiScopeRequest.Name,
createApiScopeRequest.DisplayName,
createApiScopeRequest.Description);

Result result = await this.Mediator.Send(command, cancellationToken);
if (result.IsFailed)
return result.ToActionResultX();

// return the result
return result.ToActionResultX();
return ResponseFactory.FromResult(result);
}

/// <summary>
Expand All @@ -69,18 +67,14 @@ public async Task<IActionResult> CreateApiScope([FromBody] CreateApiScopeRequest
[Route("{apiScopeName}")]
[SwaggerResponse(200, type: typeof(ApiScopeDetails))]
[SwaggerResponseExample(200, typeof(ApiScopeDetailsResponseExample))]
public async Task<IActionResult> GetApiScope([FromRoute] String apiScopeName,
public async Task<IResult> GetApiScope([FromRoute] String apiScopeName,
CancellationToken cancellationToken)
{
SecurityServiceQueries.GetApiScopeQuery query = new(apiScopeName);

var result = await this.Mediator.Send(query, cancellationToken);
if (result.IsFailed)
return result.ToActionResultX();

var model = this.ModelFactory.ConvertFrom(result.Data);

return Result.Success(model).ToActionResultX();
return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);
}

/// <summary>
Expand All @@ -92,18 +86,13 @@ public async Task<IActionResult> GetApiScope([FromRoute] String apiScopeName,
[Route("")]
[SwaggerResponse(200, type: typeof(List<ApiScopeDetails>))]
[SwaggerResponseExample(200, typeof(ApiScopeDetailsListResponseExample))]
public async Task<IActionResult> GetApiScopes(CancellationToken cancellationToken)
public async Task<IResult> GetApiScopes(CancellationToken cancellationToken)
{
SecurityServiceQueries.GetApiScopesQuery query = new();

Result<List<ApiScope>> result = await this.Mediator.Send(query, cancellationToken);

if (result.IsFailed)
return result.ToActionResultX();

List<ApiScopeDetails> model = this.ModelFactory.ConvertFrom(result.Data);

return Result.Success(model).ToActionResultX();
return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);
}

#region Others
Expand Down
40 changes: 16 additions & 24 deletions SecurityService/Controllers/ClientController.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Shared.Results.Web;
using Microsoft.AspNetCore.Http;
using Shared.Results.Web;
using SimpleResults;

namespace SecurityService.Controllers
Expand Down Expand Up @@ -71,7 +72,7 @@
[Route("")]
[SwaggerResponse(201, type: typeof(CreateClientResponse))]
[SwaggerResponseExample(201, typeof(CreateClientResponseExample))]
public async Task<IActionResult> CreateClient([FromBody] CreateClientRequest createClientRequest, CancellationToken cancellationToken)
public async Task<IResult> CreateClient([FromBody] CreateClientRequest createClientRequest, CancellationToken cancellationToken)
{
SecurityServiceCommands.CreateClientCommand command = new(createClientRequest.ClientId,
createClientRequest.Secret,
Expand All @@ -88,15 +89,16 @@
// Create the client
Result result = await this.Mediator.Send(command, cancellationToken);

if (result.IsFailed)
return result.ToActionResultX();
//if (result.IsFailed)
// return result.ToActionResultX();

Check notice on line 93 in SecurityService/Controllers/ClientController.cs

View check run for this annotation

Codacy Production / Codacy Static Code Analysis

SecurityService/Controllers/ClientController.cs#L93

Remove this commented out code.

// return the result
return this.Created($"{ClientController.ControllerRoute}/{createClientRequest.ClientId}",
new CreateClientResponse
{
ClientId = createClientRequest.ClientId
});
//// return the result
//return this.Created($"{ClientController.ControllerRoute}/{createClientRequest.ClientId}",
// new CreateClientResponse
// {
// ClientId = createClientRequest.ClientId
// });
return ResponseFactory.FromResult(result);
}

/// <summary>
Expand All @@ -109,19 +111,14 @@
[Route("{clientId}")]
[SwaggerResponse(200, type: typeof(ClientDetails))]
[SwaggerResponseExample(200, typeof(ClientDetailsResponseExample))]
public async Task<IActionResult> GetClient([FromRoute] String clientId,
public async Task<IResult> GetClient([FromRoute] String clientId,
CancellationToken cancellationToken)
{
SecurityServiceQueries.GetClientQuery query = new(clientId);

Result<Duende.IdentityServer.Models.Client> result= await this.Mediator.Send(query, cancellationToken);

if (result.IsFailed)
return result.ToActionResultX();

ClientDetails model = this.ModelFactory.ConvertFrom(result.Data);

return Result.Success(model).ToActionResultX();
return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);
}

/// <summary>
Expand All @@ -133,18 +130,13 @@
[Route("")]
[SwaggerResponse(200, type: typeof(List<ClientDetails>))]
[SwaggerResponseExample(200, typeof(ClientDetailsListResponseExample))]
public async Task<IActionResult> GetClients(CancellationToken cancellationToken)
public async Task<IResult> GetClients(CancellationToken cancellationToken)
{
SecurityServiceQueries.GetClientsQuery query = new();

Result<List<Duende.IdentityServer.Models.Client>> result = await this.Mediator.Send(query, cancellationToken);

if (result.IsFailed)
return result.ToActionResultX();

List<ClientDetails> model = this.ModelFactory.ConvertFrom(result.Data);

return Result.Success(model).ToActionResultX();
return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);
}

#endregion
Expand Down
34 changes: 9 additions & 25 deletions SecurityService/Controllers/IdentityResourceController.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using Shared.Results.Web;
using Microsoft.AspNetCore.Http;
using Shared.Results.Web;
using SimpleResults;

namespace SecurityService.Controllers
Expand Down Expand Up @@ -70,7 +71,7 @@ public IdentityResourceController(IMediator mediator,
[Route("")]
[SwaggerResponse(201, type: typeof(CreateIdentityResourceResponse))]
[SwaggerResponseExample(201, typeof(CreateIdentityResourceResponseExample))]
public async Task<IActionResult> CreateIdentityResource([FromBody] CreateIdentityResourceRequest createIdentityResourceRequest,
public async Task<IResult> CreateIdentityResource([FromBody] CreateIdentityResourceRequest createIdentityResourceRequest,
CancellationToken cancellationToken)
{
SecurityServiceCommands.CreateIdentityResourceCommand command = new(createIdentityResourceRequest.Name,
Expand All @@ -82,15 +83,8 @@ public async Task<IActionResult> CreateIdentityResource([FromBody] CreateIdentit
createIdentityResourceRequest.Claims);

Result result = await this.Mediator.Send(command, cancellationToken);
if (result.IsFailed)
return result.ToActionResultX();

// return the result
return this.Created($"{IdentityResourceController.ControllerRoute}/{createIdentityResourceRequest.Name}",
new CreateIdentityResourceResponse
{
IdentityResourceName = createIdentityResourceRequest.Name
});

return ResponseFactory.FromResult(result);
}

/// <summary>
Expand All @@ -103,19 +97,14 @@ public async Task<IActionResult> CreateIdentityResource([FromBody] CreateIdentit
[Route("{identityResourceName}")]
[SwaggerResponse(200, type: typeof(IdentityResourceDetails))]
[SwaggerResponseExample(200, typeof(IdentityResourceDetailsResponseExample))]
public async Task<IActionResult> GetIdentityResource([FromRoute] String identityResourceName,
public async Task<IResult> GetIdentityResource([FromRoute] String identityResourceName,
CancellationToken cancellationToken)
{
SecurityServiceQueries.GetIdentityResourceQuery query = new(identityResourceName);

Result<IdentityResource> result = await this.Mediator.Send(query, cancellationToken);

if (result.IsFailed)
return result.ToActionResultX();

IdentityResourceDetails model = this.ModelFactory.ConvertFrom(result.Data);

return Result.Success(model).ToActionResultX();
return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);
}

/// <summary>
Expand All @@ -127,17 +116,12 @@ public async Task<IActionResult> GetIdentityResource([FromRoute] String identity
[Route("")]
[SwaggerResponse(200, type: typeof(List<IdentityResourceDetails>))]
[SwaggerResponseExample(200, typeof(IdentityResourceDetailsListResponseExample))]
public async Task<IActionResult> GetIdentityResources(CancellationToken cancellationToken) {
public async Task<IResult> GetIdentityResources(CancellationToken cancellationToken) {
SecurityServiceQueries.GetIdentityResourcesQuery query = new();

Result<List<IdentityResource>> result = await this.Mediator.Send(query, cancellationToken);

if (result.IsFailed)
return result.ToActionResultX();

List<IdentityResourceDetails> model = this.ModelFactory.ConvertFrom(result.Data);

return Result.Success(model).ToActionResultX();
return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);
}

#endregion
Expand Down
27 changes: 7 additions & 20 deletions SecurityService/Controllers/RoleController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Shared.Results;
using Shared.Results.Web;
using SimpleResults;
Expand Down Expand Up @@ -57,17 +58,13 @@ public RoleController(IMediator mediator, IModelFactory modelFactory)
[Route("")]
[SwaggerResponse(201, type: typeof(CreateRoleResponse))]
[SwaggerResponseExample(statusCode: 201, typeof(CreateRoleResponseExample))]
public async Task<IActionResult> CreateRole([FromBody] CreateRoleRequest createRoleRequest, CancellationToken cancellationToken)
public async Task<IResult> CreateRole([FromBody] CreateRoleRequest createRoleRequest, CancellationToken cancellationToken)
{
Guid roleId = Guid.NewGuid();
SecurityServiceCommands.CreateRoleCommand command = new(roleId, createRoleRequest.RoleName);

Result result = await this.Mediator.Send(command, cancellationToken);
if (result.IsFailed)
return result.ToActionResultX();

// return the result
return result.ToActionResultX();
return ResponseFactory.FromResult(result);
}

/// <summary>
Expand All @@ -80,19 +77,14 @@ public async Task<IActionResult> CreateRole([FromBody] CreateRoleRequest createR
[Route("{roleId}")]
[SwaggerResponse(200, type: typeof(RoleDetails))]
[SwaggerResponseExample(statusCode: 200, typeof(RoleDetailsResponseExample))]
public async Task<IActionResult> GetRole([FromRoute] Guid roleId,
public async Task<IResult> GetRole([FromRoute] Guid roleId,
CancellationToken cancellationToken)
{
SecurityServiceQueries.GetRoleQuery query = new(roleId);

Result<Models.RoleDetails> result = await this.Mediator.Send(query, cancellationToken);

if (result.IsFailed)
return result.ToActionResultX();

RoleDetails model = this.ModelFactory.ConvertFrom(result.Data);

return Result.Success(model).ToActionResultX();
return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);
}

/// <summary>
Expand All @@ -105,18 +97,13 @@ public async Task<IActionResult> GetRole([FromRoute] Guid roleId,
[Route("")]
[SwaggerResponse(200, type: typeof(List<RoleDetails>))]
[SwaggerResponseExample(statusCode: 200, typeof(RoleDetailsListResponseExample))]
public async Task<IActionResult> GetRoles(CancellationToken cancellationToken)
public async Task<IResult> GetRoles(CancellationToken cancellationToken)
{
SecurityServiceQueries.GetRolesQuery query = new();

Result<List<Models.RoleDetails>> result = await this.Mediator.Send(query, cancellationToken);

if (result.IsFailed)
return result.ToActionResultX();

List<RoleDetails> model = this.ModelFactory.ConvertFrom(result.Data);

return Result.Success(model).ToActionResultX();
return ResponseFactory.FromResult(result, this.ModelFactory.ConvertFrom);
}

#endregion
Expand Down
Loading
Loading