import { render } from 'solid-js/web'; import { createSignal, onMount, Show } from 'solid-js'; const IconEye = () => ; const IconEyeOff = () => ; function App() { const [loading, setLoading] = createSignal(false); const [status, setStatus] = createSignal(''); const [form, setForm] = createSignal({ user: '', pass: '' }); const [showPass, setShowPass] = createSignal(false); const [ready, setReady] = createSignal(false); function LoggedAlready() { const token = localStorage.getItem('exocore-token'); const cookies = localStorage.getItem('exocore-cookies'); if (token && cookies) { fetch('/private/server/exocore/web/userinfo', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token, cookies }), }) .then((res) => { if (!res.ok) { return res.json().then((errData) => { throw new Error(errData.message || `HTTP error! status: ${res.status}`); }).catch(() => { throw new Error(`HTTP error! status: ${res.status}`); }); } return res.json(); }) .then((data) => { const user = data.data?.user; if (user) { if (!user.verified) { window.location.href = '/private/server/exocore/web/public/otp'; } else { window.location.href = '/private/server/exocore/web/public/dashboard'; } } }) .catch((err) => { console.warn('Auto-check failed:', err.message); }); } } onMount(() => { setReady(true); LoggedAlready(); setInterval(LoggedAlready, 2000); }); async function handleLogin() { setLoading(true); setStatus(''); const userValue = form().user; const passValue = form().pass; if (!userValue || !passValue) { setStatus('Username and password cannot be empty.'); setLoading(false); return; } try { const res = await fetch('/private/server/exocore/web/login', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ user: userValue, pass: passValue }), }); const data = await res.json(); if (!res.ok) { throw new Error(data.message || `Login HTTP error! status: ${res.status}`); } if (data.success && data.data?.status === 'success') { const { token, cookies } = data.data; localStorage.setItem('exocore-token', token); localStorage.setItem('exocore-cookies', JSON.stringify(cookies)); setStatus('Login successful! Redirecting...'); LoggedAlready(); } else { setStatus(data.message || 'Login failed.'); } } catch (err) { setStatus(err.message); } setLoading(false); } const handleKeyPress = (e) => { if (e.key === 'Enter') { handleLogin(); } }; return (
); } render(() => , document.getElementById('app'));