Мои правила firestore, похоже, подходят для прямого запроса, но если я использую свое веб-приложение для реагирования для выполнения запроса на чтение, я не получаю разрешения на чтение.
match /databases/{database}/documents {
match /users/{user} {
allow read: if resource.data.active == true
&& request.time.toMillis() < ( resource.data.timeInSV + 6000000 );
}}
Это являются ли мои правила чтения в firestore, блок match / users / {user} должен позволить мне читать все документы в коллекции, которые были созданы в течение 100-минутного промежутка времени с меткой времени и помечены как активные.
Я получаю ответ при cURL`ing, успех!
https://firestore.googleapis.com/v1/projects/NAME/databases/(default)/documents/users/USER_ID
Но у меня нет разрешения на чтение из приложения реакции для моего запроса:
const db = firebase.firestore();
db.collection("users").where("lastname", "==", this.state.lastname.trim().toLowerCase()).where("active", "==", true)
.get()
.then(querySnapshot => {
var users = {};
querySnapshot.forEach(function(doc) {
users[doc.id] = doc.data().firstname
}
Результаты в:
[Log] Error getting documents:
– FirebaseError: [code=permission-denied]: Missing or insufficient permissions. (main.chunk.js, line 1228)
FirebaseError: [code=permission-denied]: Missing or insufficient permissions.
Как только Я удаляю && request.time.toMillis()...
из моего правила чтения firestore, я снова могу получить доступ ко всем активным документам из реактивного веб-приложения. То же самое касается правила времени, оно работает, но только , а не в сочетании с другим условием, что пользователь должен быть active
.