基于角色的Firestore安全规则

时间:2019-01-22 04:43:17

标签: angular google-cloud-firestore angularfire2 firebase-security-rules

我编写了这些Firestore安全规则,以仅允许经过批准的用户使用数据:

service cloud.firestore {
  match /databases/{database}/documents {

    match /bikes/{document} {

     function getRole(role) {
        return get(/databases/$(database)/documents/employees/$(request.auth.uid)).data.isApproved
      }

      allow read: if getRole() == true;
      allow write: if getRole() == true;

    }
  }
}

但是收到此错误

  

core.js:12501错误错误:缺少权限或权限不足。       在新的FirestoreError(index.cjs.js:346)处

怎么了?

其他代码:

1)Firestore record

1)角度代码

getUserData() {
    this.afAuthState.authState.subscribe(user => {
      console.log(user)
      console.log("user uid")
      console.log(user.uid)
      if (user) {
          this.dao.getEmployeeByUID(user.uid).subscribe( res => {
            if (res) {
              console.log(res)
              this.employee = res
              this.role = this.employee.role
            }
            else console.log("please ask the admin for confirmation")
          })
        }
        else console.log("please login")
      })
  }

应用规则时,无法获取此(getEmployeeByUID)数据。没有规则时-很好

1 个答案:

答案 0 :(得分:0)

您的规则是在名为docs的集合下寻找匹配项,但您没有此类集合。看来您的规则应该放在名为employees的集合上。