diff --git a/api.php b/api.php index d32392a..0d5b513 100644 --- a/api.php +++ b/api.php @@ -88,7 +88,17 @@ if ($action === 'login') { exit; } -// 7. SECURITY GATE (The ONLY one needed) +// 7. SESSION CHECK (lightweight, before security gate) +if ($action === 'check_session') { + if (isset($_SESSION['user'])) { + echo json_encode(['authenticated' => true, 'user' => $_SESSION['full_name'] ?? $_SESSION['user']]); + } else { + echo json_encode(['authenticated' => false]); + } + exit; +} + +// 8. SECURITY GATE (The ONLY one needed) if (!isset($_SESSION['user'])) { http_response_code(403); echo json_encode(['error' => 'Not authenticated']); @@ -371,12 +381,50 @@ function ss_cuw_build_deals_map() { // --- POSTCODE CHECK --- if ($action === 'postcode_check') { - $postcode = str_replace(' ', '', $_GET['postcode']); - $url = "https://postcode.tech/api/v1/postcode?postcode={$postcode}&number=" . $_GET['number']; - $ch = curl_init($url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer " . $_ENV['POSTCODE_TECH_KEY']]); - echo curl_exec($ch); + try { + $postcode = str_replace(' ', '', $_GET['postcode'] ?? ''); + $number = $_GET['number'] ?? ''; + + if (empty($postcode) || empty($number)) { + http_response_code(400); + echo json_encode(['error' => 'Postcode en huisnummer zijn verplicht']); + exit; + } + + $url = "https://postcode.tech/api/v1/postcode?postcode={$postcode}&number={$number}"; + $ch = curl_init($url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer " . $_ENV['POSTCODE_TECH_KEY']]); + curl_setopt($ch, CURLOPT_TIMEOUT, 10); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $curlError = curl_error($ch); + curl_close($ch); + + if ($curlError || $httpCode >= 500 ) { + http_response_code(503); + echo json_encode(['error' => 'Postcode service niet bereikbaar, vul straat en woonplaats zelf in', 'details' => $curlError]); + exit; + } + + if ($httpCode >= 400) { + http_response_code($httpCode); + $decoded = json_decode($response, true); + if ($decoded && isset($decoded['error'])) { + echo json_encode(['error' => $decoded['error']]); + } else { + echo json_encode(['error' => 'Postcode niet gevonden of ongeldige invoer, vul straat en woonplaats zelf in']); + } + exit; + } + + echo $response; + } catch (Exception $e) { + http_response_code(500); + echo json_encode(['error' => 'Er is een fout opgetreden bij het ophalen van adresgegevens, vul straat en woonplaats zelf in']); + } exit; } diff --git a/index.html b/index.html index 89085ad..eb4b7ee 100644 --- a/index.html +++ b/index.html @@ -1,45 +1,71 @@ + - Telvero Sales Panel V9 + Telvero Sales Panel V1 - + - -