Я пытаюсь установить авторизацию в firestore, используя вкладку правил для чтения записей.
Вопрос
allow read: if request.auth.uid != null && resource.data.firebaseID == request.auth.uid;
Мне нужно отфильтровать и прочитать записи, созданные пользователем. Также я должен избегать данных, созданных другими пользователями. Когда я использую вышеуказанное правило в разделе ПРАВИЛА, я не получаю никаких записей из него. не могли бы вы помочь мне решить эту проблему?
Данные
Полные правила
service cloud.firestore {
match /databases/{database}/documents {
match /sampleData/{anything=**}{
allow read, write: if true;
}
match /{document=**} {
allow read: if request.auth.uid != null && resource.data.firebaseID == request.auth.uid;
allow write: if request.auth.uid != null ;
}
}
}
код
private void proceedExportToFireStore() {
// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();
WriteBatch batch = db.batch();
DocumentReference newCoinRef;
CollectionReference cryptos = db.collection("cryptos");
List<Tran> tranList = getAllTranForFireStore();
String firebaseUID = FirebaseAuth.getInstance().getCurrentUser().getUid();
for (Tran t : tranList) {
Map<String, Object> tranData = new HashMap<>();
tranData.put("firebaseID", firebaseUID);
tranData.put("createdBy", userEmailID);
tranData.put("coinid", t.getCoinID());
tranData.put("coinname", t.getCoinName());
tranData.put("coinsymbol", t.getCoinSymbol());
tranData.put("date", String.valueOf(t.getDate()));
tranData.put("qty", String.valueOf(t.getQty()));
tranData.put("price", String.valueOf(t.getPrice()));
tranData.put("priceunit", String.valueOf(t.getPriceUnit()));
newCoinRef= cryptos.document(t.getCoinID());
batch.set(newCoinRef, tranData);
}
batch.commit().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
// ...
System.out.println("Testing 1 Batch add done");
}
});
}