您好,我正在开发一个应用程序,其中有两种类型的用户,第一种是Admin,第二种是常规用户。现在,我想允许更新常规用户文档disable
中的特定字段,只有管理员可以更新此字段。但是另一个问题是,我只希望像if (uid == documentId) allow write in fields
这样的用户自己允许在文档字段中进行更新,因为我不希望其他用户仅更新某人的帐户信息。我怎么可能执行这些操作,它们在规则中可用吗?
注意:将有两个集合Admins
和Users
,其中每个文档ID都是帐户的UID。
谢谢。
答案 0 :(得分:1)
首先,建议您在一个集合Admins
下创建Users
和Users
并为管理员帐户添加字段admin = true
。
并且要确保没有人可以更新文档,除非它是相同的用户帐户或管理员帐户,您可以使用以下规则进行操作:
service cloud.firestore {
function admin() {
return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true
}
match /databases/{database}/documents {
match /users/{userId} {
allow read: if true;
allow update, create: if admin() || (request.auth.uid == userId && !('admin' in request.writeFields));
allow delete: if request.auth.uid == userId || admin();
}
}
}
希望这会有所帮助,祝您好运!