Доступ к полю в документе правила Firestore не работает - PullRequest
0 голосов
/ 29 мая 2019

Я пишу правила Firestore для приложения для Android, которое я сейчас разрабатываю.У меня проблемы с написанием правил безопасности.Я хочу иметь коллекцию редакторов, в которой каждый документ назван по имени userId и хранит в себе роль этого userId.

Путь к документу для каждого редактора - users / (userId данных владельца, к которым осуществляется доступ) / editors / (userId для доступа к пользователю).Поле, содержащее роль, - «Роль», и в настоящее время единственная роль - «Владелец».Таким образом, он отображается в базе данных как роль: «Владелец».

match /users/{userId} {
    allow read, write: if getUserData().Role == "Owner";   
}

function isSignedIn() {
    return request.auth != null;
}

function getUserData()
{
    return get(/databases/$(database)/documents/users/$(userId)/editors/$(request.auth.uid)).data;
}

Имитация чтения и записи в настоящее время запрещена.

1 Ответ

0 голосов
/ 30 мая 2019

Учитывая, как распределены ваши функции, вам нужно будет передать userId в вызов getUserData:

match /users/{userId} {
    allow read, write: if getUserData(userId).Role == "Owner";   
}

function isSignedIn() {
    return request.auth != null;
}

function getUserData(userId)
{
    return get(/databases/$(database)/documents/users/$(userId)/editors/$(request.auth.uid)).data;
}
...