правила безопасности пожарной базы системы голосования - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь написать правила для этого узла, чтобы только пользователь, который в данный момент вошел в систему, может редактировать / обновлять его, используя только значения «-5», «3» или «1», а остальные пользователимогу редактировать / обновлять его только с помощью «-3» или «3»

Структура данных, которую я имею:

/ users / $ uid / голоса

правила Iна данный момент:

{
 "rules": {
   "users": {
    "$uid": {
      ".read": true,
      ".write": "auth.uid === $uid",
      "votes": {
        ".validate": "auth.uid === $uid && newData.isNumber() && (newData.val() === -5 || newData.val() === 3 || newData.val() === 1) || auth.uid !== $uid &&newData.isNumber() && (newData.val() === -3 || newData.val() === 3)"
        } 
      }
    }
  }
}

Есть ли способ улучшить эти правила?«auth.uid! == $ uid» проверяет, может ли пользователь, который еще не вошел в систему, обновлять значения этого узла «голосов» только на -3 или 3?

1 Ответ

0 голосов
/ 23 сентября 2018

Это немного более читаемый способ сделать то же самое (по крайней мере, мне):

".validate": "(newData.isNumber() && (
  newData.val() === 3 /* Everyone can set to 3 */
  || (auth.uid === $uid && newData.val() === -5 || newData.val() === 1) ||       
  || (auth.uid !== $uid && newData.val() === -3)
)

Но правила позволяют каждому пользователю аутентификации писать в местоположение для $uid, что кажется странным.Вы уверены, что хотите, чтобы какой-либо пользователь написал только голоса этого пользователя?

Если вам будет легче помочь, если вы покажете JSON, который вы хотите создать, и код для операции записи, которую вы хотите разрешить (и запретить).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...