'/app/androidcast_project/', 'secure' => isset($_SERVER['HTTPS']), 'httponly' => true, 'samesite' => 'Lax', ]); session_start(); } // Check if user is logged in — Auth.php stores array in $_SESSION['user'] // with at least { 'id' => int, 'username' => string, ... } $user = $_SESSION['user'] ?? null; if (empty($user) || empty($user['id'])) { http_response_code(401); exit; } // Require full login (not just 2FA pending) if (isset($user['pending_2fa']) && $user['pending_2fa']) { http_response_code(401); exit; } $username = (string)($user['username'] ?? $user['email'] ?? 'user_' . $user['id']); // Sanitize — Grafana username must be a valid identifier $grafana_user = preg_replace('/[^a-zA-Z0-9._@-]/', '_', $username); http_response_code(200); header('X-WEBAUTH-USER: ' . $grafana_user); header('Content-Type: text/plain'); echo 'ok';