Regras e estrutura do banco de dados do Firestore para compartilhar documentos entre usuários
Estou tentando criar um aplicativo que permita aos usuários colaborar em listas. Todo usuário precisa ser convidado para poder trabalhar na lista.
Estruturei meus dados assim (vagamente com base emesta postagem no blog) Além disso, essa estrutura pode ser alterada, se necessário.
list
list_1:
users:
owner:
[email protected]: true
shared:
[email protected]: true
[email protected]: true
id
name
items:
item_1:
id:
name:
...
O que estou tentando alcançar: todos devem ser capazes de criar listas. O criador então se torna o proprietário da lista criada. Somente o proprietário e os usuários no documento "compartilhado" devem poder ler e gravar nesta lista.
Eu acho que as configurações de permissão devem ser algo como isto. Mas isso não está funcionando:
service cloud.firestore {
match /databases/{database}/documents {
match /lists/{listId}/{anything=**} {
allow read, write: if !exists(resource.data.users.owner) ||
resource.data.users.owner == request.auth.token.email ||
, request.auth.token.email in resource.data.users.shared
}
}
}