Как безопасно ограничить пользователей только перечислением документов, которые они создали? - PullRequest
0 голосов
/ 28 марта 2019

Я хочу иметь возможность ограничивать пользователей только списком документов, которые они создали.Идентификатор пользователя хранится в поле пользователя. Очевидно, что я могу сделать

db.collection('projects').where('user', '==', firebase.auth().currentUser.uid)

.., но любой технически подкованный пользователь может просто удалить фильтр и получить все.

У меня ограниченный доступ втакие правила, как

match /projects/{project} {
  allow read,update: if request.auth.uid == resource.data.user;
  allow create;
}

Но это не работает, вы не можете перечислить вообще.

Есть ли способ сделать это без создания вложенной коллекции записи пользователя в пользователеколлекция?Я действительно предпочел бы иметь их всех в одном месте.Конечно, это очень распространенный сценарий.

1 Ответ

0 голосов
/ 28 марта 2019

Предполагается, что вы сохранили user_id в поле «пользователь» в firestore. Вы можете использовать

   String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
   db.collection("projects").whereEqualTo("user", uid)...

После эллипсов вы можете использовать .get () с onSuccesss или onComplete или добавить прослушиватель моментальных снимков.

...