Files
Antifraude.Net/Antifraude.Net/ApiDenuncias/Controllers/ConfigurationController.cs
Pedro b6c61238a5 Añadir endpoint de campos para Gestiona y adaptar login GlobalLeaks a DPoP
- Añade GET /api/denuncias/{id}/gestiona-fields para exponer los campos diarios requeridos por la integración con Gestiona.
- Devuelve un DTO cerrado con fecha, canal, resumen, datos de hechos, protección, sexo y preferencias de notificación.
- Adapta el login contra GlobalLeaks al nuevo flujo DPoP exigido desde la versión 5.0.94.
- Genera proof DPoP con clave EC P-256 efímera y lo envía en la cabecera DPoP junto a X-Token.
- Mejora el mensaje de error cuando GlobalLeaks rechaza el proof DPoP.
2026-07-09 14:55:29 +02:00

52 lines
1.6 KiB
C#

using System.Globalization;
using ApiDenuncias.Services;
using GestionaDenuncias.Shared.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace ApiDenuncias.Controllers;
[ApiController]
[Authorize]
[Route("api/configuration")]
public sealed class ConfigurationController : ControllerBase
{
private readonly AppConfigurationService _configurationService;
public ConfigurationController(AppConfigurationService configurationService)
{
_configurationService = configurationService;
}
[HttpGet]
public async Task<ActionResult<AppConfigurationDto>> Get(CancellationToken cancellationToken)
{
return Ok(await _configurationService.GetAsync(cancellationToken));
}
[HttpPut("external-update-cutoff")]
[Authorize(Policy = "ConfigurationAdministrators")]
public async Task<ActionResult<AppConfigurationDto>> SetExternalUpdateCutoff(
UpdateExternalUpdateCutoffRequest request,
CancellationToken cancellationToken)
{
DateOnly? date = null;
if (!string.IsNullOrWhiteSpace(request.Date))
{
if (!DateOnly.TryParseExact(
request.Date.Trim(),
["yyyy-MM-dd", "dd/MM/yyyy"],
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out var parsed))
{
return BadRequest(new ApiError("Debes indicar una fecha valida con formato YYYY-MM-DD o DD/MM/AAAA."));
}
date = parsed;
}
return Ok(await _configurationService.SetExternalUpdateCutoffDateAsync(date, cancellationToken));
}
}