获取.read和.write安全规则为组工作

Mic*_*ins 12 firebase angularfire

我在编写用于构建基于团队的协作平台的安全规则时遇到困难.

  1. 当用户注册时,他们应该能够创建一个团队并邀请用户加入该团队.
  2. 项目应归团队所有.
  3. 只有该团队中的用户才能查看该项目.
  4. 用户应该只看到他们所属的团队.

如何编写.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)"
            }
          }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我应该只列出两个队,因为我属于他们github:8272012.

在此输入图像描述

在此输入图像描述

Sar*_*ara 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()" 
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法看到您为每个项目存储的数据,但如果您存储对项目团队的引用,您也可以在安全规则中使用该数据.