Разрешение пользователям читать вложенную коллекцию, если идентификатор пользователя находится в документе - PullRequest
0 голосов
/ 08 июня 2019

Уже некоторое время играю с правилами пожарной базы, и я не могу получить желаемый результат

База данных:

db

а затем подколлекция "чаты" содержит все сообщения

. Мне бы хотелось, чтобы пользователь «3» не мог войти в чат и присоединиться к нему, а правила пожарной базы позволяли только двум пользователямв этом есть свой UID в документе, чтобы перейти к подколлекции "чаты" ограничить доступ на основе

предыдущей попытки UID

    service cloud.firestore {
  match /databases/{database}/documents {

    match /Messages/{MessageId} {
        allow write, read: if isOwner(userId);
    }

    function isOwner(userId) {
        return request.auth.uid == resource.data.uid;
    }
  }
}

, как вы можете видеть, я довольно потерян, если вы могли бы указать мнев правильном направлении, это было бы здорово!

1 Ответ

0 голосов
/ 08 июня 2019

Я думаю, что вы ищете

service cloud.firestore {
  match /databases/{database}/documents {

    match /Messages/{MessageId} {
        allow write, read: if isOwner();
        match /chats/{id} {
            allow write, read: if isParticipant();
        }
        function isParticipant() {
            return isOwner() ||
                get(/databases/$(database)/documents/Messages/$(MessageId)).data[2]
                    == request.auth.uid
        }
    }

    function isOwner() {
        return request.auth.uid == resource.data.uid;
    }
  }
}

Это разрешает доступ на чтение / запись к сообщению, если текущий пользователь является либо владельцем, либо другим участником этого чата.

...