[REQUIRED] Environment info
firebase-tools: 11.16.1
Platform: Windows
[REQUIRED] Test case
Use cross-service security rule (i.e. firestore.get()) in storage.rules:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /courses/{courseId}/files/{fileName} {
allow get: if firestore.get(/databases/(default)/documents/courses/$(courseId)).data.users[request.auth.uid].exists;
}
}
}
Add the following document to Emulator's Firestore at courses/course1:
{
users: {
user1: { exists: true }
}
}
[REQUIRED] Steps to reproduce
Download file from storage using the JavaScript client SDK:
const storage = getStorage();
const fileRef = ref(storage, 'courses/4VnY71FQeT6XDAGNDjSSX/files/foo.txt');
const url = await getDownloadURL(fileRef);
const response = await fetch(url);
[REQUIRED] Expected behavior
Based on this announcement: https://firebase.blog/posts/2022/09/announcing-cross-service-security-rules, I expected cross-service security rules to be supported automatically for firebase-tools@11.10.0 and above.
[REQUIRED] Actual behavior
firestore.get() inside the storage rules results in this exception, so the security rule never allows the request:
com.google.firebase.rules.runtime.common.EvaluationException: Error: C:\Users\...\storage.rules line [5], column [31]. Service call error. Function: [firestore.get], Argument: [path_value {
segments {
simple: "databases"
}
segments {
simple: "(default)"
}
segments {
simple: "documents"
}
segments {
simple: "courses"
}
segments {
simple: "4VnY71FQeT6XDAGNDjSSX"
}
}
].
[REQUIRED] Environment info
firebase-tools: 11.16.1
Platform: Windows
[REQUIRED] Test case
Use cross-service security rule (i.e.
firestore.get()) in storage.rules:Add the following document to Emulator's Firestore at
courses/course1:[REQUIRED] Steps to reproduce
Download file from storage using the JavaScript client SDK:
[REQUIRED] Expected behavior
Based on this announcement: https://firebase.blog/posts/2022/09/announcing-cross-service-security-rules, I expected cross-service security rules to be supported automatically for firebase-tools@11.10.0 and above.
[REQUIRED] Actual behavior
firestore.get()inside the storage rules results in this exception, so the security rule never allows the request: