Firestore安全规则的奇数数据库结构-需要建议

时间:2019-03-09 03:49:56

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

我有一个应用程序的Firestore数据库,在该数据库中,用户将使用第三方API中的电子邮件和密码进行身份验证,并返回其帐户ID,用户ID和api令牌。

如果尚无带有电子邮件的Firestore用户,我将创建一个。然后,我检查Firestore数据库,以查看是否已经有该帐户ID的文档。如果没有,我创建一个,并为“用户”创建一个子集合,然后将其数据添加为用户文档,并将字段isAllowed和isAdmin都设置为true,并存储其Firebase用户ID。

在应用程序的管理页面中,我在第三方API中查询其帐户ID,并返回其帐户中的所有用户。然后,管理员可以允许其他用户访问该应用,并可以选择将他们也标记为管理员。通过将用户数据作为文档添加到具有isAllowed和isAdmin相应设置的Firestore / {account id} / users集合中来存储这些权限。

目前,这些其他用户还没有Firebase帐户,因此我将第三方的用户ID用作所有人的“用户”文档名称。据我所知,这使Firebase安全规则变得困难,因为传递给安全规则的Firebase帐户数据与数据库数据之间没有关系。

我想要的规则是:

  1. 如果不存在帐户ID,则允许创建帐户和用户
  2. 如果存在帐户ID,则如果该用户存在于users集合中并且isAllowed = true,则仅允许对帐户数据及其用户只读(如果该用户存在)
  3. 如果#2为true,则如果isAdmin = true,则允许对整个帐户进行写访问

这有意义吗?有什么想法或建议吗?

谢谢。

0 个答案:

没有答案