Я использую следующие правила безопасности Firestore:
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
Проблема заключается в том, что для функции в моем приложении-реактиве выполняется обратный вызов (для совместного использования идентификатора транзакции), и приложение обрабатывает браузер для обработки обратного вызова. В скрипте обратного вызова на моем сервере у меня есть такой код:
fetch(url, {
method: 'GET',
headers: {
Accept: 'application/json',
}
}).then(response => {
if (response.ok) {
response.json().then(json => {
if(json.data == "Manual sale") {
alert("Manual sale complete! Return to Fairstarter!");
return;
}
var quant = 0;
var itemsRef = db.collection('items');
var query = itemsRef.where('barcode', '==', String(json.data)).get()
.then(snapshot => {
snapshot.forEach(doc => {
....
//UPDATE THAT IS LOCKED OUT BY PERMISSIONS
itemsRef.doc(doc.id).update({
[Object.keys(doc.data())[0]]]: {
quantity: newVal
}
})
Проблема в том, что в приведенном выше блоке я пытаюсь обновить базу данных, но, поскольку я не исходил из чего-либо, у которого уже есть пользователь firebase для аутентификации, мне отказано в firebase из-за разрешений.
Как обеспечить безопасность базы данных, при этом позволяя сценарию обратного вызова обновлять базу данных?