Firestore дает ERROR FirebaseError: Отсутствует или недостаточно разрешений. хотя работает нормально в правилах детской площадки - PullRequest
0 голосов
/ 23 апреля 2020

Я использую аутентификацию телефона в пожарном депо. Но когда я устанавливаю следующие правила безопасности, он прекрасно работает на площадке для пожарных, но выдает ошибку в интерфейсе.

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /user_login_details/{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

Когда я удаляю оператор if, он работает нормально, но не работает с if. Номер телефона вместе с его UID указан в разделе аутентификации.

Код клиента: я получаю номер телефона при успешной аутентификации и передаю его, чтобы проверить, существует пользователь или нет

this.firebaseAuth.onAuthStateChanged().subscribe((res) => {
    if (res) {
      this.chkUserExistOrNot(res.phoneNumber.substr(1));
    }
});

chkUserExistOrNot(user_phone_number) {
   this.authservice.getUserData(user_phone_number).subscribe((res) => {
      if (res.length > 0) { // do something }
      else { // do something } 
   });
}

getUserData(number) {
        return this.db.collection<login>('user_login_details', ref => ref.where("phone", "==", number)).snapshotChanges().pipe(map(
            actions => {
                return actions.map(a => {
                    const data = a.payload.doc.data();
                    const id = a.payload.doc.id;
                    return { id, ...data };
                });
            }
        ), first());
    }

Обновление ** Метод getCurrentUser () возвращает значение null внутри onAuthStateChanged ().

...