Правила аутентификации Firebase с использованием данных внутри - PullRequest
0 голосов
/ 09 мая 2018

Как я могу подтвердить, что только пользователи с содержимым данных могут писать / удалять узел? Моя структура данных выглядит так:

project-xxxxxxxx
   Messages
      Chat-Record-001
         User1: "B3xUEsPRZ1XhIAhDQo1DEyLZlSX2"
         User2: "PR70j0ou4JdDWf8S5X9h9BUevpo1"
         Message: "This is a test message!"
      Chat-Record-002
         User1: "RiGLv20W7UTFZSCAATOHsk9gDfg1"
         User2: "GG50j0ou4JdDWf8S5X9h9BUevpo1"
         Message: "This is a test message!"
      Chat-Record-003
         User1: "gBTtYUAKCIVZkYGY7gTUNidSIfv1"
         User2: "gmIOwzJwvSOOQc1ADMrHI6phGIv2"
         Message: "This is a test message!"
      Chat-Record-004
         User1: "B3xUEsPRZ1XhIAhDQo1DEyLZlSX2"
         User2: "gmIOwzJwvSOOQc1ADMrHI6phGIv2"
         Message: "This is a test message!"

Как мне написать правила, чтобы пользователь B3xUEsPRZ1XhIAhDQo1DEyLZlSX2 можно записывать только в Запись чата-001 и Запись чата-004 , в то время как gmIOwzJwvSOOQc1ADMrHI6phGv2 только для записи * * * * * -Record-003 и Chat-Record-004 . Строки User1 и User2 взяты из createUserWithEmailAndPassword.

1 Ответ

0 голосов
/ 09 мая 2018

Примерно так должно получиться:

{
  "rules": {
    "Messages": {
      "$chatid": {
        ".write": "data.child('User1').val == auth.uid || data.child('User2').val == auth.uid"
      }
    }
  }
}

Обратите внимание, что это позволяет им только обновлять существующие сообщения. Если вы также хотите, чтобы пользователь мог писать новые сообщения, если его UID находится в User1 или User2, это будет:

".write": "newData.child('User1').val == auth.uid || newData.child('User2').val == auth.uid"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...