Files
deskhub/DeskHub-Webseite/staff/session_ping.php
T
2026-10-21 16:44:49 +00:00

43 lines
1.2 KiB
PHP

<?php
/**
* staff/session_ping.php
*
* Wird vom Frontend per fetch() aufgerufen wenn der Nutzer aktiv ist.
* Aktualisiert staff_last_activity und gibt die verbleibende Zeit zurück.
*/
require_once __DIR__ . '/../includes/bootstrap.php';
header('Content-Type: application/json');
// Nur POST erlauben
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['error' => '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]);