Я почесаю голову, потому что защита Firebase работает, как я хочу. Мое приложение построено с Ember и так с EmberFire. Таким образом, структура определяется EmberFire.Как защитить мою Firebase App build с помощью EmberFire
Моя структура базы данных выглядит следующим образом:
conversations : {
$conversation_id {
messages {
//message data
}
users {
$user_id1 :true
$user_id2 :true
}
}
}
Что я хочу, что можно увидеть и написать сообщение в этом разговоре только пользователи, которые являются частью разговора. Я попробовал это правило без успеха:
"conversations" : {
".indexOn" : "notify",
".read" : "auth !== null && root.child('users').hasChild(auth.uid)",
".write": "auth !== null && root.child('users').hasChild(auth.uid)"
}
Кажется, что auth.uid не может быть передан в имеетРебенок. Я также попытался следующий, потому что мой разговор идентификатор джойна идентификатора пользователей, которые участвуют в разговор:
"conversations" : {
".indexOn" : "notify",
"$conversation" : {
".read" : "auth !== null && ($conversation.beginsWith(auth.uid) || $conversation.endsWith(auth.uid))",
".write": "auth !== null && ($conversation.beginsWith(auth.uid) || $conversation.endsWith(auth.uid))"
}
}
С этим правилом, никто не может видеть разговор, потому что узел «разговоры» не имеет .read правила , Но если я добавлю «.read: true» к узлу «разговоров», из-за правил top-bottom в Firebase, все пользователи могут видеть все разговоры.
Редактировать: второе правило имеет ту же проблему, что и первая. beginWith() ожидает строковый аргумент. И auth.uid не может быть использован Любая идея для решения моей проблемы?
Редактировать: Добавить auth! == null перед правилом, делает ошибку beginWith() ожидает, что строковый аргумент выйдет. Но оба правила все еще не работают.
Вы явно указываете идентификатор беседы как соединение идентификаторов пользователей, участвующих в разговоре? – msdedwards
Да. Вот что я делаю. Я не делаю, если это антипаттерн или нет. – Scandinave
Ну, было бы проблемой, если бы у вас было несколько разговоров с теми же пользователями. – msdedwards