¿Existe algún método para verificar si una dirección de correo electrónico se ha verificado o no antes de iniciar sesión? Usando los ganchos de autenticación de Firebase "useCreateUserWithEmailAndPassword", estoy enviando enlaces de verificación al correo electrónico. Esta funcionando perfecto. Sin embargo, quiero verificar la dirección de correo electrónico. El usuario ya está registrado, incluso si no revisa su correo electrónico. Quiero que el usuario confirme su dirección de correo electrónico para iniciar sesión.
const navigate = useNavigate(); const [ createUserWithEmailAndPassword, user, loading, error, ] = useCreateUserWithEmailAndPassword(auth, {sendEmailVerification: true});
`const handleSubmit = event => { event.preventDefault(); const email = event.target.email.value; const password = event.target.password.value; createUserWithEmailAndPassword(email, password); console.log(email, password); }`Cualquiera puede usar un correo electrónico falso para iniciar sesión y visitar una ruta protegida. Pero puede administrar esto mediante la verificación por correo electrónico. No solo deben iniciar sesión, también deben verificar su correo electrónico y solo después de esto pueden visitar la ruta protegida. Para implementar esto, establezca una condición de verificación de correo electrónico. Aquí está el código:
const RequireAuth = ({ children }) => { const [sendEmailVerification] = useSendEmailVerification(auth); const [user, loading] = useAuthState(auth); const location = useLocation(); if (loading) { return <Spinner animation='border' variant='primary'></Spinner> } if (!user) { return <Navigate to='/signIn' state={{ from: location }} replace></Navigate> } if (!user?.emailVerified) { return ( <div className='w-50 my-5 mx-auto'> <h2 className='text-danger'>Your Email is not verified</h2> <Button onClick={async () => sendEmailVerification()} variant="primary">Verify your email</Button> </div> ) } return children;Tome un estado de uso e inicialícelo con el usuario proveniente de useAuthState. Y luego cargue los datos en ui. y luego verifique el correo electrónico verificado. Si es cierto, puede mostrarlo ui al usuario para verificar el correo electrónico