如何使用firebase实现协作者邀请?

Jar*_*nal 6 firebase firebase-security angularfire

我正在开发一个带有firebase和angular and angularfire的应用程序.我想实现一个"邀请协作者"功能,就像firebase本身实现协作一样 - 也就是说,app用户可以输入一个电子邮件地址来邀请协作者发送电子邮件并生成"inviteToken",就像在firebase本身中邀请协作者时完成.我理解安全规则(限制协作者访问)和架构设计(一个/协作者'文件夹'?)是一个方面,可以使用本机firebase和angular来完成.我的问题是如何最好地实施邀请电子邮件和'inviteToken'?实现这种邀请功能最有效的方法是什么?可以使用原生firebase吗?或者是否需要实现单独的服务器端代码(nodejs?)?也许来自firebase团队的人可以根据firebase本身如何实现协作来发表意见.

Ana*_*ant 2

您可以通过散列要与其共享特定数据的用户的电子邮件地址并将其存储在权限字段下来实现协作。

例如,让我们从“user1”拥有的路径 /items/item1 开始:

{
  "items": {
    "item1": {
      "data": "foobar",
      "permissions": {
        "user1": true
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

您可以按如下方式设置数据的安全规则:

{
  "rules": {
    "items": {
      "$item": {
        ".read": "data.child('permissions').hasChild(auth.uid)",
        ".write": "data.child('permissions').hasChild(auth.uid)" 
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,当“user1”想要与“user2”共享“item1”时,他们只需写入值“user2”并将其在权限密钥下设置为 true 即可。您可以根据需要扩展“权限”键的结构(例如:协作者只能读取,但所有者可以读取和写入等)

例如,在实践中,您可能希望使用用户电子邮件地址的哈希值。另请查看“简单登录”,以获取对用户进行身份验证的简单方法(经过身份验证后,auth将自动为您设置上述安全规则中使用的变量)。