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