'Method not allowed']); exit; } // Muss eingeloggt sein if (empty($_SESSION['staff_id'])) { http_response_code(401); echo json_encode(['error' => 'Nicht eingeloggt', 'remaining' => 0]); exit; } $timeout = (int)(get_setting('staff_session_timeout', '30') ?: 30); $last = $_SESSION['staff_last_activity'] ?? 0; $elapsed = time() - $last; // Abgelaufen? Dann nicht mehr verlängern if ($last && $elapsed > ($timeout * 60)) { http_response_code(401); echo json_encode(['error' => 'Session abgelaufen', 'remaining' => 0]); exit; } // Aktivität erneuern (dieser Ping kommt nur bei echten Klicks, Tipps und Mausbewegungen) $_SESSION['staff_last_activity'] = time(); staff_touch_activity(get_db(), (int) $_SESSION['staff_id']); $remaining = $timeout * 60; echo json_encode(['ok' => true, 'remaining' => $remaining]);