如何为admin / moderators用户组的父节点提供写权限,为每个有效用户提供子节点的写权限?

时间:2017-01-18 06:55:11

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

我想仅为.write'节点授予posts权限给管理员/版主。但是对于它的两个属性starsstarCount,任何经过身份验证/有效的用户都可以编写。

即我希望将.write权限授予每个有效用户的两个节点(stars和starCount)。怎么做到这一点?

我当前的数据库规则:

{
  "rules": {
    "users":{
      "$uid":{
      ".read":"auth.uid === $uid",
      ".write":"auth.uid === $uid",
      ".validate": "!data.exists() && newData.hasChildren(['id','photoUrl','role','username']) && auth.uid === $uid"
        }
    }, 

    "posts":{
      "$post":{
                ".read":"auth.uid != null",
                "stars":{
                      ".write":"auth.uid != null"
                },
                "starCount":{
                    ".write":"auth.uid != null",
                },
                "author":{
                    ".write":"auth.token.role.matches(/moderator$/)"   
                },
                "approvedBy":{
                    ".write":"auth.token.role.matches(/moderator$/)"
                },
                "body":{
                    ".write":"auth.token.role.matches(/moderator$/)"
                },
                "commentcount":{
                    ".write":"auth.token.role.matches(/moderator$/)" 
                },
                "title":{
                    ".write":"auth.token.role.matches(/moderator$/)" 
                },
                "timeStamp":{
                    ".write":"auth.token.role.matches(/moderator$/)" 
                },
                "url":{
                    ".write":"auth.token.role.matches(/moderator$/)" 
                },
                "uid":{
                    ".write":"auth.token.role.matches(/moderator$/)" 
                },
                "url_profile_pic":{
                    ".write":"auth.token.role.matches(/moderator$/)" 
                }
                    }

数据库架构图:

database_schema_image

0 个答案:

没有答案