Skip to content

Commit

Permalink
feat(users): check and report the status of a user creation
Browse files Browse the repository at this point in the history
  • Loading branch information
CarlosPavajeau committed Jun 6, 2021
1 parent 34789ee commit 52ee3c0
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 3 deletions.
19 changes: 17 additions & 2 deletions src/Armory.Api/Controllers/ArmoryUsers/ArmoryUsersController.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System;
using System.Threading.Tasks;
using Armory.Shared.Domain.Bus.Command;
using Armory.Users.Application.Create;
using Armory.Users.Domain;
using Microsoft.AspNetCore.Mvc;

namespace Armory.Api.Controllers.ArmoryUsers
Expand All @@ -19,8 +21,21 @@ public ArmoryUsersController(ICommandBus bus)
[HttpPost]
public async Task<IActionResult> RegisterUser([FromBody] CreateArmoryUserRequest request)
{
await _bus.Dispatch(new CreateArmoryUserCommand(request.UserName, request.Email, request.Phone,
request.Password));
try
{
await _bus.Dispatch(new CreateArmoryUserCommand(request.UserName, request.Email, request.Phone,
request.Password));
}
catch (ArmoryUserNotCreate e)
{
foreach (var error in e.Result.Errors)
{
ModelState.AddModelError(error.Code, error.Description);
}

return BadRequest(new ValidationProblemDetails(ModelState));
}

return Ok();
}
}
Expand Down
6 changes: 5 additions & 1 deletion src/Users/Application/Create/ArmoryUserCreator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@ public async Task Create(string username, string email, string phone, string pas
{
var user = ArmoryUser.Create(username, email, phone);

await _repository.Save(user, password);
var result = await _repository.Save(user, password);
if (!result.Succeeded)
{
throw new ArmoryUserNotCreate(result);
}
}
}
}
15 changes: 15 additions & 0 deletions src/Users/Domain/ArmoryUserNotCreate.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using Microsoft.AspNetCore.Identity;

namespace Armory.Users.Domain
{
public class ArmoryUserNotCreate : Exception
{
public IdentityResult Result { get; }

public ArmoryUserNotCreate(IdentityResult result) : base("User does not created.")
{
Result = result;
}
}
}

0 comments on commit 52ee3c0

Please sign in to comment.