Firebase规则 - 允许一个用户顶级写入和其他用户写入自己的子节点

时间:2015-06-16 16:24:47

标签: firebase firebase-security

我很难弄清楚Firebase规则应该如何限制我的阅读/写作。

我正在使用Firebase中的队列系统,其结构如下

"eventQueues": {
    "event1": {
        "owner": "simplelogin:1",
        "queue": {
            "simplelogin:2": {"someinfo": "..."},
            "simplelogin:3": {"someinfo": "..."},
            "simplelogin:4": {"someinfo": "..."}
        }
    },

    "event2": {...},

    ...
}

我想实现以下目标:

  • 任何人都可以阅读数据

    ".read": true
    
  • 任何用户都可以创建(并编辑任何部分)某个活动,但必须是该活动的所有者。

我相信这可以通过以下方式实现:

    ".write" : "auth != null && 
         (data.child('owner').val() == auth.uid ||
         newData.child('owner').val() == auth.uid)"
  • 任何用户都可以将自己的条目添加到事件的队列中,但不能更改队列中的任何其他内容,也不能将自己从队列中删除。

这是我遇到麻烦的地方,我能够提出的最好的是以下内容(将与上面的写规则相结合)

    ".write": "!data.child(auth.uid).exists()"

但据我所知,这仍然允许用户写入除了与他们自己的uid相对应的队列条目之外的任何内容。

那么我能以任何方式制定一个规则,允许非事件所有者只将自己添加到队列中,而不是其他任何东西吗?

0 个答案:

没有答案