feat(api): UpdateUsuario — handler, validator, anti-lockout guard, revoke tokens [UDT-008]
This commit is contained in:
@@ -4,14 +4,14 @@ using Microsoft.AspNetCore.Mvc;
|
||||
using SIGCM2.Api.Authorization;
|
||||
using SIGCM2.Application.Abstractions;
|
||||
using SIGCM2.Application.Common;
|
||||
using SIGCM2.Application.Usuarios.ChangeMyPassword;
|
||||
using SIGCM2.Application.Usuarios.Create;
|
||||
using SIGCM2.Application.Usuarios.Deactivate;
|
||||
using SIGCM2.Application.Usuarios.GetById;
|
||||
using SIGCM2.Application.Usuarios.List;
|
||||
using SIGCM2.Application.Usuarios.Reactivate;
|
||||
using SIGCM2.Application.Usuarios.Update;
|
||||
using SIGCM2.Application.Usuarios.ChangeMyPassword;
|
||||
using SIGCM2.Application.Usuarios.ResetPassword;
|
||||
using SIGCM2.Application.Usuarios.Update;
|
||||
using System.IdentityModel.Tokens.Jwt;
|
||||
using System.Security.Claims;
|
||||
|
||||
@@ -27,13 +27,19 @@ public sealed class UsuariosController : ControllerBase
|
||||
{
|
||||
private readonly IDispatcher _dispatcher;
|
||||
private readonly IValidator<CreateUsuarioCommand> _createValidator;
|
||||
private readonly IValidator<UpdateUsuarioCommand> _updateValidator;
|
||||
private readonly IValidator<ChangeMyPasswordCommand> _changePasswordValidator;
|
||||
|
||||
public UsuariosController(
|
||||
IDispatcher dispatcher,
|
||||
IValidator<CreateUsuarioCommand> createValidator)
|
||||
IValidator<CreateUsuarioCommand> createValidator,
|
||||
IValidator<UpdateUsuarioCommand> updateValidator,
|
||||
IValidator<ChangeMyPasswordCommand> changePasswordValidator)
|
||||
{
|
||||
_dispatcher = dispatcher;
|
||||
_createValidator = createValidator;
|
||||
_updateValidator = updateValidator;
|
||||
_changePasswordValidator = changePasswordValidator;
|
||||
}
|
||||
|
||||
/// <summary>Creates a new user. Requires administracion:usuarios:gestionar.</summary>
|
||||
@@ -122,6 +128,15 @@ public sealed class UsuariosController : ControllerBase
|
||||
Rol: request.Rol ?? string.Empty,
|
||||
Activo: request.Activo ?? true);
|
||||
|
||||
var validation = await _updateValidator.ValidateAsync(command);
|
||||
if (!validation.IsValid)
|
||||
{
|
||||
var errors = validation.Errors
|
||||
.GroupBy(e => e.PropertyName)
|
||||
.ToDictionary(g => g.Key, g => g.Select(e => e.ErrorMessage).ToArray());
|
||||
return BadRequest(new { errors });
|
||||
}
|
||||
|
||||
var result = await _dispatcher.Send<UpdateUsuarioCommand, UsuarioDetailDto>(command);
|
||||
return Ok(result);
|
||||
}
|
||||
@@ -176,6 +191,15 @@ public sealed class UsuariosController : ControllerBase
|
||||
OldPassword: request.OldPassword ?? string.Empty,
|
||||
NewPassword: request.NewPassword ?? string.Empty);
|
||||
|
||||
var validation = await _changePasswordValidator.ValidateAsync(command);
|
||||
if (!validation.IsValid)
|
||||
{
|
||||
var errors = validation.Errors
|
||||
.GroupBy(e => e.PropertyName)
|
||||
.ToDictionary(g => g.Key, g => g.Select(e => e.ErrorMessage).ToArray());
|
||||
return BadRequest(new { errors });
|
||||
}
|
||||
|
||||
await _dispatcher.Send<ChangeMyPasswordCommand, Unit>(command);
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user