Я создаю простое приложение для чата с использованием firebase и сталкиваюсь с некоторыми проблемами с доступными настройками безопасности.
Модель данных для этого приложения очень проста и выглядит следующим образом.
rooms:[
people:[
{
name: //string
status: // what the user is doing, typing, still connected etc.
secret: // the problem is with this
}
],
messages:[
{/* message to and payload*/}
]
]
проблема в том, что я хочу, чтобы пользователь, создавший комнаты [i].people[j], мог обновлять статус этого человека.
Будучи новичком в firebase, я мог бы использовать функцию обновления следующим образом.
personRef.update({
'status': // newStatus
'secret': // used to authorize the update
})
проблема в том, что я не могу найти способ сделать секрет только для записи и одновременно предоставить доступ людям. То есть мне нужно, чтобы кто-нибудь мог извлекать данные, расположенные в комнатах [i]. Но это дало бы доступ для чтения каждому ребенку, и любой в комнате мог бы видеть секрет обновления любого другого. Я неправильно думаю об этой проблеме?
Есть ли способ предоставить доступ для чтения родителю, но исключить некоторых дочерних элементов из результатов?
Спасибо!