Установка разрешений для документа и всех его подколлекций - PullRequest
1 голос
/ 30 марта 2019

Я получаю ошибку: FirebaseError: Missing or insufficient permissions при попытке просмотра документа во вложенной коллекции. Я пытаюсь получить в документе «персонаж» в подколлекции «настройки».

systemsCol()
  .doc(localStorage.getItem("systemId"))
  .collection('settings')
  .doc('character')

Как установить все элементы и вложенные документы для каждого «системного» документа?

Вот мои разрешения

service cloud.firestore {
    function authed (auth, data){
    return auth.uid == data.owner.uid || auth.token.email in data.collaborators;
  }

    match /databases/{database}/documents {
    match /systems {
      allow read, write: 
        if request.auth.uid != null;

      match /{systemId}  {
        allow list, create:
            if request.auth.uid != null;
        allow get, update, delete: 
          if authed(request.auth, resource.data);
            }

      match /{systemId}/{document=**} {
        allow read, write: 
            if authed(request.auth, resource.data);
      }
    }
  }
}

Также пробовал

service cloud.firestore {
    function authed (auth, data){
    return auth.uid == data.owner.uid || auth.token.email in data.collaborators;
  }

    match /databases/{database}/documents {
    match /systems {
      allow read, write: 
        if request.auth.uid != null;

      match /{systemId} {
        allow list, create:
            if request.auth.uid != null;
        allow get, update, delete: 
          if authed(request.auth, resource.data);

                match /{document=**} {
          allow read, write:
            if authed(request.auth, get(/systems/{systemId}).data);
        }
      }
    }
  }
}
...