Правила безопасности Firebase (Firestore), ограничивают доступ к объекту для определенных c пользователей - PullRequest
0 голосов
/ 25 марта 2020

Мне нужно ограничить доступ к объектам Meeting, хранящимся в Firestore, для указания c идентификаторов пользователя (участников собрания).

Пример собрания:

{
    name: "Topic 1";
    participantsIds : [
        "0YClg4mgljK8m16znDrW",
        "xFRCam5joc3nDW5jHWT5"
    ];
}

Чтобы загрузить собрания из Firestore для указанного c участника, я легко могу использовать запрос там с оператором «array-contains».

Как написать правило безопасности Firestore, чтобы предотвратить чтение для пользователей, не являющихся участниками собрания (не в массиве membersIds)?

Есть ли лучший подход для хранения участников на собрании и простого запроса и записи правила безопасности?

1 Ответ

1 голос
/ 25 марта 2020

Firestore Поля типа списка отображаются как List объектов в правилах безопасности. Вы можете использовать оператор in, чтобы проверить, существует ли элемент в списке. Предполагая, что вы используете Firebase Auth для идентификации пользователей, это позволит только пользователям, перечисленным в поле participantsId, читать документ:

match /your-meetings-collection/{id} {
  allow read: if request.auth.uid in resource.data.participantsId
}
...