我正在开发一个带有firebase和angular and angularfire的应用程序。我想实现一个 “邀请协作者”功能与firebase本身实现协作的方式大致相同 - 也就是说,应用用户可以输入电子邮件地址来邀请协作者发送电子邮件并生成“inviteToken”,就像邀请协作者一样firebase本身。 我理解安全规则(限制协作者访问)和架构设计(一个/协作者'文件夹'?)是一个方面,可以使用本机firebase和angular来完成。我的问题是如何最好地实施邀请电子邮件和'inviteToken'?实现此类邀请功能的最便捷方式是什么?可以使用原生firebase吗?或者是否需要实现单独的服务器端代码(nodejs?)?也许来自firebase团队的人可以根据firebase本身如何实现协作来发表意见。
答案 0 :(得分:2)
您可以通过散列要与其共享特定数据的用户的电子邮件地址来实现协作,并将其存储在权限字段下。
例如,让我们从'user1'拥有的路径/ items / item1开始:
{
"items": {
"item1": {
"data": "foobar",
"permissions": {
"user1": true
}
}
}
}
您可以按如下方式设置数据的安全规则:
{
"rules": {
"items": {
"$item": {
".read": "data.child('permissions').hasChild(auth.uid)",
".write": "data.child('permissions').hasChild(auth.uid)"
}
}
}
}
现在,当'user1'想要与'user2'共享'item1'时,他们只需编写值'user2'并在权限键下将其设置为true。您可以将“权限”键的结构扩展为您想要的粒度(例如:协作者只能读取,但所有者都可以读取和写入等)。
实际上,您可能希望使用用户电子邮件地址的哈希值。另外,请查看简单登录,以便轻松验证用户身份(经过身份验证后,将自动为您设置上述安全规则中使用的auth
变量)。