我的Web应用程序与99%的应用程序一样,在db中具有一组用户。我可以通过/ user /访问用户,因此我设置了规则,以允许每个用户仅访问其数据。
但是我需要每个用户都加入一个组
/user/34029380432
- name: realtebo
- group_id: 123
- isAdmin: true
/group/123
- a lot of shared data, all members can erad, only isAdmin can write
如何设置一个规则,该规则仅允许每个组的成员读取它,而仅admin成员写入组数据?!
当然,我可以在每个组和每个组内的设置和侧面下,以数组的形式交换边,成员列表。
但是我无法撰写JavaScript规则。
答案 0 :(得分:1)
我认为您可以做的是在组对象中包含一条消息和用户节点。您可以使用安全规则访问该数据节点的父对象,并通过使用exist()来查看该用户是否是用户对象节点的成员
/group/123
- messages // a lot of shared data, all members can read, only isAdmin can write
- users // list of user uids that are added to this group
- admins // list of admin uids
"group": {
"$groupId": {
"messages": {
".read": "data.parent().child('users').child(auth.uid).exists()",
".write": "data.parent().child('admins').child(auth.uid).exists()"
}
}
}