Условные правила firesbase firestore не применяются правильно для ответа на запрос приложения - PullRequest
0 голосов
/ 27 мая 2020

Мои правила firestore, похоже, подходят для прямого запроса, но если я использую свое веб-приложение для реагирования для выполнения запроса на чтение, я не получаю разрешения на чтение.

match /databases/{database}/documents {
    match /users/{user} {
        allow read: if resource.data.active == true
        && request.time.toMillis() < ( resource.data.timeInSV + 6000000 );
}}

Это являются ли мои правила чтения в firestore, блок match / users / {user} должен позволить мне читать все документы в коллекции, которые были созданы в течение 100-минутного промежутка времени с меткой времени и помечены как активные.

Я получаю ответ при cURL`ing, успех!

https://firestore.googleapis.com/v1/projects/NAME/databases/(default)/documents/users/USER_ID

Но у меня нет разрешения на чтение из приложения реакции для моего запроса:

        const db = firebase.firestore();
        db.collection("users").where("lastname", "==", this.state.lastname.trim().toLowerCase()).where("active", "==", true)
            .get()
            .then(querySnapshot => {
                var users = {}; 
                querySnapshot.forEach(function(doc) {
                 users[doc.id] = doc.data().firstname
                  }

Результаты в:

[Log] Error getting documents:  
– FirebaseError: [code=permission-denied]: Missing or insufficient permissions. (main.chunk.js, line 1228)
FirebaseError: [code=permission-denied]: Missing or insufficient permissions.

Как только Я удаляю && request.time.toMillis()... из моего правила чтения firestore, я снова могу получить доступ ко всем активным документам из реактивного веб-приложения. То же самое касается правила времени, оно работает, но только , а не в сочетании с другим условием, что пользователь должен быть active.

...