Jump to content

Como evitar o cadastro duplicado de usuários no Firebase Authentication usando Zustand em uma aplicação Next.js?


Postagens Recomendadas

Estou enfrentando um comportamento incomum na minha aplicação estou usando Next.JS, Zustand, Firebase e React-Toastify para para cadastrar usuários e enviar feedbacks visuais para os usuários. Mas ao finalizar a operação percebo que no meu console do Firebase Authentication o cadastro é registrado com duplicidade mas com uids(id único do firebase) diferentes.  Mas na interface do meu realtime database o cadastro ocorre normalmente sem duplicidade, como é mostrado nas imagens a seguir. Aqui está o código responsável por criar o usuário:
 

export const useAuthStore = create<TAuthUser>((set) => ({
  user: null,
  loading: false,
  registerUser: async (formData: TUserRegister, callback) => {
    delete formData.confirmPassword;
    
    try {
      set({ loading: true })
      const auth = getAuth()
      const credential = await toast.promise(createUserWithEmailAndPassword(auth, formData.email, formData.password),
        {
          pending: "Processando as informações do seu cadastro, aguarde um instante...",
          success: "Cadastro efetuado com sucesso!",
          error: "Parece que houve um problema. Por favor, tente enviar as informações novamente. Se preferir use outro email!"
        }
      );
    
      //* Criação do usuário com email e senha usando o Firebase
      // const credential: UserCredential = await createUserWithEmailAndPassword(
      //   auth,
      //   formData.email,
      //   formData.password
      // );
      //* Atualiza o perfil do usuário para inserir o nome antes de salvar a instância user no firebase

      // await updateProfile(userCredential.user, {
      //   displayName: formData.name,
      // });

      //* Salva os dados no realtime database do firebase
      const userRef: DatabaseReference = ref(realtimeDB, "users/" + credential.user.uid)

      setFire(userRef, {
        name: formData.name,
        email: formData.email,
      }).catch((error) => {
        console.error("Error when trying to save data to Firebase realtime database:", error)
      })

      set({ user: formData });
      if(callback) callback()

    } catch (error) {
      // toast.error("Algo não saiu como o esperado. Tente usar outro email!")
      console.error(error);
    
    } finally {
      set({ loading: false })
    }
    // console.log(user)
  },

Sintam-se livres para sugerir mudanças e utilizar os código comentados também

Captura de Tela (110).png

Captura de Tela (112).png

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Casa do Desenvolvedor mudou o título para Como evitar o cadastro duplicado de usuários no Firebase Authentication usando Zustand em uma aplicação Next.js?

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...