Правила:
его я пытаюсь достичь, очень просто. Мне нужно создать пользовательскую запись в базе данных, только если она не существует.
Поток приложения:
Создайте пользователя с Firebase Auth (получите UID)Создать пользовательский документ в базе данных, используя UID в качестве ключаКод клиента (операция создания):
this.db.doc('users/' + uid).set({username: Santa})
Правила пожарного депо:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid} {
allow create: if
request.auth != null &&
request.auth.uid == uid &&
!exists(/databases/$(database)/documents/users/$(uid));
allow update: if request.auth != null && request.auth.uid == uid;
}
}
}
Дополнительная информация:
Как вы уже знаете, код не работает. Каждый раз, когда я запускаю код на стороне клиента, текущий пользователь полностью заменяется новым документом. Однако, если я удаляю следующую строку из правил, все работает как положено:
allow update: if request.auth != null && request.auth.uid == uid;
Но теперь возникает вопрос, как защитить данные в пользовательском документе от несанкционированных изменений? Любой совет?