Я создаю чат-комнату с базой данных Fireabse Realtime Database и хочу, чтобы некоторые комнаты были защищены паролем.У меня есть приблизительное представление о том, как это может сработать, но у меня возникают проблемы с его полной реализацией.Скажем, моя структура выглядит следующим образом:
Chatrooms : {
-randomID : {
roomName: 'Chatroom 1',
password: 'foobar'
messages: {
...
}
}
}
Я мог бы настроить структуру безопасности как таковую для помещений, которым требуется пароль:
'Chatrooms' : {
-randomID : {
'roomName': 'Chatroom 1',
'password': 'foobar',
'.read': "data.child('validatedUsers/*user's uid*').val() === true",
'validatedUsers' : {
*user's uid* : true,
*other user's uid* : true,
...
}
'messages': {
'.read': false
...
}
}
}
Таким образом (насколько я понимаю) я могудобавьте пользователя, которому был предоставлен доступ к объекту validatedUsers, и, если он находится в списке, верхний уровень .read переопределит чтение «сообщений».
Моя проблема в том, что я не могу найти безопасный способ получить пароль, сравнить его с введенным пользователем, а затем ввести их в объект validatedUsers.Поскольку это было бы небезопасно, клиенту не понадобилась бы какая-нибудь облачная функция для проверки?Теперь, когда я думаю об этом, мне, скорее всего, понадобится облачная функция для хэширования пароля?