Мне нужно сохранить в Firebase информацию о 2 пользователях, которые должны быть должным образом защищены от чтения другими пользователями.
Пример:
user1: 'Adam'
user2: 'Eve'
commonInfo:
meetingDate: new Date(-600000,1,1)
marriageDate: new Date(-300000,1,1)
children:['users/Cain','users/Abel','users/Seth']
(я предполагаю, что Adam & Eve Сейчас купили смартфон, и кто знает, кто может использовать приложение ...)
Проблема в том, что мне нужно защитить Firebase простым и надежным способом.
Мне также нужно взять в учетной записи, что у одного пользователя может быть несколько партнеров в течение его жизни.
1 / Дубликат информации
Моя первая идея заключалась в том, чтобы использовать облачную функцию для синхронизации c данные между двумя профилями пользователей. Облачная функция будет работать только в том случае, если оба партнера имеют «with:», нацеленные друг на друга.
user1: 'Adam'
commonInfo:
with: 'users/Eve'
meetingDate: new Date(-600000,1,1)
marriageDate: new Date(-300000,1,1)
children:['users/Cain','users/Abel','users/Seth']
user2: 'Eve'
commonInfo:
with: 'users/Adam'
meetingDate: new Date(-600000,1,1)
marriageDate: new Date(-300000,1,1)
children:['users/Cain','users/Abel','users/Seth']
Тогда правило Firestore очень простое:
match /users/{userId} {
allow read, update, delete: if request.auth != null && request.auth.uid == userId;
allow create: if request.auth != null;
}
Но я не очень обнаружено дублирование данных ...
2 / Общий документ с именем afted users 'ID
Было бы более экономично c иметь общий документ
couple:EveAdam
meetingDate: new Date(-600000,1,1)
marriageDate: new Date(-300000,1,1)
children:['users/Cain','users/Abel','users/Seth']
Я написал это, но у меня есть 2 красные стрелки в разделе coupleId и они содержат:
NB: содержит используется согласно: https://github.com/google/cel-spec/blob/master/doc/langdef.md#list -of-standard-definitions
match /couples/{CoupleId} {
allow read, update, delete: if request.auth != null && coupleId.contains(request.auth.uid);
allow create: if request.auth != null;
}
Я новичок в firebase и понятия не имею, будет ли это работать, и если это хороший способ сделать это ...