Правила безопасности Firestore, основанные на роли - PullRequest
0 голосов
/ 22 января 2019

Я написал эти правила безопасности 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) Запись о пожаре

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 голосов
/ 22 января 2019

Ваше правило ищет совпадения в коллекции под названием docs, но у вас нет такой коллекции. Кажется, ваше правило должно быть помещено в коллекцию под названием employees.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...