как получить доступ к данным запрашивающего пользователя в firestore - PullRequest
0 голосов
/ 02 июня 2019

в моем firestore, у меня есть логическое поле с именем admin для пользовательских документов в моей коллекции пользователей. если это правда, этот пользователь может читать другие учетные записи. но как я могу получить доступ к этому полю в firestore.rules?

это не работает, но дает представление о том, что я собираюсь сделать

allow get: if request.auth.uid.data.admin == true

единственные данные, к которым я обращаюсь в документации, - это доступ к ресурсу. это означало бы, что каждый пользователь будет иметь массив admins каждого администратора, на которого есть ссылки, что было бы кошмаром для поддержки

Ответы [ 2 ]

1 голос
/ 02 июня 2019

попробуйте

function isAdmin(request, uid) {
   return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true
}

match /YOUR_COLLECTION/{doc} {
   allow read: if isAdmin(request)
}

при условии, что вы используете uid в качестве идентификатора документа пользователя, это будет работать не только для пользователя по коллекции, вы устанавливаете эту функцию

1 голос
/ 02 июня 2019

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

allow get: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true

Таким образом, он получает документ пользователя, а затем проверяет, есть ли там поле admin со значением true.

...