Правила 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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