我们想在我们的(主要是非Firebase托管的)项目中使用Firepad,但我们遇到了一些麻烦,找出解决问题的最佳方法。
基本上,我们有很多用户,每个用户都可以是许多组的成员。这些“组”每个都有自己的Firepad,用户可以编辑。我们已经使用MySQL开发了一个深度开发的数据库结构,并且现在不想将我们的用户数据迁移到Firebase中,所以我们认为我们会更有创意。
我们不希望用户能够编辑他们不属于的组的Firepad。因此,作为我们的身份验证令牌的一部分,我们认为我们会尝试发送用户ID和他们所属的组列表。然后,使用Firebase JSON安全系统,我们可以验证当前正在编辑的Firepad是否在用户所属的组列表中。
问题是,JSON系统似乎不接受很多命令。没有indexOf,我无法在hasChild
变量上调用auth
。
我们如何确保用户只能编辑他们所属群组的Firepad,而无需将所有数据迁移到Firebase? (或者维护数据库的两个副本 - 一个在MySQL上,一个在Firebase上)
答案 0 :(得分:10)
这里的诀窍是使用一个对象而不是一个数组来存储组(我知道这有点尴尬。我们会尝试使这更容易/更直观)。因此,在您的身份验证令牌中,您可以存储以下内容:
{ userid: 'blah', groups: { 'group1': true, 'group2': true, ... } }
然后在您的安全规则中,您可以使用以下内容:
{
...
"$group": {
".read": "auth.groups[$group] == true",
".write": "auth.groups[$group] == true"
}
}
然后用户将具有对/ groups /< group>的读/写访问权限。仅当< group>是他们的身份证明。