Firebase规则可防止删除

时间:2017-08-01 03:47:51

标签: json firebase firebase-realtime-database firebase-security

我有一个火线结构的东西沿着这条线 -

root {
 groups {
    gid: {  //group ID
       authid: ... //group creator's uid
       members: { //uid of members
          ...
       }
       posts: {
          ...  //posts ID
       }
    }
  }
}

我想要这些功能 -

  1. 任何用户都可以创建新组。这意味着我需要对' / groups /'提供写访问权限。给每个人授权。但是它们不应该为整个节点设置null。所以,我可以这样做".write":"(!data.exists() && auth.uid != null) || (data.exists() && newData.exists()"
  2. 只有作者才能删除单个组。这意味着我需要 允许将null设置为作者的各个组节点。这是我被困的部分。因为,较浅的规则会覆盖更深层的规则。所以,如果我只是写

    " groups":{    " $ gid":{        " .write":"!newData.exists()&& data.child(' authid')。val()=== auth.uid"    }  }

    这将被忽略。

  3. 我不想要任何人,甚至是作者都要将null设置为组内的各个节点。这意味着作者可以删除整个组,但不能删除成员节点

1 个答案:

答案 0 :(得分:1)

现在你要求写操作后没有数据。

你想要的是没有数据

".write": "
    (data.exists() && !newData.exists() && data.child('authid').val() === auth.uid)
 || (data.exists() && newData.exists() && data.child('members').child(auth.uid).exists())
 || (!data.exists() && newData.child('authid').val() === auth.uid)
"

行:

  1. 允许所有者删除。
  2. 允许任何成员进行更新(假设所有者也是其成员)。
  3. 允许任何人创建,只要他们自己成为所有者。