使用Firestore安全规则验证多租户应用程序的用户权限

时间:2018-09-05 06:10:11

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

我一直在努力在Firebase和Firestore中创建多租户应用程序。当前的结构是这样的:

/users
/companies
/company_user (this links the company and the user, with userId and companyId)
/service1
/service2

基本上,每个公司都可能启用或不启用某些服务,并且用户已分配给公司。用户可以链接到多个公司。

我正在创建一些安全性Firestore规则,并且我希望能够限制对每个服务文档的读/写操作,具体取决于用户是否链接了公司。

大多数基本规则都在起作用,但是我想验证每个用户都可以访问公司,并且公司也可以访问该服务。

从根本上讲,这意味着签入companies_user来查看用户是否链接了公司,然后查看公司是否具有该服务(每个服务文档都有一个companyId字段供验证)

我看不到如何使用get()或exist()完成此操作。

可以做到吗?还是应该重组数据?像这样:

/companies/{company}
/companies/{company}/users
/companies/{company}/service1
/companies/{company}/service2

我不喜欢这样做,因为这意味着到处都有数据,但是也许我不太习惯SQL和NoSQL。

谢谢

0 个答案:

没有答案