Я пытаюсь защитить свои файлы Firebase (облачное хранилище Google) на основе пользовательских данных.В Firestore я использую правило, основанное на получении содержимого базы данных (найдите uid в таблице пользователей и сопоставьте поле), и это работает нормально.Я пытаюсь использовать те же правила в хранилище Firebase, но в симуляторе я получаю Error: simulator.rules line [12], column [17]. Function not found error: Name: [get].; Error: Invalid argument provided to call. Function: [get], Argument: ["||invalid_argument||"]
.Мои правила выглядят так:
match /b/{bucket}/o {
function isAuth() {
return request.auth != null && request.auth.uid != null
}
function isAdmin() {
return isAuth() &&
"admin" in get(/databases/$(database)/documents/users/$(request.auth.uid)).data.roles;
}
function clientMatch(client) { // expects user's "client" field to be ID of client
return isAuth() &&
client == get(/databases/$(database)/documents/users/$(request.auth.uid)).data.client;
}
match /P/Clients/{client}/{allPaths=**} {
allow read, write: if isAdmin() || clientMatch(client);
}
}
}
Строка 12 начинается с client == get
в clientMatch()
.Я не смог сказать, поддерживаются ли эти функции только для правил Firestore (db), или они также должны работать для хранилища.
Если это не сработает, каковы мои варианты?Как люди ищут пользовательские данные для безопасности хранилища Firebase?