Como usar o SDK do administrador com privilégios limitados no Firestore?
Estou com alguns problemas com a função Cloud e as regras do firestore. Gostaria de usar a função de nuvem com privilégios limitados no Firestore e fornecer apenas acesso conforme definido nas Regras de Segurança
Está funcionando sem problemas no RTDB, mas não no Firestore.
Eu tentei com estas regras
service cloud.firestore {
match /databases/{database}/documents {
match /init/{ID=**} {
allow read, write: if true;
}
match /test/{ID=**} {
allow read, write: if false;
}
}
}
E isto
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;
});
});
Mas ainda está escrevendo, embora deva ser "permissão negada"
Alguém sabe se é normal (ou ainda não foi implantado) no firestore ou se eu entendi algo errado?
Editar: Obviamente, meu objetivo final não é com essas regras, mas apenas conceder acesso de gravação / leitura em alguns documentos / coleções usando (allow read, write: if request.auth.uid == 'my-worker';
)
Edit2: Gostaria de usar as regras de segurança para verificar como uma transação, se nenhuma alteração durante o processousando este modelo