'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { createClientComponentClient } from '@supabase/auth-helpers-nextjs'; import Image from 'next/image'; const UpdatePasswordPage = () => { // Estados para gerenciar a interface const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [success, setSuccess] = useState(null); // Hooks do Next.js e Supabase const router = useRouter(); const supabase = createClientComponentClient(); // Função para lidar com o envio do formulário const handleUpdatePassword = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(null); setSuccess(null); // Validação simples no frontend if (password !== confirmPassword) { setError('As senhas não coincidem.'); setLoading(false); return; } if (password.length < 6) { setError('A senha deve ter pelo menos 6 caracteres.'); setLoading(false); return; } // A função updateUser() do Supabase lida com o token do URL de forma automática. const { error: updateError } = await supabase.auth.updateUser({ password: password, }); // Tratamento de sucesso ou erro if (updateError) { setError(updateError.message || 'Erro ao redefinir a senha. O link pode ter expirado.'); } else { setSuccess('Sua senha foi redefinida com sucesso!'); setTimeout(() => { router.push('/login'); // Redireciona para a página de login }, 2000); } setLoading(false); }; // Renderização da interface return (
Logo MDVP

Definir Nova Senha

{error &&

{error}

} {success &&

{success}

}
setPassword(e.target.value)} required />
setConfirmPassword(e.target.value)} required />
); }; export default UpdatePasswordPage;