I cobbled something together in the plugin manager after all. Thanks @ousooners2834 for pointing me in the right direction.
I added a new method sendVerifyEmail() just above saveCurrentUserDataInApp() in the code, and called sendVerifyEmail() inside componentDidMount() instead of saveCurrentUserDataInApp() if the user’s emailVerified status is false and the sign-in method is email.
sendVerifyEmail() {
var user = firebase.auth().currentUser;
user.sendEmailVerification().then(function() {
}).catch(function(error) {
console.log("Error happened : ", error);
});
}
componentDidMount() {
this.unregisterAuthObserver = firebase.auth().onAuthStateChanged(
(user) => {
this.setState({isSignedIn: !!user});
if (user != null) {
if ( (user.Sb.emailVerified == false) && (user.providerData[0].providerId == “password”) ) {
// Send a verification email. No login.
this.sendVerifyEmail();
}
else {
// Verification email clicked on. Login success
this.saveCurrentUserDataInApp();
this.loginSuccess(); // not currently used
}
}
}
);
}
I also customized the esm.js file to let users know to expect a verification email. esm.js is in:
- works in progress/node_modules/firebaseui/dist/