Задать вопрос
@rifat2125

Как создать пользователя Firebase, но не производить авторизацию?

Здравствуйте!
Хочу сделать создание пользователей системы в качестве Админа. То есть я админ и создаю пользователей, для последующей передачи данных человеку.

Я использую этот метод.
createUserWithEmailAndPassword(auth, formData.email, formData.password);


Пользователь создается, но при этом сразу создается авторизация для данного пользователя и из текущего профиля меня выкидывает. Как создать новый аккаунт, но при этом сохранить свою авторизацию?
  • Вопрос задан
  • 133 просмотра
Подписаться 2 Средний Комментировать
Решения вопроса 1
@rifat2125 Автор вопроса
Кому интересно, решение нашел следующее (ОСТОРОЖНО костыль):
firebase.js
import { initializeApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';
import { getDatabase } from 'firebase/database';

const config = {...} // Файл конфигурации firebase

const firebaseApp = initializeApp(config);
const secondFirebaseApp = initializeApp(config, 'secondary'); // Делаем вторую инициализацию и указываем второй параметр

const auth = getAuth(firebaseApp);
const secondAuth = getAuth(secondFirebaseApp); // Инициализируем второй объект авторизации
const database = getDatabase(firebaseApp);

export { firebaseApp, auth, database, secondAuth };


Код создания пользователя
import { createUserWithEmailAndPassword, signOut } from 'firebase/auth';
import { database, secondAuth } from '@/utils/firebase';
import { onValue, ref, set } from 'firebase/database';

...
// Код внутри метода
// Используем второй экземпляр авторизации
const response = await createUserWithEmailAndPassword(secondAuth, formData.email, formData.password);
const uid = response.user.uid;
await set(ref(database, `/users/${uid}/info`), formData);
await signOut(secondAuth);


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

P.S. Решение не моё. Нашел на stackoverflow. Немного пришлось подправить код под себя.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы