firebase / flutterfire

🔥 A collection of Firebase plugins for Flutter apps.
https://firebase.google.com/docs/flutter/setup
BSD 3-Clause "New" or "Revised" License
8.73k stars 3.98k forks source link

🐛 [rtdb, firestore, storage] permission denied errors are unhelpful #15707

Open cbenhagen opened 2 weeks ago

cbenhagen commented 2 weeks ago

Whenever we get a permission denied error (due to Rules), they are unhelpful. The expectation is to see the path and operation that failed, and optionally the JSON payload that was sent

How it works today

RTDB:

[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: [firebase_database/permission-denied] 
Client doesn't have permission to access the desired data.

Firestore

[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: [cloud_firestore/permission-denied] 
The caller does not have permission to execute the specified operation.

Cloud Storage

FLTFirebaseStorage: An unknown error occurred while calling method Reference#getDownloadURL

Ideal outcome

RTDB:

[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: [firebase_database/permission-denied] 
Client doesn't have permission to read /foo/bar/baz.

Firestore

[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: [cloud_firestore/permission-denied] 
The caller does not have permission to write /foo/bar/baz with payload {"hello": "world"}

Cloud Storage

FLTFirebaseStorage: An unknown error occurred while calling method Reference#getDownloadURL 
for "gs://foo.appspot.com/foo/bar/baz.jpg"

Resources

Firestore codepaths seem to have enough context to give better error messages without a big lift

273227315-3a11ba99-ff26-4c09-b93a-cb36c06d1fc7

This is a copy of issue #11677 which was most likely closed due to a user landing on the issue through a web search and then later commenting that it was fixed when his unrelated permission issue was solved.

/cc @lukepighetti