允许对特定用户的特定字段进行更新-Firebase Firestore规则

时间:2018-10-07 06:20:06

标签: android firebase google-cloud-firestore firebase-security-rules

您好,我正在开发一个应用程序,其中有两种类型的用户,第一种是Admin,第二种是常规用户。现在,我想允许更新常规用户文档disable中的特定字段,只有管理员可以更新此字段。但是另一个问题是,我只希望像if (uid == documentId) allow write in fields这样的用户自己允许在文档字段中进行更新,因为我不希望其他用户仅更新某人的帐户信息。我怎么可能执行这些操作,它们在规则中可用吗?

注意:将有两个集合AdminsUsers,其中每个文档ID都是帐户的UID。

谢谢。

1 个答案:

答案 0 :(得分:1)

首先,建议您在一个集合Admins下创建UsersUsers并为管理员帐户添加字段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();
        }
    }
}

希望这会有所帮助,祝您好运!