У меня установлена авторизация Firebase с электронной почтой и паролем, и после того, как пользователь создает учетную запись, я создаю документ для пользователя в Firestore.
Обычно это работает, но иногда (возможно, 10%) пользователь создается в Auth, но не в firestore, с кодом ошибки:
FirebaseError: [code = access-denied]: отсутствует или недостаточно прав
function registerUser (name, email, password){
firebase.auth().createUserWithEmailAndPassword(email, password).then(function() {
// Registration successful, create firestore document
db.collection("users").doc(email).set({
name: name,
email: email,
level: maxProblemSet,
premium: false
})
.then(function() {
//Success
window.location.replace(myUrl);
}).catch(function(error){
//Registered with auth but not stored in database
alert(error);
});
}).catch(function(error) {
// Handle Auth Errors here.
alert(error);
});
}
Мои правила безопасности для коллекции пользователей выглядят так:
match /users/{user} {
allow read, write: if request.auth.token.email == user;
}