У меня проблемы с поиском наилучшего решения для настройки нескольких групп и пользователей в Firestore.
Ниже вы можете увидеть структуру и правила, которые работают до тех пор, пока группа не захочет перечислить всех участников по имени, как должны быть настроены правила для этого?
Или выпорекомендовать другую структуру для моей настройки?
users: [
"userId" {
"name" : "Name",
"groups" : ["groupId", "groupId", "groupId"]
}
]
groups: [
"groupId" {
"name" : "Name",
"members" : ["uid1", "uid2", "uid3"]
}
]
contacts: [
"contactId" {
"name" : "Name",
"owner" : "groupId"
}
]
Правила Firestore
function member(groupId) {
return request.auth.uid in get(/databases/$(database)/documents/groups/$(groupId)).data.members;
}
match /users/{userId} {
allow read; // <--- how to allow only same group members to read?
allow write: if request.auth.uid == userID;
}
match /groups/{groupId} {
allow read: if request.auth.uid in resource.data.members;
allow write: if request.auth.uid in resource.data.admins;
}
match /contacts/{contactID} {
allow read: if member(resource.data.owner);
allow write: if member(request.resource.data.owner);
}