具有每个公司的隔离数据的表的规则

时间:2019-06-28 18:03:22

标签: firebase-realtime-database firebase-security-rules

在我的Firebase应用程序中,每个用户都属于一家公司(一家公司可能有很多用户),并且表中的数据分为Table_name \ COMPANY_ID \

COMPANY_ID在“用户”表中定义。

例如“项目”表如下:

Items\<COMPANY_ID>\Item_1
Items\<COMPANY_ID>\Item_2 and so on

Items table

用户表定义为:

Users\<AUTH_ID>\

User table

其中AUTH_ID是身份验证ID

我想设置规则,以便用户只能访问自己公司的数据。如何为Items表(以及所有其他表)制定读写规则?

1 个答案:

答案 0 :(得分:1)

类似这样的事情应该可以解决:

{
  "rules": {
    "Items": {
      "$companyId": {
        ".read": "root.child('Users').child(auth.uid).child('CompanyId').val() 
                  === $companyId"
      }
    }
  }
}

换句话说:如果认证用户CompanyId与公司相匹配,则允许其读取公司的数据。