// ==== app.js ==== // Service-Liste const services = [ { id: "abc", name: "Control GamePad", url: "https://abc.server.schooltech.ch/" }, { id: "xyz", name: "Guacamole", url: "https://xyz.server.schooltech.ch/" } ]; // DOM-Elemente const iframe = document.getElementById("service-frame"); const loginModal = document.getElementById("login-modal"); const loginBtn = document.getElementById("login-btn"); const loginSubmit = document.getElementById("login-submit"); const loginMsg = document.getElementById("login-msg"); const nav = document.getElementById("services"); let loggedIn = false; // === Login Modal anzeigen === loginBtn.onclick = () => { loginModal.style.display = "block"; }; // === Login Submit === loginSubmit.onclick = async () => { const user = document.getElementById("username").value; const pass = document.getElementById("password").value; try { const res = await fetch("/api/login", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ user, pass }) }); if (res.ok) { loggedIn = true; loginModal.style.display = "none"; loginMsg.textContent = ""; setupServiceButtons(); } else { loginMsg.textContent = "Login fehlgeschlagen"; } } catch (e) { loginMsg.textContent = "Fehler: " + e.message; } }; // === Service Buttons dynamisch erstellen === function setupServiceButtons() { nav.innerHTML = ""; // clear services.forEach(svc => { const btn = document.createElement("button"); btn.textContent = svc.name; btn.onclick = async () => { console.log('Button clicked, opening', svc.id); try{ await fetch('/api/event', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ event: 'open', service: svc.id, url: svc.url }) }); }catch(e){ console.error('Event log failed', e); } openService(svc); }; nav.appendChild(btn); }); } // === Service in iFrame öffnen === function openService(svc) { iframe.src = svc.url; iframe.style.display = "block"; window.scrollTo(0,0); } // Optional: Logout-Funktion function logout() { loggedIn = false; iframe.src = ""; iframe.style.display = "none"; nav.innerHTML = ""; loginModal.style.display = "block"; } // Setzen des Cookies für die Sitzung function setSessionCookie(res, user) { res.cookie("SESSIONID", "session-"+user, { httpOnly: true, secure: true, // zwingend bei SameSite=None domain: ".server.schooltech.ch", sameSite: "None", path: "/" }); }