Правила безопасности Firebase не работают для другого пути - PullRequest
0 голосов
/ 28 мая 2020

private void showingDatafromDatabase() {


        if (currentUser != null) {

            String uid = currentUser.getUid();

            DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users");

            ref.child(uid).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    UserInfo info = dataSnapshot.getValue(UserInfo.class);

                    assert info != null;

                    String coin = info.getCoins();
                    String isAvailable = info.getIsRefered();
                    TextView cointext = view.findViewById(R.id.coinstext);
                    cointext.setText(coin);

                    coinChecker = Integer.parseInt(coin);

                    boolean isRefer = Boolean.parseBoolean(isAvailable);
                    if (isRefer) {
                    } else {
                        inputrefer.setVisibility(View.VISIBLE);
                    }

                    querydailyrewards();
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });

        }
    }


    private void querydailyrewards() {

        if (currentUser != null) {

            String uid = currentUser.getUid();
            DatabaseReference queryRef = FirebaseDatabase.getInstance().getReference().child("Refer Code");

            Query query = queryRef.child(uid).orderByChild("isCheckin");
            query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    if (dataSnapshot.exists()) {

                        UserInfo data = dataSnapshot.getValue(UserInfo.class);

                        assert data != null;
                        showingDatafromDailyRewards();

                    } else {

                        addDailyRewardValue();

                    }

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                    Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();

                }
            });

        }

    }

{
  "rules": {
    "Users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

projectname
|
|Refer Code|
|          |
|         uid
|            |- refercode
|            |- uid
|Users |
       |
     uid
       |- coins
       |- email
       |- name
       |- refercode
 

Я использую правило аутентификации firebase, поэтому только пользователь может получить доступ к собственному контенту, но он работал только для одного пути и показывает мне ошибку отказа в разрешении для другого правила. Правило работает нормально для запроса пользователя, но оно показывает мне ошибку при отказе в передаче в запросе кода ссылки. Я только хочу, чтобы пользователь имел доступ к этому содержимому uid, а не к другому содержимому

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...