Как проверить, владеют ли пользователи объектом в компиляторе Firebase bolt

Предположим, у меня есть простая схема с двумя коллекциями пользователей и сообщений. Каждый объект сообщения имеет пару ключ-значение (ownerId: userId), чтобы узнать, какие пользователи владеют объектом сообщений.

users/{1,2,3...}
posts/{a,b,c...}/ownerId:userId

Я пытаюсь написать правила, по которым пользователь может только читать / записывать свои пользовательские данные и свои сообщения.

Для этого правила установки болтов для пользователя довольно просты:

isUser(uid) = auth != null && auth.uid == uid;
path /users/$uid {
    read() = isUser($uid);
    write() = isUser($uid);
}

Мой вопрос в том, как я могу обеспечить доступ к коллекции сообщений только пользователю. Могу ли я проверить свойство ownderId коллекции сообщений в правилах? Если да, то как, если не они, как я могу структурировать свою схему для этого?

ИЗМЕНИТЬ

Я пытаюсь защитить путь к сообщениям следующим образом:

path /posts/$pid {
  read() = isUser(this.ownerId);
  write() = isUser(this.ownerId);
}

Это правильный способ сделать это?


person srinivas    schedule 18.02.2016    source источник


Ответы (1)


Мы можем сделать это, добавив свойство идентификатора владельца в коллекцию, а затем проверив, аутентифицирован ли пользователь.

path /posts/$pid {
  read() = isUser(this.ownerId);
  write() = isUser(this.ownerId);
}
person srinivas    schedule 19.02.2016