Firebase при вызове функции (functions.https.onCall) не отправляет значения параметров контекста правилам безопасности.Это означает, что если из пользовательского интерфейса мы вызываем функцию firebase on call, чтобы обновить что-то для firestore db, мне нужно выполнить все проверки безопасности в этой функции и использовать admin sdk для обновления firestore db.Я не могу использовать правила безопасности firebase sdk и firestore для аутентифицированных обновлений.
export const registerOrganizationTest = functions.https.onCall(async (data, context) => {
try { firebase.firestore().collection('Organizations').doc('counts').get()
await firebase.firestore().collection('Organizations').doc('counts').set(orgcounts, { merge: true })
await firebase.firestore().collection('Organizations').
doc((orgcounts.organizationCount).toString()).
set(organization, { merge: true })
}
catch (err) {
throw new functions.https.HttpsError("internal", err);
}
})
Firestore останавливает обновления при нарушении правил безопасности.Но если те же операторы запускаются из пользовательского интерфейса, они передаются как контекстный параметр, доступный правилам безопасности.