【发布时间】:2021-08-26 15:21:36
【问题描述】:
美好的一天! 为 Firestore 编写规则:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function isSignIn() {
return request.auth.uid != null
}
function isAdmin() {
return exists(/databases/$(database)/documents/admins/$(request.auth.uid))
}
function isPublished() {
return resource.data.published == true
}
match /instructions/{instructionId} {
allow list:
if isSignIn()
&& (isPublished() || isAdmin())
&& request.query.limit <= 10
}
}
}
我知道规则不是过滤器。我想达到一个条件,管理员可以查看已发布的帖子和未发布的帖子,而普通用户只能查看已发布的帖子。对published 的检查会强制在应用程序级别设置条件。
firestore.collection("instructions")
.whereEqualTo("published", true)
.limit(10)
.get()
如果我们只想向普通用户显示已发布的帖子,原则上这是合乎逻辑的。
如何让管理员查看所有记录?
我只有一个选择 - 删除条件 isPublished () || isAdmin () 并在没有发布条件的情况下为管理员创建单独的视图。在这种情况下,必须在客户端进行验证,这是不好的。
你有什么建议?
【问题讨论】:
标签: android firebase google-cloud-firestore firebase-security