Firebase-Cloud Firestore,为管理员创建问题时遇到的问题

时间:2018-10-18 20:36:49

标签: firebase firebase-authentication google-cloud-firestore

在创建Firebase规则时遇到问题,我在“员工”集合中创建了一个字段“ role”,因此在这里,我想区分数据库中允许读取/写入的每种类型的用户,等等。我的问题是,由于某种原因,我无法验证尝试阅读其他信息的用户是否真的是管理员,因此在“ isAdministrator”功能中,我无法使获取功能正常工作

Column I

这就是我的收藏集的样子:

Employees collection with roles

1 个答案:

答案 0 :(得分:0)

match / databases / {database} /文档必须包装所有内容,包括函数,如下所示:

service cloud.firestore {
    match /databases/{database}/documents {
    // FUNCTIONS
    // Function: Check if an authenticated employee is admin
    function isAdministrator(){
        return get(/databases/$(database)/documents/employees/$(request.auth.uid)).data.role == 'admin' 
                    || get(/databases/$(database)/documents/employees/$(request.auth.uid)).role == 'admin';
    }
    // RULES
    // Allows only admins and 'owner' to acess his document
    match /employees/{document=**} {
        allow read, write, update: if request.auth.uid == resource.data.uid || isAdministrator();
        allow create, delete, list: if isAdministrator();
    }
  }
}