Как проверить конкретное поле в firestore после аутентификации во флаттере? - PullRequest
0 голосов
/ 26 мая 2020
  • У меня есть поле в firestore «isEnabled», оно содержит логическое значение. Таким образом, если оно равно true, то пользователь войдет в приложение, которое он запросил на домашней странице.
  • Если поле «isEnabled» равно false, должно отображаться сообщение, ваша учетная запись отключена.
  • На данный момент я могу войти в систему, и после этого поле проверяется, и если оно неверно, пользователь выходит из системы.
  • Есть ли способ, при помощи которого происходит первая аутентификация, затем пользователь переносится на страницу, где отображается страница загрузки типа "Проверка некоторых дополнительных сведений ...", и если в поле "isEnabled" указано значение false, будет показано, что ваша учетная запись отключена.
  • Я пробовал выполнить проверку поля до, но это невозможно и после
      AuthResult result = await _auth.signInWithEmailAndPassword(email: email, password: password);
  • Как только указанная выше строка будет выполнена, пользователю, очевидно, будет предложено перейти на домашнюю страницу.
  • Что Я могу получить этот код, показанный ниже -
Future signInWithEmailAndPassword(String email, String password) async {
    try {
      AuthResult result = await _auth.signInWithEmailAndPassword(email: email, password: password);
      FirebaseUser user = result.user;
      print(user.uid);
      final firestore = Firestore.instance;
      /*
      retrieving the fields from the database for checking the isEnabled field
       */
      await firestore.collection("admins").document(user.uid).get().then((resp) {
        logoutToast();
        if ((resp.data["isEnabled"]) == false) {
          disableToast();
          signOut();

        } else {
          loginToast();

        }
        return user;
      });
      //print(qn);
      //return user;
    } catch (error) {
      print(error.toString());
      return null;
    }
  }

Спасибо !!

1 Ответ

2 голосов
/ 27 мая 2020

Вы всегда можете отключить пользователя в Firebase Auth, и он вообще не сможет войти в систему.

Если вы все еще хотите go по-своему и проверьте isEnabled в Firebase Firestore, чем выполнить вход в систему и НЕ направлять пользователя на главный экран, вместо этого направить его на экран проверки, и если isEnabled равно true, он перейдет на главный экран, если это false, вы выйдете из системы.

Другое решение - иметь диалоговое окно, отображаемое на главном экране после первого отображения, и этот диалог будет запускать журнал проверкиi c.

...