Ролевый доступ к FireStore - PullRequest
       6

Ролевый доступ к FireStore

0 голосов
/ 21 апреля 2020

Я пытаюсь реализовать доступ на основе ролей к Firebase Firestore, но, хотя я взглянул на документацию Googles, я не смог заставить ее работать. Я установил строку «роль» в каждом документе пользователя. Сам документ имеет пользовательский идентификатор пользователя.

Мое правило доступа к коллекции пользователей выглядит следующим образом, и правило записи должно быть неправильным:

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{document} {
      allow read: if get(/databases/$(database)/documents/users/$(request.auth.id)/role/$(role)) == "Mitarbeiter"
   }
  }
}

FireStore

Ошибка консоли XCode:

[Firebase/Firestore][I-FST000001] Listen for query at users/EStQNC4cYcaSnKpxs4XnQf96brm2 failed: Missing or insufficient permissions.

1 Ответ

1 голос
/ 21 апреля 2020

Путь к вашему документу get() ищет внутри коллекции под названием "роль", но у вас ее нет:

/users/$(request.auth.id)/role/$(role)

Кроме того, у вас нет переменной с именем "роль", которую мы можем увидеть здесь .

Используя то, что вы показали, похоже, что вам нужна роль в самом документе, поэтому нет необходимости в get(). Просто проверьте это так:

allow read: if resource.data.role == "Mitarbeiter";
...