#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()
). Поэтому текущий пользователь во внешнем интерфейсе не выходит из системы.