A regra de segurança do Firestore get () não funciona
apenas uma pergunta simples: o que há de errado nisso e por que isso não está funcionando?
Tentando obter acesso com o usuário que tem a função 'admin' na seção de usuários do/ títulos / {anyTitle} mas ainda assim
Permissões ausentes ou insuficientes.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow write: if false;
allow read: if false;
}
function userCanWrite () {
return get(/databases/{database}/documents/users/$(request.auth.uid)).data.role == "admin";
}
match /titles/{anyTitle=**} {
allow read: if request.auth != null;
allow write: if userCanWrite();
}
}
}
Aqui está a minha estrutura de banco de dados
P.S.Eu tentei outra regra a partir de documentos oficiaisget(/databases/{database}/documents/users/$(request.auth.uid)).data.isAdmin == true;
e isso também não está funcionando
ATUALIZAÇÃO: MANEIRA CORRETA DE O FAZERO suporte me ajudou a encontrar a solução, é assim que você deve fazer:
estrutura db:
usuários -> {{userid}} -> {role: "admin"}
configurações de regra do banco de dados:
get (usersPath / $ (request.auth.uid)). role == "admin" || get (usersPath / $ (request.auth.uid)). data.role == "admin";