Я пытаюсь установить некоторые правила безопасности в FireBase без удачи. В основном мне нужно проверить, была ли заблокирована информация пользователя или нет, основываясь на его номере телефона. Вот что у меня есть:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if exists(/databases/$(database)/documents/access/+17777777777);
}
match /globals/{document=**} {
allow read: if true;
}
match /requests/{document=**} {
allow write: if true;
}
}
}
Если я жестко закодирую число в самом правиле, оно делает то, что должно. Если я использую $(reqest.auth.token.phone_number)
, это не работает.
allow read, write: if !exists(/databases/$(database)/documents/access/$(reqest.auth.token.phone_number));
Я также пытался с get
согласно этот вопрос :
allow read, write: if get(/databases/$(database)/documents/access/$(reqest.auth.token.phone_number)).blocked == true ||
get(/databases/$(database)/documents/access/$(reqest.auth.token.phone_number)).data.blocked == true;
Моя структура данных выглядит так
access | +17777777777 | blocked = true
Я также попытался перевернуть структуру:
access | blocked | +17777777777 = true
А вот полезная нагрузка аутентификации с симулятора
{
"uid": "19687a6s87d68as7d968as7d9a8sd",
"token": {
"sub": "19687a6s87d68as7d968as7d9a8sd",
"aud": "my-app",
"email": "",
"email_verified": false,
"phone_number": "+17777777777",
"name": "",
"firebase": {
"sign_in_provider": "google.com"
}
}
}