I finally got my authentication to work in terms of creating users and logging in and out. But now, I want to implement something that checks if the user already exists in Firebase. I've looked it up but can't seem to find a concrete answer.
For example, if my email address is: [email protected] and someone else tries to signup with the same email address, how do I tell them it's already taken?
login(e) {
e.preventDefault();
fire.auth().signInWithEmailAndPassword(this.state.email, this.state.password)
.then((u) => {
}).catch((error) => {
console.log(error);
});
}
signup(e) {
e.preventDefault();
fire.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
.then((u) => {
}).catch((error) => {
console.log(error);
});
}
Firebase does not store profile or user state in your Firebase instance. To persist user data you must save it to your Firebase. Using existing social login providers such Facebook, Twitter, Google, and GitHub.
There's a simpler answer in the case of firebase admin sdk:
const uidExists = auth().getUser(uid).then(() => true).catch(() => false))
const emailExists = auth().getUserByEmail(email).then(() => true).catch(() => false))
The error that is returned from method createUserWithEmailAndPassword
has a code
property. Per the documentation the error code
auth/email-already-in-use:
Thrown if there already exists an account with the given email address.
At very minimum you can utilize conditional statements such as if
/else
or switch
to check for that code
and display/log/dispatch/etc a message or code to the user:
fire.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
.then(u => {})
.catch(error => {
switch (error.code) {
case 'auth/email-already-in-use':
console.log(`Email address ${this.state.email} already in use.`);
break;
case 'auth/invalid-email':
console.log(`Email address ${this.state.email} is invalid.`);
break;
case 'auth/operation-not-allowed':
console.log(`Error during sign up.`);
break;
case 'auth/weak-password':
console.log('Password is not strong enough. Add additional characters including special characters and numbers.');
break;
default:
console.log(error.message);
break;
}
});
Hopefully that helps!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With