loginProvider function

Future<String?> loginProvider(
  1. String email,
  2. String pass,
  3. bool _remember,
  4. String stringUserNotFound,
  5. String stringUserMustBeProvider,
  6. String stringUserDisabled,
)

Implementation

Future<String?> loginProvider(String email, String pass, bool _remember,
      String stringUserNotFound,        // User not found
      String stringUserMustBeProvider,  // User must be Provider
      String stringUserDisabled         //  "User is disabled. Connect to Administrator for more information.",
    ) async {
  try {
    User? user = (await FirebaseAuth.instance.signInWithEmailAndPassword(
        email: email, password: pass)).user;

    if (user == null)
      return stringUserNotFound; /// User not found

    var querySnapshot = await FirebaseFirestore.instance.collection("listusers").doc(user.uid).get();
    if (!querySnapshot.exists) {
      logout();
      return stringUserNotFound; /// User not found
    }

    var querySnapshot2 = await FirebaseFirestore.instance.collection("provider")
        .where('login', isEqualTo: email).get();
    if (querySnapshot2.docs.isEmpty){
      logout();
      return stringUserMustBeProvider; /// User must be Provider
    }

    var _visible = true;
    for (var result in querySnapshot2.docs) {
      dprint("model login " + result.data().toString());
      if (!result.data()["visible"])
        _visible = false;
    }

    if (!_visible){
      dprint("User not visible. Don't enter...");
      logout();
      return stringUserDisabled; /// "User is disabled. Connect to Administrator for more information."
    }

    if (_remember)
      localSettings.saveLogin(email, pass, "email");
    else
      localSettings.saveLogin("", "", "");
  }catch(ex){
    return "model login " + ex.toString();
  }
  dprint("=================login===============");
  return null;
}