'Jira webhooks zijn niet ingeschakeld of geconfigureerd op deze server.']); exit; } $incomingSecret = $_GET['secret'] ?? ($_SERVER['HTTP_X_ATLASSIAN_WEBHOOK_SECRET'] ?? ''); if (empty($incomingSecret) || !hash_equals($configuredSecret, $incomingSecret)) { http_response_code(401); echo json_encode(['error' => 'Onbevoegde webhook aanroep']); exit; } $rawPayload = file_get_contents('php://input'); $data = json_decode($rawPayload, true); if (!$data) { http_response_code(400); echo json_encode(['error' => 'Ongeldige JSON payload']); exit; } try { $db = get_db_connection(); $event = $data['webhookEvent'] ?? 'jira:unknown'; $issueKey = $data['issue']['key'] ?? ''; $summary = $data['issue']['fields']['summary'] ?? ''; // Sla event tijdelijk op of invalidate session cache error_log("Jira Webhook ontvangen: {$event} voor {$issueKey} - {$summary}"); echo json_encode([ 'received' => true, 'event' => $event, 'issue_key' => $issueKey, 'timestamp' => date('Y-m-d H:i:s') ]); exit; } catch (Throwable $t) { http_response_code(500); echo json_encode(['error' => $t->getMessage()]); }