如何在firebase firestore中创建多租户SaaS应用程序权限

时间:2018-04-27 17:03:40

标签: firebase google-cloud-firestore

我试图弄清楚如何为多租户(拥有多个客户的企业应用)创建不同的角色和权限。例如,我们的应用程序有customerA和customerB,每个客户都有自己的用户(customerAUser1,customerAUser2等),并拥有自己的不同角色,例如"管理员","经理",& #34;员工","承包商"这些角色对每个客户都不同。他们的管理员决定他们想要的角色。

因此,管理员说,customerA注册并将其公司名称称为" customerA"。

然后,管理员在UI中创建一个"经理"角色,并允许访问"人"设置中的部分(假设设置中有多个选项卡)。然后创建,"承包商"无法访问"设置"。

中的任何地方

然后管理员从excel文件导入所有用户。

excel文件看起来像这样:

name, email, phone, role
john,jo@customerA.com,123456,manager
jane,jane@customerA.com,123456,contractor

同样,customerB的AdminB注册他的公司并创建他自己的一套规则。

现在,每次用户登录时,我们都需要确保数据不会泄漏客户A和客户B。因此,数据库中的每个集合都需要拥有" customerId"或者其他的东西。此外,我们需要检查人们是否可以根据他们的角色#34;访问某些集合。

在firestore DB中处理此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

如果从来没有客户A和客户B拥有相同用户的情况,解决此问题的最佳方法是使用子集合。例如:

customers/{customer_id}/users/{user_id}

然后,在查询和执行操作时,您始终可以锚定此操作:

firebase.firestore()
        .collection('customers')
        .doc('customerA')
        .collection('users')
        .where('role','==','admin')

如果您 需要跨租户可见性,那么正确的方法是在文档中拥有customer_idtenant_id