#firebase-realtime-database #firebase-security
#firebase-база данных в реальном времени #firebase-безопасность
Вопрос:
Я использую Firebase Auth и прочитал много документации по правилам безопасности, пользовательским заявлениям, облачным функциям, но я действительно запутался.
Рассмотрим следующую структуру данных
{
"company": {
"idCompany1": {"data": "Restricted to Company1s users"},
"idCompany2": {"data": "Restricted to Company2s users"}
},
"users": {
"idUser1": {
"companies": {
"idCompany1": true
}
},
"idUser2": {
"companies": {
"idCompany1": true,
"idCompany2": true
}
}
}
}
Я хотел бы реализовать простое правило в консоли Firebase (правило безопасности Firebase) без изменения моей структуры данных.
Правило, которое я хотел бы настроить: пользователь может читать или записывать информацию только в компаниях, которым она принадлежит (users / $ idUser /companies / $ idCompany === true на пути company /$ idCompany)
На данный момент я только настроил:
{
"rules": {
"company" : {
".read": "auth != null",
".write": "auth != null",
}
}
},
"users" : {
"$user_id" : {
".read": "auth != null",
".write": "auth.uid === $user_id"
}
}
Как я могу настроить это правило безопасности Firebase в консоли Firebase?
Ответ №1:
Похоже, вы ищете:
{
"rules": {
"company" : {
"$companyid": {
".read": "root.child('users').child(auth.uid).child('companies').child($companyid).val() === true"
}
}
}
}
Это позволит пользователю читать /company/$companyid
для любой компании, где она указана в их профиле.
Примечание: вы не сможете прочитать /company
само по себе, поскольку правила не являются фильтрами.
Комментарии:
1. Да, я так думаю. Я протестирую это.