Skip to content
Snippets Groups Projects
App.js 2.37 KiB
Newer Older
  • Learn to ignore specific revisions
  • Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    import "./css/App.css";
    
    import {Routes, Route, Link, useNavigate, Navigate  } from 'react-router-dom';
    import React, { useEffect, useState, useContext} from 'react';
    
    import { UserContext } from './Context.js';
    
    Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    
    
    Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    import Main from "./pages/Main.js";
    import Login from "./pages/Login.js";
    import Search from "./pages/Search.js";
    import PostWrite from "./pages/PostWrite.js"
    
    Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    import PostRead from "./pages/PostRead.js"
    
    Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    
    import Header from "./components/Header.js";
    
    
    import axios from 'axios';
    axios.defaults.withCredentials = true;
    
    
    function App() {
    
    Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    	
    
    	const [ isloggedIn, SetIsloggedIn] = useState(false);
    	const [ userName, setUserName] = useState(null);
    	const navigate = useNavigate();
    	function MoveTo(link){
    		navigate(link)
    	}	
    	// 헤더 업데이트
    	const LogIn = (name)=>{
    		// API 로그아웃 요청
    		// 로그아웃 성공시 헤더 반영
    		SetIsloggedIn(true)
    		setUserName(name)
    
    		console.log("Usercontext:LogIn")
    		console.log(isloggedIn)
    	};
    
    Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    	
    
    	const LogOut = ()=>{
    		// API 로그아웃 요청
    		requestLogout().then(
    			(response) => {
    				// 로그아웃 성공시 헤더 반영
    				SetIsloggedIn(false)
    				setUserName(null)
    				console.log("Usercontext:LogOut")
    				console.log(userName)
    				alert("정상적으로 로그아웃 되었습니다.")	
    				MoveTo('/')			
    			}
    		)
    		.catch((response)=>{
    			console.log("error!:LogOut")
    			console.log(response)
    		})
    	};
    
    	const CheckSession = ()=>{
    		return requestCheckSession();
    	};
    
    
    
    LEE's avatar
    LEE committed
      return(
        <div className="App">
    
    		<UserContext.Provider value={{isloggedIn, userName, LogIn, LogOut, CheckSession}}>
    		<Header islogged={isloggedIn} username={userName}></Header>
    
    Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    			<Routes>
    				<Route path="/" element={<Main/>}></Route>
    				<Route path="/login" element={<Login/>}></Route>
    				<Route path="/search" element={<Search/>}></Route>
    
    				<Route path="/postwrite" element={<PostWrite/>}></Route> 
    
    Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    				<Route path="/post/:id" element={<PostRead/>}></Route> 
    
    Hyun Woo Jeong's avatar
    Hyun Woo Jeong committed
    			</Routes>
    		</UserContext.Provider>
    		{/* <Footer/> */}
    
    LEE's avatar
    LEE committed
        </div>
        );
    
    async function requestLogout() {
    	const response = await axios({
    
    	  url: 'http://localhost:8080/auth/logout', // 통신할 웹문서
    
    	  method: 'get', // 통신할 방식
    	});
    	return response;
      }
    
    async function requestCheckSession() {
    	const response = await axios({
    
    	  url: 'http://localhost:8080/auth/check', // 통신할 웹문서
    
    	  method: 'get', // 통신할 방식
    	});
    	return response;
      }
    
    
    export default App;