Я пытаюсь разрешить чтение/запись только для UID пользователей, однако скрипт продолжает говорить о недостающем разрешении, пожалуйста, помогите.
Большое спасибо'
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, update, delete: if request.auth.uid == userId;
allow create: if request.auth.uid == userId;
}
}
}
db.collection('users').doc(userId).collection('details').add(...
Правила, которые вы написали, соответствуют только документам, которые находятся непосредственно в коллекции, называемой "пользователи". Однако вы пытаетесь получить доступ к документу внутри подмножества документа под "пользователями".
В документации очень подробно рассматривается эта ситуация, поэтому не забудьте прочитать и понять, как иерархические данные работают для правил безопасности.
Если вы хотите применить правила каждого пользователя ко всем документам в коллекции и всем документам во всех вложенных подколлекциях под этим документом, вы можете просто сказать следующее:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth.uid == userId;
match /{document=**} {
allow read: if request.auth.uid == userId;
}
}
}
}
Обратите внимание, что совпадение должно быть вложен таким образом, чтобы использовать подстановочный знак userId
из внешнего соответствия.
Вероятно, вы забыли включить поставщика входа в консоль firebase.