1. 첫화면
2. 회원가입
firebase를 활용하여 로그인, 회원가입을 구현하였다.
firebase에서 프로젝트를 만들고 해당 프로젝트의 build - Authentication - Sign in method를 통해 사용할 로그인 방법을 설정한다.
// firebaseConfigure.js(별도로 생성해야하는 파일)
import { initializeApp } from "firebase/app";
import { getAuth, GoogleAuthProvider } from 'firebase/auth';
import { getFirestore } from 'firebase/firestore';
import { getStorage } from 'firebase/storage'
const firebaseConfig = {
//생략
};
const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const googleProvider = new GoogleAuthProvider()
firebase 세팅 js파일에 위 함수를 추가한다.
import { useState } from 'react';
import { auth } from '../config/firebase'
import { createUserWithEmailAndPassword } from 'firebase/auth';
const SignIn = () => {
// 이메일, 비밀번호를 저장할 state
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
// 회원가입 함수
const signIn = async () => {
// 이메일 정규표현식
let emailCheck = new RegExp('[a-z0-9]+@[a-z]+\.[a-z]{2,3}');
if(!emailCheck.test(email)){
alert("이메일을 올바르게 작성해주세요.");
return;
}
// firebase로 정보 보내기
await createUserWithEmailAndPassword(auth, email, password);
// 회원가입 완료 안내
alert(email + " 님의 회원가입이 완료되었습니다.")
// 가입 완료 후 input 비우기
setEmail("");
setPassword("");
}
return <div className="SignIn">
<div>
<label>Email</label>
<input onChange={(e)=> setEmail(e.target.value)} value={email}/>
</div>
<div>
<label>Password</label>
<input type="password" onChange={(e)=> setPassword(e.target.value)} value={password}/>
</div>
<button onClick={signIn}>Sign in</button>
</div>
}
export default SignIn;
3. 로그인 - 일반 / 구글
import { auth, googleProvider } from '../config/firebase'
import { signInWithEmailAndPassword, signInWithPopup } from "firebase/auth"
// 일반 로그인
const [email, setEmail] = useState();
const [password, setPassword] = useState();
const navigate = useNavigate();
// 로그인 함수
const handleLogin = async () => {
try{
await signInWithEmailAndPassword(auth, email, password);
navigate('/');
} catch(err){
if (err.code == 'auth/invalid-email') {
alert('잘못된 이메일 형식입니다.');
}
if (err.code == 'auth/user-not-found') {
alert('존재하지 않는 아이디입니다.');
}
if (err.code == 'auth/wrong-password') {
alert('비밀번호를 다시 확인해주세요');
}
if (err.code == 'auth/too-many-requests') {
alert('잠시 후 다시 시도해 주세요');
}
console.error(err);
}
}
// 구글 로그인
const signInWithGoogle = async () => {
try {
await signInWithPopup(auth, googleProvider);
navigate('/');
} catch(err){
console.error(err);
}
}
회원가입을 할 땐 createUserWithEmailAndPassword()
일반 로그인은 signInWithEmailAndPassword
구글 로그인은 signInWithPopup과 googleProvider를 통해 할 수 있다.
'JS > React Project' 카테고리의 다른 글
📆 위클리 플래너 - 홈화면 (0) | 2023.09.11 |
---|---|
📆 위클리 플래너 - 주제 (0) | 2023.09.07 |
🏃♀️ 목표 다이어리 - 글 작성 / 수정 (0) | 2023.08.07 |
🏃♀️ 목표 다이어리 만들기 - 홈화면 (0) | 2023.08.01 |
🏃♀️ 목표 다이어리 만들기 - 기획 및 기초 세팅 (0) | 2023.07.28 |