Правила Firestore в нескольких базах данных возвращают отказ в разрешенииJavascript

Форум по Javascript
Anonymous
Правила Firestore в нескольких базах данных возвращают отказ в разрешении

Сообщение Anonymous »

Я пытаюсь настроить правила Firestore так, чтобы пользователь мог получить доступ к информации в коллекции в базе данных-получателе только в том случае, если путь к этой коллекции содержит идентификатор, хранящийся в базе данных (по умолчанию).
База данных по умолчанию содержит следующий документ:

Код: Выделить всё

users/abcd:
{
companyId: 'efgh'
}
Если я настрою свои правила в базе данных-получателе следующим образом:

Код: Выделить всё

rules_version = '2';

service cloud.firestore {
match /databases/{database}/documents {
function getUserCompany() {
return get(/databases/(default)/documents/users/$(request.auth.uid)).data.companyId;
}

match /co/{cid}/{documents=**} {
allow read, write: if getUserCompany() == cid
}
}
}
Затем выполните аутентификацию с помощью uid abcd, затем

Код: Выделить всё

 getDoc('/co/efgh/some/document')
в базе данных-получателе происходит сбой с FirebaseError: отсутствуют или недостаточны разрешения.
Если я проверю этот вызов с помощью Rules Playground, он успешно.
Если я использую тот же набор правил в базе данных (по умолчанию), а затем делаю тот же вызов getDoc() в базе данных (по умолчанию), все будет успешно.< /p>
Он терпит неудачу только тогда, когда пользователь проходит аутентификацию через клиент Firebase Javascript (10.4.0) и получает доступ к базе данных-получателю.
Должны ли подобные правила работать в разных базах данных?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ion-denied

Вернуться в «Javascript»