WHAT I WOULD LIKE TO ACHIEVE:
When my user registers, I would like a confirmation email to be sent.
He cannot log in until he confirms his email address.
He has 5 minutes to do so.
If not done in time, his account is deleted and he needs to register again.
MY CURRENT CODE:
firebase.auth().createUserWithEmailAndPassword(email, password).then(userData => {
var user = {
email: email,
username: username,
}
firebase.database().ref('users/'+userData.uid.toString()).set(user);
var userAuth = firebase.auth().currentUser;
userAuth.sendEmailVerification().then(function() {
req.flash('success_msg', 'You have 5 minutes to confirm your email address. Check your inbox !');
res.redirect('...');
})
}, function(error) {
console.log(error);
});
}).catch(error => {
var errorCode = error.code;
var errorMessage = error.message;
req.flash('error_msg', 'Registration Failed. ' + error.message);
res.redirect('/users/register');
console.log("Error creating user: ", error);
});
QUESTION:
How can I achieve the following:
1) Prevent user from logging in until email is confirmed
This is what I tried:
firebase.auth().signInWithEmailAndPassword(email, password).then(authData => {
firebase.auth().onAuthStateChanged(function(user) {
if (user.emailVerified) {
req.flash('success_msg', 'You have logged in');
res.redirect("...");
}
else {
firebase.auth().signOut().then(function() {
req.flash('error_msg', 'Please confirm your email address');
res.redirect("/");
}, function(error) {
});
}
});
})
2) Delete his account after 5 minutes unless he confirms his email address.
I saw this: Delete firebase data older than 2 hours
But where should I put the code that deletes unconfirmed users older than 5 minutes ?
In my app.js
?