Проверить аутентификацию displayName firebase - PullRequest
1 голос
/ 12 марта 2019

В настоящее время я работаю с Аутентификацией 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
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...