Как написать правила безопасности FireStore с динамическим путем? - PullRequest
0 голосов
/ 14 марта 2019

Моя коллекция называется "omgcollection", а образцы документов, как показано ниже

{
  "omgcollection": {
    "documentId1": {
      "somekey": "somevalue"
    },
    "documentId2": {
      "somekey": "somevalue"
    }
  }
}

Здесь я использовал uid в качестве идентификатора документа, как предоставить доступ только для чтения к документам на основе $ (request.auth.uid)

Ниже правило не работает

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if exists(/databases/$(database)/documents/omgcollection/$(request.auth.uid));
    }
  }
}

Вот мой код:

//customToken ~ uid = documentId1
firebase.auth().signInWithCustomToken( < customToken > ).catch(function(error) {
    console.log('auth error :', JSON.stringify(error));
});
var db = firebase.firestore();
db.collection("omgcollection").doc("documentId1")
    .onSnapshot(function(doc) {
        console.log("data: ", doc.data());
    }, error => {
        console.log(error)
    });

Этот код возвращает FirebaseError: отсутствуют или недостаточные разрешения.

...