Я обычно создаю в моих правилах функцию isAdmin
, которую затем могу вызывать из любого места.Вот пример из недавнего проекта:
function isAdmin(request) {
return request.auth.uid == "KqEizsqUQ6XMkUgLUpNxFnzLm4F3"
|| request.auth.uid == "zYXmog8ySOVRrSGVt9FHFr4wJb92"
|| (request.auth.token.email_verified && request.auth.token.email.matches(".*@google.com"))
;
}
Итак, в этом проекте группа администраторов состоит из двух UID и всех, кто входит в систему с проверенным адресом электронной почты Google.
Теперь яможете использовать эту функцию в любых других правилах, таких как:
match /users/{uid} {
allow read: if true;
allow create: if request.auth.uid == uid;
allow delete: if isAdmin(request);
}
Таким образом, любой может прочитать документы в коллекции users
, каждый пользователь может создать свой собственный документ, но только администратор может удалить эти документы.