Firestore Query не работает в соответствии с правилами безопасности - PullRequest
0 голосов
/ 27 апреля 2020

Я использую Cloud Firestore и пытаюсь изменить свое правило безопасности. Это условие, которое я хочу

Только пользователи, чей номер телефона есть в любых документах в коллекции Учителя, могут читать только его / ее документы в коллекции Учителя

Вот код, который я написал

    rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /Teachers/{teachers}{
    allow read: if((resource.data.mobno == request.resource.data.mobno) )
  allow update:if((request.resource.data.mobno == resource.data.mobno))


  }        


      }
    }

Это запрос на стороне клиента

 Teacherref = FirebaseFirestore.getInstance().collection("Teachers");      
Teacherref.whereEqualTo("mobno",mobilecredential).get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                if(!queryDocumentSnapshots.getDocuments().isEmpty()){
                    for(QueryDocumentSnapshot data:queryDocumentSnapshots){
                        teacherdata=data.toObject(TeacherLoginModel.class);
                        if(TextUtils.isEmpty(teacherdata.getStatus()))signinuser(data);
                        else if(teacherdata.getStatus().equals("signout"))signinuser(data);
                        else {Toast.makeText(Signin.this, "You Are Already logged In Different Phone", Toast.LENGTH_SHORT).show();
                            predialog.dismiss();}
                    }
                }
                else{
                    predialog.dismiss();
                    Toast.makeText(Signin.this,"Please Check Your Credentials ", Toast.LENGTH_SHORT).show(); }
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Toast.makeText(Signin.this, e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

enter image description here

1 Ответ

0 голосов
/ 27 апреля 2020

Как вы прочтете в документации , request.resource соответствует "новому значению ресурса, присутствует только в запросах на запись ".

Так что вы не можете используйте request.resource в read правиле.

...