我正在使用firebase数据库和firebase身份验证启动新应用。我对设置数据库及其规则并不熟悉。
简而言之,情况如下:app / db有一些用户和组件。 (auth)用户可以访问多个其他用户,并且用户可以包含多个组件。用户可以通过有权访问的用户访问组件。
Firebase情况
我有一个包含所有用户的user
表。这些是Firebase.Auth用户,下面的所有ID都是auth.uid
s。
我有一个access
表,其中定义了用户可以访问其他用户的内容。通常,有一个中心'用户和其他几个用户可以访问此用户。
users
id1 {user info}
id2 {user info}
id3 {user info}
id4 {user info}
id5 {user info}
access
id1
id1 true
id2 true
id3 true
id4
id2 true
id4 true
id5 true
以上意味着用户id1
,id2
和id3
可以访问id1
。 id4
的相同内容:id2
,id4
和id5
可以访问此用户。
我还有一张groups
和components
的表格。 component
是我最终想要读/写的元素。 group
只是一组按用户分组的组件(集线器,具体而言,在上例中为id1
)。
groups
id1
cm1 true
cm2 true
id4
cm3 true
components
cm1
//contains some values to read/write
cm2
//contains some values to read/write
cm3
//contains some values to read/write
在上面的代码段中,有两个groups
,id1
和id4
,对应于用户,两者都有一些组件。组件的细节位于components
表中。
问题
我想制作一个firebase规则,允许user
(即auth.uid)在component
内读取和写入当且仅当以下情况是的:
当前user
可以访问user
(在access
表中),其component
表中包含group
。 的
如何使用上面的数据库方案进行设置。或者我应该更改数据库方案以实现这一目标吗?
编辑:我使用的是firebase auth,这意味着当前用户的ID只是auth.uid