Добавить права администратора в правила Firebase - PullRequest
0 голосов
/ 02 мая 2019

Я установил правила firebase, чтобы пользователи могли читать и записывать данные в базу данных.Теперь я хочу добавить еще одно правило для пользователя-администратора.

Я разрешаю пользователям доступ через auth.uid и хочу установить другой уровень для пользователя-администратора.

Вот мое текущее правило:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

И я извлекаю данные, передавая $ uid в URL, например:

`https://blablabla.firebaseio.com/users/${uid}/places.json?auth=` + authToken

Пользователи регистрируются по электронной почте и паролю.Есть ли способ добавить определенного пользователя в качестве администратора и настроить другое правило для доступа ко всем данным?

1 Ответ

0 голосов
/ 02 мая 2019

Я обычно создаю в моих правилах функцию isAdmin, которую затем могу вызывать из любого места.Вот пример из недавнего проекта:

function isAdmin(request) {
  return request.auth.uid == "KqEizsqUQ6XMkUgLUpNxFnzLm4F3"
      || request.auth.uid == "zYXmog8ySOVRrSGVt9FHFr4wJb92"
      || (request.auth.token.email_verified && request.auth.token.email.matches(".*@google.com"))
      ;
}

Итак, в этом проекте группа администраторов состоит из двух UID и всех, кто входит в систему с проверенным адресом электронной почты Google.

Теперь яможете использовать эту функцию в любых других правилах, таких как:

match /users/{uid} { 
  allow read: if true;
  allow create: if request.auth.uid == uid;
  allow delete: if isAdmin(request);
}

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

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