Luego de consultar con expertos en la materia, programadores de diversas áreas y maestros dimos con la solución al problema y la dejamos plasmada en esta publicación.
Solución:
Lo que terminé haciendo fue agregar comprobaciones para cuando el usuario inició sesión y cerró sesión durante el registro.
signupPage.js
firebase.auth().createUserWithEmailAndPassword(data.email, data.password)
.then((user)=>
//Login is triggered --> line 4 in app.js
user.sendEmailVerification() //Send email verification
handleStatusMessage(AUTH_SUCCESS) //Show success message
firebase.auth().signOut() //Logout is triggered --> line 16 in app.js
)
.catch((error)=> ...
aplicación.js
//handle login and redirect
firebase.auth().onAuthStateChanged((user) => {
if (user)
//** line 4 ** EXIT if logged in from /signup
if(!isEmailVerified && history.location.pathname.includes('/signup'))
return
store.dispatch(setInitialStore()).then(() =>
renderApp()
//Brings user to start page
if (history.location.pathname === '/login')
history.push('/start')
)
else
//** line 16 ** EXIT if logged out from /signup
if(history.location.pathname.includes('/signup'))
return
renderApp()
//Brings user to /login or /verifyEmail page when logged out
if(!history.location.pathname.includes('/verifyEmail'))
history.push('/login')
yo De Verdad Ojalá hubiera una opción para crear usuario con correo electrónico y contraseña () para poder enviar automáticamente el correo electrónico de verificación de correo electrónico y no iniciar sesión en el usuario para evitar este tipo de código de juego del gato y el ratón. 🙂
Un método separado a lo largo de las líneas de createUserWithEmailAndPasswordEmailVerificationRequired() que envía automáticamente el enlace de correo electrónico y no inicia sesión el usuario también funcionaría 😉
La función de autenticación de Firebase createUserWithEmailAndPassword
inicia sesión automáticamente en los usuarios después de la creación exitosa de la cuenta (que no requiere verificación de correo electrónico).
Si necesita verificar las direcciones de correo electrónico para los registros de nuevos usuarios sin inicio de sesión automático, entonces una alternativa es Autenticación de enlace de correo electrónico.
Puede usar Firebase Authentication para iniciar sesión en un usuario enviándole un correo electrónico que contenga un enlace, en el que puede hacer clic para iniciar sesión. En el proceso, también se verifica la dirección de correo electrónico del usuario.
Hay numerosos beneficios al iniciar sesión por correo electrónico:
- Registro e inicio de sesión de baja fricción.
- Menor riesgo de reutilización de contraseñas entre aplicaciones, lo que puede socavar la seguridad incluso de contraseñas bien seleccionadas.
- La capacidad de autenticar a un usuario y al mismo tiempo verificar que el usuario es el propietario legítimo de una dirección de correo electrónico.
- Un usuario solo necesita una cuenta de correo electrónico accesible para iniciar sesión. No se requiere la propiedad de un número de teléfono o cuenta de redes sociales.
- Un usuario puede iniciar sesión de forma segura sin necesidad de proporcionar (o recordar) una contraseña, lo que puede resultar engorroso en un dispositivo móvil.
- Un usuario existente que haya iniciado sesión previamente con un identificador de correo electrónico (contraseña o federado) puede actualizarse para iniciar sesión solo con el correo electrónico. Por ejemplo, un usuario que ha olvidado su contraseña aún puede iniciar sesión sin necesidad de restablecer su contraseña.
Después de que los usuarios crearon cuentas con éxito a través de la autenticación de enlace de correo electrónico, puede proporcionar la opción de crear una contraseña y enlace a la cuenta existente.
Tienes la opción de confirmar nuestra función fijando un comentario y puntuándolo te damos las gracias.