Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

171
Views
La regla Firebase Cloud Firestore permite obtener pero no listar

Estoy intentando configurar la autenticación basada en roles en Cloud Firestore. La intención es configurarlo para que solo los usuarios dentro de una organización puedan leer la organización o los eventos asociados. Funciona cuando el cliente solicita un solo documento (get), pero no una consulta de documentos (lista).

Mi colección llamada organizations se ve así, hasta ahora solo contiene un solo documento con ID devtest :

 { "name": "Dev Test" "users": [ "STFg0EvGemTaD2r9jyby0UMSt6O2" ] "orgid": "devtest" }

También tengo una colección de events (hasta ahora solo contiene uno):

 { "name": "foo", "orgid": "devtest", ... }

Y mis reglas se ven así:

 rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { function isSignedIn() { return request.auth != null; } function userIsUser() { return isSignedIn() && request.auth.uid in get(/databases/$(database)/documents/organizations/$(resource.data.orgid)).data.users; } match /organizations/{org} { allow read: if userIsUser(); allow write: if false; } match /events/{event} { allow read: if userIsUser(); allow write: if userIsUser(); } } }

Lo que me confunde es por qué puedo obtener y tiene éxito, por ejemplo:

 firebase.firestore().collection('organizations').doc('devtest').get()

pero cuando intento una consulta falla, por ejemplo:

 firebase.firestore().collection('organizations').where('users', 'array-contains', firebase.auth().currentUser ? firebase.auth().currentUser.uid : false)

responde con permiso denegado. Sé que una regla de seguridad no es un filtro, solo hay un documento en la colección en este momento.

¿Alguna sugerencia sobre lo que me podría estar perdiendo?

¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

De acuerdo con esta documentación , el uso de objetos de autenticación causa problemas directamente, ya que pueden estar en un estado intermedio. Se recomienda que también cree un agente de escucha de autenticación que espere a que cambie el estado.

Al usar un observador, se asegura de que el objeto Auth no esté en un estado intermedio, como la inicialización, cuando obtiene el usuario actual. Cuando usa signInWithRedirect, el observador onAuthStateChanged espera hasta que getRedirectResult se resuelva antes de activarse.

Si esto sucede en su consulta, podría explicar por qué le da el error de permisos, ya que el objeto aún puede estar inicializándose y resolviéndose como falso en lugar de verdadero.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!