У меня есть узел adminContent в моей базе данных Firebase, который должен быть доступен только для чтения / записи, если для пользователя установлено значение admin в качестве пользовательского утверждения.
Следующий код показывает, что один из моих тестовых пользователей HAS admin установил значение true в качестве заявки, а один тестовый пользователь НЕ БЫЛ (поэтому проблема, похоже, не в корректной настройке заявки):
/* Check if admin */
firebase.auth().currentUser.getIdTokenResult().then(function(idTokenResult) {
if (idTokenResult.claims.admin) {
// THIS PART IS EXECUTED
}
});
Это мои правила:
{
"rules": {
"metadata": {
"$user_id": {
// Read access only granted to the authenticated user.
".read": "$user_id === auth.uid",
// Write access only via Admin SDK.
".write": false
}
},
"adminContent": {
".read": "auth.token.admin === true",
".write": "auth.token.admin === true",
}
}
}
Оба тестовых пользователя (один с заявкой администратора и один без) могут читать и писать в adminContent.И когда я тестирую симулятор по правилам на консоли Firebase с UID обоих пользователей, никто не получает разрешения.
Структура данных выглядит следующим образом:
adminContent
adminEmails
announcements
metadata
...
users
...
Что-то не так с моимправила?Почему симулятор и реальный сценарий отличаются?