Правила безопасности Firestore, позволяющие пользователям запрашивать один документ - PullRequest
0 голосов
/ 07 ноября 2019

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

docID: {
  email: 'my@user.com'
}

Итак, сейчас мои правила безопасности для коллекции email:

match /email/{documentID} {
  allow read: if request.auth.token.admin == true;
  allow create: if true;
}

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

Но я хочу, чтобы код клиента мог запрашивать собственную электронную почту пользователя. , чтобы избежать дубликатов в моей БД. Поэтому я хочу, чтобы мой клиентский код мог это делать:

const querySnapshot = await
props.firebase.firestore().collection('email').where('email', '==', email).get();

ВОПРОС

Как мне написать свои правила безопасности для достижения такого поведения?

Я не хочу, чтобы они могли запрашивать полную коллекцию email.

1 Ответ

2 голосов
/ 07 ноября 2019

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

Обратите внимание, что это позволяет любому эффективно запрашивать любойадрес электронной почты, а не просто «свой» (однако вы определяете это право собственности).

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