Cómo usar Firebase Auth con Firestore en flutter

Sep 06 2020

Tengo una aplicación de flutter basada en cloud_firestore y firebase_auth , agrego usuario (botón azul) mediante Authentication firebase, y mantengo la ID en el código para que este usuario sea el administrador , los usuarios regulares pueden crear una cuenta por aplicación (correo electrónico y contraseña) , Lo que quiero es asegurarme de que el administrador sea ​​el único que pueda eliminar datos de la base de datos, mientras que el resto de los usuarios solo pueden leer y escribir, así que hice esto:

Cambié las funciones en mi proyecto de Cloud Firestore a esto:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
      allow delete : if request.auth.uid == 'psqxVzX6BvYCuWbajhcEK1QGZOo1';
    }
  }
}

¿Es esto cierto o no, y cómo puede Firebase ser sensible al uid ?

Quizás mi pregunta es cómo enviar el uid con la firestoresolicitud.

Gracias de antemano

Respuestas

1 FrankvanPuffelen Sep 06 2020 at 21:21
  1. Si tiene una writeregla, esa regla permite crear, actualizar y eliminar operaciones.
  2. Si tiene varias reglas para la misma operación, se unen en OR.

Esto significa que allow read, write: if request.auth != nullpermite que cualquier usuario autenticado cree, actualice y elimine cualquier documento en la base de datos.

Si solo desea permitir que cualquier usuario autenticado cree o actualice un documento, pero solo desea que el usuario con ese UID específico elimine documentos, debe nombrar explícitamente esas operaciones:

allow read, create, update: if request.auth != null;
allow delete: if request.auth.uid == 'psqxVzX6BvYCuWbajhcEK1QGZOo1';

Para obtener información completa, consulte la documentación sobre operaciones granulares .