@Nivco С последней версией это теперь работает. Но, пожалуйста, обратите внимание, что ошибка в размещенном примере кода, пропущенная инструкция возврата, должна быть "return firebase.auth (). SignInWithCustomToken ..." Спасибо
я возникли проблемы с функцией облачных вычислений и правилами пожарного депо. Я хотел бы использовать облачную функцию с ограниченными правами на Firestore и предоставить только доступ, как определено в Правилах безопасности
Он работает без проблем на RTDB, но не на Firestore.
У меня есть попытка с этими правилами
service cloud.firestore {
match /databases/{database}/documents {
match /init/{ID=**} {
allow read, write: if true;
}
match /test/{ID=**} {
allow read, write: if false;
}
}
}
И это
const admin = require('firebase-admin');
const functions = require('firebase-functions');
const FieldValue = require('firebase-admin').firestore.FieldValue;
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: 'https://******.firebaseio.com',
databaseAuthVariableOverride: {
uid: 'my-worker',
},
});
const db = admin.firestore();
exports.onTestRights = functions.firestore
.document('init/{initID}')
.onCreate((event) => {
const initID = event.params.initID;
return db.collection('test').doc(initID).set({'random key': 'random value'}).then(()=>{
console.log('working');
return;
}).catch((err) =>{
console.log('error: ', err);
return;
});
});
Но он все еще пишет так, в то время как это должно быть "разрешение отказано"
Кто-нибудь знает, нормально ли это (или еще не имплантировано) в пожарном депо или я что-то не так понял?
Редактировать: Конечно, моя конечная цель - не с этими правилами, а только предоставить права на запись / чтение для некоторых документов / коллекций с помощью (allow read, write: if request.auth.uid == 'my-worker';
)
Edit2: Я хотел бы использовать правила безопасности для проверки, как транзакция, если нет изменений во время процессаиспользуя эту модель