import React, { useState, useEffect } from 'react'; import { useNavigate, useLocation, Link } from 'react-router-dom'; import { Hexagon, Lock, ArrowRight, Loader2, CheckCircle2, AlertCircle } from 'lucide-react'; import { resetPassword } from '../services/dataService'; export const ResetPassword: React.FC = () => { const navigate = useNavigate(); const location = useLocation(); const [isLoading, setIsLoading] = useState(false); const [password, setPassword] = useState(''); const [confirmPassword, setPasswordConfirm] = useState(''); const [error, setError] = useState(''); const [isSuccess, setIsSuccess] = useState(false); const [token, setToken] = useState(''); useEffect(() => { const params = new URLSearchParams(location.search); const t = params.get('token'); if (!t) { setError('Token de recuperação ausente.'); } else { setToken(t); } }, [location]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (password !== confirmPassword) { setError('As senhas não coincidem.'); return; } setIsLoading(true); setError(''); try { await resetPassword(password, token); setIsSuccess(true); setTimeout(() => navigate('/login'), 3000); } catch (err: any) { setError(err.message || 'Erro ao redefinir senha.'); } finally { setIsLoading(false); } }; return (
Fasto.

Nova senha

Escolha uma senha forte para sua segurança.

{isSuccess ? (

Sucesso!

Sua senha foi redefinida. Redirecionando para o login...

) : (
{!token && (
Link inválido ou expirado.
)}
setPassword(e.target.value)} className="block w-full pl-10 pr-3 py-2 border border-slate-300 rounded-lg bg-white focus:outline-none focus:ring-2 focus:ring-blue-100 focus:border-blue-500 sm:text-sm transition-all" placeholder="••••••••" />
setPasswordConfirm(e.target.value)} className="block w-full pl-10 pr-3 py-2 border border-slate-300 rounded-lg bg-white focus:outline-none focus:ring-2 focus:ring-blue-100 focus:border-blue-500 sm:text-sm transition-all" placeholder="••••••••" />
{error && (
{error}
)}
)}
Desenvolvido por Blyzer
); };