我在编写用于构建基于团队的协作平台的安全规则时遇到困难。
如何编写.read安全规则,以便用户只能看到他们所在的团队的信息?
我应该只列出两支队伍,因为我属于他们github:8272012。
当前安全规则:
{
"rules": {
".read": true,
"users": {
"$user": {
//can add a message if authenticated
".write": "auth.uid === $user"
}
},
"teams": {
"$team": {
"users": {
// can write to the users list only if ADMINISTRATOR
"$user": {
".write":"newData.parent().child(auth.uid).val() === 99"
}
}
}
},
"projects": {
"$team": {
"$project": {
//can add a message if they are a MEMBER
".write": "(!data.exists() && newData.exists() && root.child('teams/' + $team + '/users/' + auth.uid).val() >= 10)"
}
}
}
}
}
我应该只列出两个团队,因为我属于他们github:8272012
。
答案 0 :(得分:10)
以下安全规则仅为项目团队中的用户提供项目的读写访问权限(假设您为每个用户添加/projects
节点以指示用户有权访问哪些项目):
"rules": {
"projects": {
"$project": {
".read": "root.child('users').child(auth.uid).child('projects').val().child($project).exists()" ,
".write": "root.child('users').child(auth.uid).child('projects').val().child($project).exists()"
}
}
}
我无法看到您为每个项目存储的数据,但如果您存储对项目团队的引用,您也可以在安全规则中使用该数据。