Как сохранить текущего пользователя нетронутым при создании нового пользовательского флаттера

#firebase #flutter #google-cloud-firestore

#firebase #flutter #google-облако-firestore

Вопрос:

     FirebaseUser user = (await FirebaseAuth.instance.createUserWithEmailAndPassword(email: email, password: password)).user;
    await Firestore.instance.collection("users").add({
      'uid': user.uid,
      'email': email,
      'name': name,
      'phone': number,
      'TodaySale': "0",
      'MonthlySale': "0",
      'Permission': permission
    });
    Firestore.instance.collection("employees").add({
      'Name': name,
      'Address': address,
      'Permission': permission,
      'Phone': number,
      'Email': email,
    });
  

Я уже вошел в приложение и пытаюсь создать новых сотрудников, данные которых хранятся в коллекции пользователей и коллекции сотрудников.
Но после выполнения кода текущий пользователь изменяется на добавленного сотрудника. Как создать пользователя, сохранив текущего пользователя таким же, каким он был при входе в систему.

Ответ №1:

Как объясняется в документе, createUserWithEmailAndPassword() метод «представляет собой двухэтапную операцию; сначала будет создана новая учетная запись (если она еще не существует и пароль действителен), а затем пользователь автоматически войдет в эту учетную запись». Невозможно избежать автоматического входа в систему с помощью этого метода, вызываемого из интерфейса (т. Е. из вашего приложения Flutter).

Вам необходимо зарегистрировать этих пользователей через внутренний процесс, например, с помощью облачной функции.

В следующей статье объясняется, как создать модуль, который позволяет конечным пользователям с определенной ролью администратора создавать других пользователей и назначать им другие конкретные роли пользователей. В двух словах: из интерфейса пользователь, вошедший в систему, вызывает вызываемую облачную функцию с новыми пользовательскими данными. В серверной части облачная функция создает пользователя в службе аутентификации (и создает пользовательский документ в Firestore, точно так же, как вы делаете с Firestore.instance.collection("employees").add() ). Поэтому текущий пользователь во внешнем интерфейсе не выходит из системы.