Я использую аутентификацию телефона в пожарном депо. Но когда я устанавливаю следующие правила безопасности, он прекрасно работает на площадке для пожарных, но выдает ошибку в интерфейсе.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /user_login_details/{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
Когда я удаляю оператор if, он работает нормально, но не работает с if. Номер телефона вместе с его UID указан в разделе аутентификации.
Код клиента: я получаю номер телефона при успешной аутентификации и передаю его, чтобы проверить, существует пользователь или нет
this.firebaseAuth.onAuthStateChanged().subscribe((res) => {
if (res) {
this.chkUserExistOrNot(res.phoneNumber.substr(1));
}
});
chkUserExistOrNot(user_phone_number) {
this.authservice.getUserData(user_phone_number).subscribe((res) => {
if (res.length > 0) { // do something }
else { // do something }
});
}
getUserData(number) {
return this.db.collection<login>('user_login_details', ref => ref.where("phone", "==", number)).snapshotChanges().pipe(map(
actions => {
return actions.map(a => {
const data = a.payload.doc.data();
const id = a.payload.doc.id;
return { id, ...data };
});
}
), first());
}
Обновление ** Метод getCurrentUser () возвращает значение null внутри onAuthStateChanged ().