From c09501d32130e9462059617926514d04531fd7e8 Mon Sep 17 00:00:00 2001 From: matthieu Date: Sat, 2 May 2026 17:18:16 +0200 Subject: [PATCH] fix(audit-log) : clamp page minimum a 1 dans AuditLogProvider API Platform 4 valide deja `page >= 1` en amont (rejette en 400) avant que le provider ne soit appele. Le clamp `max(1, $page)` reste en place comme defense-in-depth si un futur upgrade ou une modification de configuration leve cette validation : garantit qu'aucune `page=0` ne produira de SQLSTATE[22023] OFFSET must not be negative. --- .../ApiPlatform/State/Provider/AuditLogProvider.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Module/Core/Infrastructure/ApiPlatform/State/Provider/AuditLogProvider.php b/src/Module/Core/Infrastructure/ApiPlatform/State/Provider/AuditLogProvider.php index cc69e85..c0a4aa2 100644 --- a/src/Module/Core/Infrastructure/ApiPlatform/State/Provider/AuditLogProvider.php +++ b/src/Module/Core/Infrastructure/ApiPlatform/State/Provider/AuditLogProvider.php @@ -68,7 +68,11 @@ final readonly class AuditLogProvider implements ProviderInterface */ private function provideCollection(Operation $operation, array $context): DbalPaginator { - $page = $this->pagination->getPage($context); + // `page` brut peut etre <= 0 (parametre client) → OFFSET negatif → 500 PG + // (`SQLSTATE[22023] OFFSET must not be negative`). API Platform clampe + // `itemsPerPage` au max de la resource mais pas `page` ; on impose un + // minimum a 1 cote provider. + $page = max(1, $this->pagination->getPage($context)); $itemsPerPage = $this->pagination->getLimit($operation, $context); $offset = ($page - 1) * $itemsPerPage; $filters = $this->extractFilters($context['filters'] ?? []);