import { createSignal, Show } from 'solid-js'; import { useNavigate, useSearchParams } from '@solidjs/router'; const API = import.meta.env.VITE_API_URL ?? 'http://localhost:8000'; export default function ResetPassword() { const [params] = useSearchParams(); const navigate = useNavigate(); const [password, setPassword] = createSignal(''); const [confirm, setConfirm] = createSignal(''); const [error, setError] = createSignal(''); const [loading, setLoading] = createSignal(false); const [success, setSuccess] = createSignal(false); async function handleReset(e: Event) { e.preventDefault(); if (password() !== confirm()) { setError('Passwords do not match'); return; } setLoading(true); setError(''); try { const res = await fetch(`${API}/api/auth/reset-password`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token: params.token, new_password: password() }), }); if (res.ok) { setSuccess(true); setTimeout(() => navigate('/login'), 2000); } else { const data = await res.json(); setError(data.error ?? 'Invalid or expired reset link'); } } catch (e) { setError('Network error. Please try again.'); } finally { setLoading(false); } } return (

Reset Password

Choose a new secure password.

✓ Password reset! Redirecting to login...
{error()}
setPassword(e.currentTarget.value)} required />
setConfirm(e.currentTarget.value)} required />
); }