具有自定义函数错误的Firestore规则

时间:2018-08-06 22:35:31

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

我正在尝试创建一条规则来允许我的firestore数据库中的某些功能(我从3个月前开始使用firebase,在这方面我真的很新)。主要思想是找到我存储在用户文档中的用户配置文件的_key。然后,使用我之前找到的ID搜索用户配置文件文档中允许的所有权限。如果获得许可,则可以访问该功能

service cloud.firestore {
  match /databases/{database}/documents {

    function getPermisos(idPermiso){
    return get(/databases/{database}/documents/user-profiles/$(idPermiso)).data;
    }

    function getUserType(){
    return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.profile._key ;
    }


    match /proyectos/{document=**}{
    allow list,get: if getPermisos(getUserType()).acessList.proyectos==true;
    }


  }
}

这是正确的制作方法吗?预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您不会查询可访问性规则。您可以定义accessLevels的集合,其中每个文档代表您的各种访问类型,例如“管理员”,“ groupone”,“ grouptwo”等。请参见documentation

  

具有自定义声明和安全规则的控制访问权限

     

Firebase Admin SDK支持在用户帐户上定义自定义属性。这个   提供实施各种访问控制策略的能力,   在Firebase应用中包括基于角色的访问控制。这些习俗   属性可以为用户提供不同级别的访问权限(角色),   是在应用程序的安全规则中强制执行的。

     

可以为以下常见情况定义用户角色:

     
      
  • 授予用户访问数据和资源的管理权限。
  •   
  • 定义用户所属的不同组。
  •   
  • 提供多级访问:
  •   
  • 区分付费/未付费订户。
  •   
  • 区别主持人与普通用户。
  •   
  • 老师/学生申请表等
  •   
  • 在用户上添加其他标识符。例如,Firebase用户可以映射到另一个系统中的其他UID。
  •