У меня есть правило пожарного депо, которое проходит, пока я не добавлю оператор OR. Разве это не должно пройти независимо от того, является ли правая сторона истинной или ложной?
allow read: if exists(/databases/$(database)/documents/companies/$(company)/users/$(request.auth.uid))
|| hasRole(['Super', 'Manager', 'Tester']);
Если я пропущу || hasRole (['Super', 'Manager', 'Tester']); Правило передает / разрешает доступ к данным.
Это связано с функцией, или я что-то упустил с операторами Or в правилах firestore?
function hasRole(roles) {
return get(/databases/$(database)/documents/companies/Seva%20Development/users/$(request.auth.uid)).data.roles.hasAny(roles);
}
companies / company / users / userId имеет несколько полей, одно из которых - роли. Роли - это массив строк (например: ["Admin", "Manager", "Tester"]).