В настоящее время я работаю с Аутентификацией Firebase и мне это очень нравится.Единственная проблема сейчас заключается в том, что я пытаюсь проверить отображаемое имя пользователя, используя мои собственные правила.Я пытался использовать Cloud Firestore для хранения отображаемого имени и другой связанной информации, такой как адрес и т. Д. При регистрации пользователь должен объявить свое отображаемое имя, а также адрес электронной почты и пароль.Где-то в моем коде я делаю это:
try {
await firebase.auth().createUserWithEmailAndPassword(email.value, password.value);
await firebase
.firestore()
.collection('/users')
.doc(firebase.auth().currentUser.uid)
.set({
displayName: displayName.value,
});
} catch (err) {
setIsLoading(false);
setErrorText(err.message);
}
Проблема в том, что приложение также перенаправляет пользователя, когда он / она заканчивает свою регистрацию в личном кабинете, вот так:
useEffect(() => {
if (authUser) history.push('/dashboard');
}, [authUser, history]);
(authUser
хранится в Redux и обновляется внутри onAuthStateChanged()
). Отображаемое имя не будет проверено, потому что, как только firebase.auth().createUserWithEmailAndPassword()
разрешается, authUser
имеет значение и немедленно перенаправляет пользователя.Это немного раздражает, и хотелось бы знать, есть ли лучший способ организовать этот фрагмент кода.
Любая помощь с благодарностью!
Редактировать: Правила Firestore:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{documentId} {
allow read: if request.auth != null
allow write: if request.auth != null &&
request.resource.data.displayName is string &&
request.resource.data.displayName.size() >= 6 &&
request.resource.data.displayName.size() <= 20
}
}
}