我需要一些帮助来制定我的Firestore安全规则。
这些是我的Firestore规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
function isAdmin(uid) {
return (uid in get(/admin/administrators).data.uid)
}
allow read;
allow write: if request.auth.uid != null && isAdmin(request.auth.uid);
}
}
}
在文档/admin/administrators
中,有一个名为uid
的字段,其中包含允许写入数据库的管理员UID数组。
以一个这样的管理员身份登录并尝试将文档添加到另一个集合之后。 (具体来说,我在使用Angularfire 2的Angular应用程序中的调用是this.afStore.collection(collection).add({});
。)我收到错误Error: Missing or insufficient permissions
。
任何帮助表示赞赏(包括“显然有更好的方法可以做到这一点”)
答案 0 :(得分:0)
您应该输入要引用的集合的绝对路径。将(uid in get(/admin/administrators).data.uid)
更改为get(/databases/$(database)/documents/admin/$(request.auth.uid)).data.uid