Сначала в своем firestore я создал коллекцию с именем "usr", которая содержит различную информацию о пользователе (ниже приведен пример):
{
firstName: "John"
lastName: "Doe"
middleName: "Dimple"
uniqueCode: "HsdaVBw"
}
, и я использую эти документы для проверки пользователя при входе в систему с этим кодом:
Query query = data.collection("usr").
whereEqualTo("lastName", lastName).
whereEqualTo("firstName", firstName).
whereEqualTo("uniqueCode", uniqueCode);
verifyUser(query);
private void verifyUser(Query query) {
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()) {
login();
}else{
Log.d("LoginPage ", "Login failed!");
}
}
});
}
и после осознания того, что я выбрал режим тестирования для своего пожарного депо, я создал правило, которое также каким-то образом проверяет данные запроса пользователя.
match /usr/{user} {
allow read: if request.resource.data.lastName == resource.data.lastName &&
request.resource.data.firstName == resource.data.firstName &&
request.resource.data.uniqueCode == resource.data.uniqueCode;
}
поэтому, после того, как я попытался войти, я получил эту ошибку:
W/Firestore: (21.4.1) [Firestore]: Listen for Query(target=Query(users where lastName == # com.google.firestore.v1.Value@a23137e8
integer_value: 0
string_value: "Doe" and firstName == # com.google.firestore.v1.Value@faaab68a
integer_value: 0
string_value: "John" and uniqueCode == # com.google.firestore.v1.Value@cb5c8a4b
integer_value: 0
string_value: "HsdaVBw" order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
что-то не так в моем правиле? мой код?
(мое правило основано на этом сайте: https://firebase.google.com/docs/firestore/security/rules-query)