У меня есть коллекция пользователей:
users:
userUid:
group: "group_1"
name: "Paul"
userUid:
group: "group_1"
name: "Gregor"
userUid:
group: "group_2"
name: "Mary"
и коллекция ShoppingLists:
shoppingList:
listUid:
isActive: true,
group: "group_1",
name: "list_ONE"
listUid:
isActive: false,
group: "group_1",
name: "list_TWO"
listUid:
isActive: true,
group: "group_2",
name: "list_THREE"
Я хотел бы ограничить доступ к чтению / обновлению, чтобы только люди, принадлежащие к определенной группе, могли редактировать / читать документы в той же группе.
Я пытался с помощью следующего правила, просматривая документы , но в симуляторе консоли Firabase я получаю "неизвестную ошибку" и не получаю никакой подсказки консоли об этом:
service cloud.firestore {
match /databases/{database}/documents {
function signedIn() {
return request.auth.uid != null;
}
function getGroup(usr) {
return usr.data.group;
}
function isInGroup(usr, groupName) {
return signedIn() && (getGroup(usr) == groupName);
}
match /users/{user} {
// Read access needed to get the user group
allow read: if signedIn();
}
match /shoppingLists/{shoppingList} {
// Everybody can create a new list
allow create: if signedIn();
// Only people from the list group can read/update that list
allow read: if isInGroup(get(/databases/$(database)/documents/users/$(request.auth.uid)), resource.data.group);
allow update: if isInGroup(get(/databases/$(database)/documents/users/$(request.auth.uid)), request.resource.data.group)
&& request.resource.data.isActive;
}
}
}