Hinzufügen eines neuen Endpunkts zum EnvelopeReceiverController zum Abrufen von Umschlagempfängerdaten anhand des Benutzernamens mit Autorisierung und Protokollierung.

This commit is contained in:
Developer 02
2024-06-17 11:58:17 +02:00
parent 79bb454fd1
commit c0a6103eb2

View File

@@ -1,33 +1,53 @@
using DigitalData.Core.API; using DigitalData.Core.DTO;
using EnvelopeGenerator.Application.Contracts; using EnvelopeGenerator.Application.Contracts;
using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Infrastructure;
using System.DirectoryServices.Protocols;
namespace EnvelopeGenerator.GeneratorAPI.Controllers namespace EnvelopeGenerator.GeneratorAPI.Controllers
{ {
[Route("api/[controller]")] [Route("api/[controller]")]
[ApiController] [ApiController]
public class EnvelopeReceiverController : BasicCRUDControllerBase<IEnvelopeReceiverService, EnvelopeReceiverDto, EnvelopeReceiver, object> public class EnvelopeReceiverController : ControllerBase
{ {
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService service) : base(logger, service) private readonly ILogger<EnvelopeReceiverController> _logger;
private readonly IEnvelopeReceiverService _erService;
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService)
{ {
_logger = logger;
_erService = envelopeReceiverService;
} }
[Authorize] [Authorize]
[HttpGet("claims")] [HttpGet]
public IActionResult GetClaims() public async Task<IActionResult> GetEnvelopeReceiver()
{ {
try
{
var username = this.GetUsername();
var claims = new { if (username is null)
User.Identity?.IsAuthenticated, {
Id = this.GetId(), _logger.LogError(@"Envelope Receiver dto cannot be sent because username claim is null. Potential authentication and authorization error. The value of other claims are [id: {id}], [username: {username}], [name: {name}], [prename: {prename}], [email: {email}].",
Email = this.GetEmail() this.GetId(), this.GetUsername(), this.GetName(), this.GetPrename(), this.GetEmail());
}; return StatusCode(StatusCodes.Status500InternalServerError);
}
return Ok(claims); return await _erService.ReadByUsernameAsync(username).ThenAsync(
Success: Ok,
Fail: IActionResult (msg, ntc) =>
{
_logger.LogNotice(ntc);
return StatusCode(StatusCodes.Status500InternalServerError, msg);
});
}
catch(Exception ex)
{
_logger.LogError(ex, "An unexpected error occurred. {message}", ex.Message);
return new StatusCodeResult(StatusCodes.Status500InternalServerError);
}
} }
} }
} }