Firestore правило записи для конкретного пользователя с использованием имен авторизации - PullRequest
0 голосов
/ 09 сентября 2018

Новый в Firestore правила безопасности и пытается понять это. Я пытаюсь написать правило безопасности, которое позволяет только admins в моей коллекции записывать данные и каждый может их читать.

Коллекция admins имеет идентификаторы документов в качестве имен администраторов, например "Мэри Лейн". В документах у меня есть поля:

email: "userMailId@mail.com"
uId: "firestore_user_Id"

uId - это идентификатор пользователя Firestore. Данные для записи являются объектом Message и имеют вид:

new Message(uId, title, messageBody, timestamp)

В настоящее время я пытаюсь сопоставить request.auth.uid с идентификатором admins, который хранится в коллекции:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read;
      allow write: if request.auth.uid == resource.data.uId;
    }
  }
}

Это напишите или я что-то не так делаю. Любая помощь приветствуется.

1 Ответ

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

Поскольку имя администратора недоступно в этом правиле allow write: if request.auth.uid == resource.data.uId;, невозможно найти документ, чтобы убедиться, что он администратор.

Вам понадобится коллекция, в которой вы храните документ для каждого администратора с их UID в качестве ключа / имени документа. После этого вы можете проверить наличие такого документа в правиле с помощью:

allow write: if exists(/databases/$(database)/documents/admins/$(request.auth.uid));

Также см. Документацию о доступе к другим документам .

...