在具有路径“组织”的Firebase Firestore集合中,每个文档都包含可更新或删除该文档的用户的字符串用户ID列表。
export interface Organization{
name?: string,
owners: string[]
}
我想创建一个Firebase安全规则,以确保只有具有此列表中uid的登录用户才能编辑或删除该对象。不确定适当的语法。
service cloud.firestore {
match /databases/{database}/documents {
match /organizations/{organization} {
allow read: if true;
allow create: if request.auth != null;
/// What should be the syntax here?
allow update, delete: if request.auth != null && (request.auth.uid in resource.data.owners); // <--------- What should be the syntax for this line?
}
答案 0 :(得分:1)
好,在这里回答我自己的问题,以防对其他人有用。
尽管这是一个完整的猜测,但看起来上面的'in'语法实际上仍然有效,我在firebase安全角色文档中找不到该文档的任何文档。
最终代码:
service cloud.firestore {
match /databases/{database}/documents {
match /organizations/{organization} {
allow read: if true;
allow create: if request.auth != null;
allow update, delete: if (request.auth != null) && (request.auth.uid in resource.data.owners);
}