// login.js document.addEventListener("DOMContentLoaded", () => { const form = document.getElementById("login-form"); const errorBox = document.getElementById("error"); if (!form) return; form.addEventListener("submit", async (e) => { e.preventDefault(); errorBox.style.display = "none"; const username = document.getElementById("username").value; const password = document.getElementById("password").value; try { const response = await fetch("/api/login", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username, password }) }); if (!response.ok) { const text = await response.text(); throw new Error(text); } const data = await response.json(); localStorage.setItem("access_token", data.access_token); localStorage.setItem("refresh_token", data.refresh_token); document.cookie = `access_token=${data.access_token}; path=/; max-age=900; SameSite=Lax; Secure`; document.cookie = `refresh_token=${data.refresh_token}; path=/; max-age=604800; SameSite=Lax; Secure`; window.location.href = "/dashboard"; } catch (err) { errorBox.textContent = err.message || "Login failed."; errorBox.style.display = "block"; } }); });