PROGRAMING/FULL STACK

[Auth] Login form

donghunl 2024. 3. 23. 12:14
반응형

Firebase 연결 작업이 끝났으므로 실제로 로그인 페이지를 구현해 보도록 합니다.

우선 src폴더 안의 pages폴더에 LoginPage.js파일 생성하고 코드를 작성합니다.

LoginPage.js

import { useState } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import { getAuth, signInWithEmailAndPassword } from 'firebase/auth';

const LoginPage = () => {
    const [email, setEmail] = useState('');
    const [password, setPassword] = useState('');
    const [error, setError] = useState('');

    const navigate = useNavigate();

    const logIn = async () => {
        try {
            await signInWithEmailAndPassword(getAuth(), email, password);
            navigate('/articles');
        } catch (e) {
            setError(e.message);
        }
    }

    return (
        <>
        <h1>Log In</h1>
        {error && <p className="error">{error}</p>}
        <input
            placeholder="Your email address"
            value={email}
            onChange={e => setEmail(e.target.value)} />
        <input
            type="password"
            placeholder="Your password"
            value={password}
            onChange={e => setPassword(e.target.value)} />
        <button onClick={logIn}>Log In</button>
        <Link to="/create-account">Don't have an account? Create one here</Link>
        </>
    );
}

export default LoginPage;

로그인 페이지가 완성되었고 이제 App페이지에 이 페이지로 진입할수 있도록 Route path지정을 해줍니다. 변경된 App.js파일은 다음과 같습니다.

App.js

import './App.css';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import NavBar from './NavBar';
import HomePage from './pages/HomePage';
import AboutPage from './pages/AboutPage';
import AriclesListPage from './pages/ArticlesListPage';
import AriclePage from './pages/ArticlePage';
import NotFoundPage from './pages/NotFoundPage';
import LoginPage from './pages/LoginPage';

function App() {
  return (
    <BrowserRouter>
      <div className="App">
        <NavBar />
        <div id="page-body">
          <Routes>
            <Route path='/' element={<HomePage />} />
            <Route path='/about' element={<AboutPage />} />
            <Route path='/articles' element={<AriclesListPage />} />
            <Route path='/articles/:articleId' element={<AriclePage />} />
            <Route path="/login" element={<LoginPage />} />
            <Route path="*" element={<NotFoundPage />} />
          </Routes>
        </div>
      </div>
    </BrowserRouter>
  );
}

export default App;

 

로그인 페이지로 이동한 결과 화면은 다음과 같습니다.

로그인 페이지가 완성되었습니다.

 

 

 

반응형

'PROGRAMING > FULL STACK' 카테고리의 다른 글

[Auth] Build create account page  (0) 2024.03.26
[Auth] Custom auth hook  (0) 2024.03.23
[Auth] Adding Firebase Auth to React  (0) 2024.03.23
[Auth] Firebase Auth  (0) 2024.03.23
[Front End - Back End] Creating an add comment form  (0) 2024.03.21