Я строю мессенджер в реальном времени, используя Ionic / Angular и Firebase. Я использую Аутентификацию Firebase для аутентификации моих пользователей, и Firebase DB для хранения сообщений и потоков сообщений.
Моя проблема в том, какие правила безопасности следует использовать, чтобы потоки сообщений были частными, жизнеспособными и доступными для записи только двум лицам, занятым в данной цепочке сообщений.
Моя структура БД теперь выглядит так:
-chats
--Message_thread_ID
---Unique_ID_generated_message by Firebase
----Message
----Sender ID
----Receiver ID
---Unique_ID_generated_message by Firebase
----Message
----Sender ID
----Receiver ID
--Message_thread_ID
---Unique_ID_generated_message by Firebase
----Message
----Sender ID
----Receiver ID
Мои текущие правила безопасности Firebase:
{
"rules": {
".read": "auth != null",
".write": false,
"$messageThreadID": {
".write": "auth != null && !data.exists()",
".read": "auth != null"
}
}
}
Это работает нормально, но таким образом любой аутентифицированный пользователь сможет читать все сообщения между любым пользователем. Что не то, что я хочу. Я хочу, чтобы потоки сообщений были приватными только для двух пользователей в любой заданной теме.
Как мне реструктурировать мою БД для наилучшего оптимального решения?
PS: У меня есть способы сделать это с помощью бэкенда или сделать две копии для каждого из двух пользователей их соответствующих потоков, но эти решения выглядят по-настоящему непристойными.