Что я понял из вашего вопроса, так это то, что вы хотите дать read, write
для /teachers/{teacher}/classes/{class}
некоторым пользователям с ролью headmaster
.
Для этого сначала вам нужно проверить, какие пользователи headmasters
.
Если идентификатор документа вашего учителя совпадает с идентификатором пользователя, созданным в firebase auth, вы можете добавить поле данных в ваш документ учителя с именем isHM
и установить его на true
, если пользователь является директором:
collection (teachers): {
doc (id): {
name: name
lastName: lastName
isHM: true
collection (classes): {
doc (id): {
name: math
}
}
}
}
Теперь добавьте следующее правило:
service cloud.firestore {
match /databases/{database}/documents {
match /teachers/{teacher}/classes/{class} {
function isHeadMaster() {
return get(/databases/$(database)/documents/teachers/$(request.auth.uid)).data.isHM;
}
// HM can read, write classes
allow read, write: if isHeadMaster == true;
}
}
}
, иначе вам нужно создать другую коллекцию с идентификатором пользователя firebase в качестве идентификатора документа и добавить поле isHM
, если пользовательдиректор:
collection (headmasters): {
doc (uid): {
----
isHM: true
----
}
}
, а затем добавьте следующее правило:
service cloud.firestore {
match /databases/{database}/documents {
match /teachers/{teacher}/classes/{class} {
function isHeadMaster() {
return get(/databases/$(database)/documents/headmasters/$(request.auth.uid)).data.isHM;
}
// HM can read, write classes
allow read, write: if isHeadMaster == true;
}
}
}
Чтобы найти дополнительные правила доступа на основе ролей, установите флажок https://firebase.google.com/docs/firestore/solutions/role-based-access