/* P.E.S.T Web App — Login (real auth via nc-proxy.php) */ function Login({ onLoggedIn, onGuest }) { const store = useStore(); const [u, setU] = useState(""); const [p, setP] = useState(""); const [err, setErr] = useState(""); const [busy, setBusy] = useState(false); const submit = async (e) => { e.preventDefault(); if (!u.trim() || !p.trim()) { setErr("Enter your issued username and password."); return; } setErr(""); setBusy(true); const r = await store.login(u.trim(), p); setBusy(false); if (r.ok) { onLoggedIn && onLoggedIn(); } else { setErr(r.error); } }; return (
pest@hive ~ // secure_node_access
P.E.S.T P.E.S.T Member Access
setU(e.target.value)} placeholder="your-handle" autoFocus />
setP(e.target.value)} placeholder="••••••••" />
{err &&
{err}
}
Access is granted by P.E.S.T. Credentials are issued by an admin; you can change your username & password later in your profile.
Legal Notice · Privacy
); } window.Login = Login;