나의 개발일지

[React/TypeScript] 최종프로젝트 - Mango(환경오염 줄이기 / 지구 살리기 프로젝트!) (진행 중) - 파이어베이스 로그인/회원가입 본문

과제 및 팀프로젝트

[React/TypeScript] 최종프로젝트 - Mango(환경오염 줄이기 / 지구 살리기 프로젝트!) (진행 중) - 파이어베이스 로그인/회원가입

heew0n 2024. 1. 9. 20:44

 

최종프로젝트에서 마이페이지 쪽을 맡게되면서 또 다시 auth 쪽을 구현하게 되었다

그 대신 이번에는 파이어베이스로!

 

https://firebase.google.com/docs/auth/web/start?hl=ko

 

웹사이트에서 Firebase 인증 시작하기  |  Firebase Authentication

Google I/O 2023에서 Firebase의 주요 소식을 확인하세요. 자세히 알아보기 의견 보내기 웹사이트에서 Firebase 인증 시작하기 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분

firebase.google.com

 

파이어베이스 공식문서이다.

공식문서를 보면 쉽게 따라할 수 있다

 

 

 

회원가입

 const signUp: SubmitHandler<Data> = async ({ email, password, nickname, passworkCheck }: Data) => {
    try {
      const userCredential = await createUserWithEmailAndPassword(auth, email, password);

      console.log('userCredential', userCredential);
      
      const user = userCredential.user;
      if (user !== null) {
        await updateProfile(user, {
          displayName: nickname
        });
      } else return;
      setValue('email', '');
      setValue('password', '');
      setValue('nickname', '');
      setValue('passworkCheck', '');


      // 회원가입 state 업데이트
      setIsSignUp(false);
     

      //...코드생략
      
      
      
      }
    } catch (error) {
      setErrorMsg(error);
    }
  };

 

 

로그인

 const signIn: SubmitHandler<Data> = async (data) => {
    try {
      const userCredential = await signInWithEmailAndPassword(auth, data.email, data.password);
      // 로그인 성공 시 role의 recoil(전역상태) update
      const user = userList && userList.find((user) => user.uid === auth.currentUser?.uid);
      if (user) {
        setRole(user.role);
      }
      
      // home으로 이동
      navigate('/');
    } catch (error) {
      setErrorMsg(error);
    }
  };

 

 

 

이번에도 역시나 react-hook-form을 사용하여 실시간 유효성 검사를 했다

 

 

 

 

아직 중복확인 기능은 구현하지 못했는데

어떻게 구현해야 할지 고민이다!