Comment utiliser Firebase Auth avec Firestore en flutter

Sep 06 2020

J'ai une application flutter basée sur cloud_firestore et firebase_auth , j'ajoute un utilisateur (bouton bleu) par authentification firebase, et j'ai conservé l' ID dans le code pour que cet utilisateur soit l' administrateur , les utilisateurs réguliers peuvent créer un compte par application (email et mot de passe) , Ce que je veux, c'est m'assurer que l' administrateur est le seul à pouvoir supprimer des données de la base de données, tandis que le reste des utilisateurs ne sont autorisés qu'à lire et à écrire, alors j'ai fait ceci:

J'ai changé les rôles dans mon projet Cloud Firestore pour ceci:

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';
    }
  }
}

Est-ce vrai ou non, et comment Firebase peut-il être sensible à uid ?

Peut-être que ma question est de savoir comment envoyer l' uid avec la firestoredemande.

Merci d'avance

Réponses

1 FrankvanPuffelen Sep 06 2020 at 21:21
  1. Si vous avez une writerègle, ces règles permettent de créer, mettre à jour et supprimer des opérations.
  2. Si vous avez plusieurs règles pour la même opération, elles sont OU ensemble.

Cela signifie que votre allow read, write: if request.auth != nullpermet à tout utilisateur authentifié de créer, mettre à jour et supprimer tout document de la base de données.

Si vous souhaitez uniquement autoriser un utilisateur authentifié à créer ou mettre à jour un document, mais que vous souhaitez uniquement que l'utilisateur avec cet UID spécifique supprime les documents, vous devez nommer explicitement ces opérations:

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

Pour plus d'informations, consultez la documentation sur les opérations granulaires .