Правила БД Firebase. Ограничить доступ для записи по номеру телефона

Я использую базу данных Firebase в реальном времени для реализации синхронизированной БД для своих приложений на разных платформах. Мне нужен способ разрешить всем читать из базы данных. Только пользователи, авторизованные по номеру телефона, и если этот номер есть в списке администраторов, смогут писать в базу данных. Я не нашел способа получить номер телефона из объекта "auth" в правилах БД. Любая помощь будет принята с благодарностью!

Вот структура и правила БД, которые я использую прямо сейчас.

{
  "admins" : {
    "+97254000000" : {
      "name" : "Pirate Pirate",
      ...
    }
  },
  "mesages" : {
    "msg1" : {
      "orderTimestamp" : 1526916646226,
      "txt" : "some message"
    },
    "msg2" : {
      "orderTimestamp" : 1526916643522,
      "txt" : "some message"
    },
    "msg3" : {
      "orderTimestamp" : 1526916486229,
      "txt" : "some message"
    }
  }
}
// Database Rules
{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

person Vitaliy A    schedule 13.07.2018    source источник


Ответы (1)


Ok. После нескольких часов поисков я взял перерыв на кофе и сразу нашел ответ :)

Правила безопасности базы данных Firebase поставляются с объектом "auth", который содержит почти все, что вам может понадобиться для проверки личности пользователя (номер телефона, адрес электронной почты, имя и т. д.). Таким образом, вся информация, которую я искал, помещена в " auth.token "часть.

Новые правила выглядят так:

{
  "rules": {
    ".read": "auth != null",
    ".write": "root.child('admins').child(auth.token.phone_number).exists()"      
  }
}
person Vitaliy A    schedule 13.07.2018