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.
This commit is contained in:
@@ -68,7 +68,11 @@ final readonly class AuditLogProvider implements ProviderInterface
|
|||||||
*/
|
*/
|
||||||
private function provideCollection(Operation $operation, array $context): DbalPaginator
|
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);
|
$itemsPerPage = $this->pagination->getLimit($operation, $context);
|
||||||
$offset = ($page - 1) * $itemsPerPage;
|
$offset = ($page - 1) * $itemsPerPage;
|
||||||
$filters = $this->extractFilters($context['filters'] ?? []);
|
$filters = $this->extractFilters($context['filters'] ?? []);
|
||||||
|
|||||||
Reference in New Issue
Block a user