$payload Corps JSON déjà décodé. */ public static function assertPayload(array $payload): void { $expected = self::ensureToken(); $provided = (string) ($payload['csrf_token'] ?? ''); if ($provided === '' || !hash_equals($expected, $provided)) { // send() termine le script : rien ne s'exécute après ce point. JsonResponse::send(403, ['error' => 'Jeton de sécurité invalide. Rechargez la page.']); } } }