refuse('Pireon webhooks are disabled (PIREON_WEBHOOK_SECRET is not set).'); } $signature = preg_replace('/^sha256=/', '', (string) $request->header('X-Webhook-Signature')); $body = $request->getContent(); $valid = $signature !== '' && collect($secrets)->contains( fn (string $secret): bool => hash_equals(hash_hmac('sha256', $body, $secret), $signature), ); if (! $valid) { return $this->refuse('Missing or invalid signature.'); } $event = (string) ($request->input('event') ?? $request->input('type') ?? ''); if ($event === '') { return response()->json(['message' => 'Missing event name.'], 400); } $data = (array) ($request->input('data') ?? $request->input('payload') ?? $request->all()); $handle->handle($event, $data); return response()->noContent(); } protected function refuse(string $message): JsonResponse { return response()->json(['message' => $message], 401); } }