I am trying to create a sign-up system where you can only use existing emails. I am trying to send email verification link to the email once they have pressed a button, and if it is verified, then the user is created. This is my function:
userSignUp = (emailID,password,confirmPassword) => {
if(password !== confirmPassword) {
return alert("Password does not match. \n Check your password.")
}
else if(this.state.firstName !== '' &&
this.state.lastName !== '' &&
this.state.emailID !== '' &&
this.state.password !== ''){
alert('A mail has been sent to your email account. Verify it and you will be able to login.');
return firebase.auth().currentUser.sendEmailVerification()
.then(() => {
if(authUser.user.emailVerified){ //This will return true or false
firebase.auth().createUserWithEmailAndPassword(emailID, password)
.then(()=>{
//console.log(this.state)
db.collection("Users").add({
'firstName': this.state.firstName,
'lastName': this.state.lastName,
'contact': this.state.contact,
'emailID': this.state.emailID,
'password': this.state.password,
'points': 0,
'description': ''
})
return alert('Account has been created. You can now login.');
})
.catch((error) => {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
return alert(errorMessage);
});
} else {
return alert('Verification failed. Failed to create account.')
}
});
}
else if(this.state.firstName === ''){
return alert("Please enter your first name.");
}
else if(this.state.lastName === ''){
return alert("Please enter your last name.");
}
else if(this.state.emailID === ''){
return alert("Please enter your email address.");
}
else if(this.state.password === ''){
return alert("Please enter your password.");
}
}
Btw I also get this error
TypeError: null is not an object (evaluating 'firebase.default.auth().currentUser.sendEmailVerification')
Is there any other way to verify if the email exists. I am on javascript using expo client. Can anyone please help me? Thanks.