Estou tentando criar uma regra do Firebase Storage que só permite acesso a arquivos em /approved/ se o usuário tiver um campo permission: true no Realtime Database, localizado neste caminho:
/Users/{uid}/permission
Aqui está a regra que estou tentando:
service firebase.storage {
match /b/{bucket}/o {
match /approved/{fileId} {
allow read, write: if isApprovedUser();
}
}
}
function isApprovedUser() {
return request.auth != null &&
get(/databases/(default)/data/Users/$(request.auth.uid)/permission).val() == true;
}
No simulador do Firebase Console, eu o testo com um ID de usuário válido (dzS1gm71rhgTM4NYdZQ81MuceTp2), e esse caminho definitivamente existe no Realtime Database, este é o RTDB
A função isApprovedUser não funciona, e tentei várias coisas, mas no final, nenhuma delas funcionou, e não consigo descobrir qual é o problema. Até tentei remover o .val(), mas não funcionou.
O que eu tentei:
• Double-checked that the path is correct
• Ensured the user is authenticated
• Checked the Realtime Database rules (they currently allow read access for authenticated users)
• Tried changing the path casing, checked for typos