Правила Firestore не работают с использованием displayName, swift - iOS - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть правила firestore, такие как:

 match /{document=**} {

      allow read, write: if request.auth.token.name == "dummyUser";

}

Я вошел в систему от анонимного пользователя, и по завершении я установил имя (скажем, "dummyUser"). Вот код:

func signInUserAnonymously(callback: @escaping ((Bool) )->Void){

print("2124.AuthFirebaseHelper: Signing in user anonymously")

Auth.auth().signInAnonymously() { (authResult, error)  in

    if let error = error {
        print("2124.AuthFirebaseHelper: Sign in failed:", error.localizedDescription)


    } else {
        print ("2124.AuthFirebaseHelper: Signed in successfully anonymously")

        // set users name (to allow database reads)

        let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
        changeRequest?.displayName = "dummyUser"

        changeRequest?.commitChanges { (error) in

                 callback(true)

            })


        }

    }

}

Теперь, когда я проверяю отображаемое имя пользователя в коде, я вижу, что оно успешно изменено на "dummyUser". Тем не менее, запрос пожарного хранилища не работает, и я получаю сообщение в журнале:

Отсутствует или недостаточно разрешений.

Вот мой запрос:

    let docRef = Firestore.firestore().collection(Constants.DB_VALUES_COLLECTION).document(Constants.DB_GLOBAL_VALUES_DOCUMENT)

docRef.getDocument { (document, error) in
 if let document = document, document.exists {
      let dataDescription = document.data().map(String.init(describing:)) ?? "nil"
      print("Document data: \(dataDescription)")
  } else {
      print("Document does not exist")
  }
}

Когда я удаляю это правило (и разрешаю всем читать), оно работает. Почему это не позволяет мне читать из базы данных, если это отображаемое имя пользователя. Я попытался позвонить:

Auth.auth().currentUser?.reload()

, но он все еще не работает.

Это нормально работает на Android и только на ios (с использованием swift), у меня есть эта проблема.

Спасибо

...