Как настроить ПРАВИЛА для управления чтением / записью и удалением в коллекции (ЗАПИСИ) на основе пользовательских ролей, определенных в другой коллекции (ПОЛЬЗОВАТЕЛИ)?
---- Коллекция пользователей ----
USERS: {
<RandomID1> : { uid: 234, email: "abc@xyz.com", role: "ENDUSER" },
<RandomID2> : { uid: 100, email: "def@xyz.com", role: "ADMIN" }
}
---- Коллекция записей ----
RECORDS: {
<RandomID1> : { uid: "234", name: "Record 123" },
<RandomID2> : { uid: "234", name: "Record 456" },
<RandomID3> : { uid: "999", name: "Record 999" } /* another user's record */
}
---- Текущие правила ----
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Предполагается, что пользователь зарегистрирован в веб-приложении и использует клиентский Firebase SDK, как добиться следующих случаев?
IFF: USERS.RandomID1.role = 'ENDUSER'
- Как ограничить пользователя ЧТЕНИЕ только его записей из ЗАПИСЕЙ, а не чужих?
Как ограничить ОБНОВЛЕНИЯ только их записями в ЗАПИСИ?
Как ограничить УДАЛЕНИЯ для всех своих записей в ЗАПИСИ?
- Как ограничить все операции CRUD для остальных коллекций (/ COLLECTION **), кроме RECORDS?
IFF: USERS.RandomID1.role = 'ADMIN'
Как разрешить этому пользователю (Администратору) выполнять все операции CRUD в ЗАПИСИ?
Итак, как переписать или обновить правила для управления этими операциями? Если нет, есть ли лучшие проекты или альтернативы?
Примечание: нам нужно обрабатывать эти случаи, чтобы заблокировать некоторых пользователей / хакеров, которые могут попытаться открыть консоль браузера / окно проверки и выполнить запросы к хранилищу с помощью или без каких-либо условий.
Благодарю за вашу помощь!