将协作者共享或添加到Firestore文档

时间:2018-03-14 17:10:59

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

考虑role based access解决方案。以下约束条件成立:

  1. 故事不公开
  2. 故事可以由故事创作者阅读
  3. 故事可以由与
  4. 分享故事的用户阅读

    考虑到约束如何在故事中共享或添加协作者?鉴于Alice知道Bobs电子邮件,但她不知道他的UID,或者他是否使用了故事应用程序。

    范围限制的所有文档基本规则和UID上的查询但由于该信息不公开,我很难看到如何将UID添加到文档而不暗示:

    1. 该文档仅由创作者
    2. 阅读
    3. 该文档是公开的,这违背了添加UID以限制访问的目的
    4. 我最初的想法是使用电子邮件地址密钥,但这不起作用。 SO issue

1 个答案:

答案 0 :(得分:2)

我通过使用两个云功能解决了这个问题。在客户端,我只是添加已知信息,即电子邮件地址。然后,我利用一个函数来更新所有相关文档,用用户的UID替换电子邮件地址。

用户创建时会触发一个云功能。这解决了用户从未使用过或登录过应用程序的情况。

Trigger a function on user creation

第二个云功能会在更改时更新文档。这解决了用户已经是应用程序用户且具有有效UID的情况。

Trigger a function when a document is updated