From df57b41f22f3a96360aa0a06a02f18e0af84247e Mon Sep 17 00:00:00 2001 From: youseock Date: Thu, 23 Nov 2023 18:11:01 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=EA=B3=B5=ED=86=B5=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=82=AC=EC=9A=A9=EB=90=A0=20=EB=A1=9C=EA=B3=A0=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 로고로 사용될 에셋 public에 저장 --- frontend/public/algo.png | Bin 0 -> 95253 bytes frontend/src/components/Common/Logo.tsx | 11 +++++++++++ 2 files changed, 11 insertions(+) create mode 100644 frontend/public/algo.png create mode 100644 frontend/src/components/Common/Logo.tsx diff --git a/frontend/public/algo.png b/frontend/public/algo.png new file mode 100644 index 0000000000000000000000000000000000000000..011cefe4b360fdc41509f70f4f8f4ea3e4b063ad GIT binary patch literal 95253 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 + logo + + ); +} From 1c6c09156aff635a4a5fd59d3247f4536ffdd611 Mon Sep 17 00:00:00 2001 From: youseock Date: Thu, 23 Nov 2023 18:12:31 +0900 Subject: [PATCH 2/6] =?UTF-8?q?chore:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=9D=BC=EC=9A=B0=ED=8C=85=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/router.tsx | 51 +++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/frontend/src/router.tsx b/frontend/src/router.tsx index 81a0405..527b66a 100644 --- a/frontend/src/router.tsx +++ b/frontend/src/router.tsx @@ -2,34 +2,41 @@ import { createBrowserRouter } from 'react-router-dom'; import ContestPage from '@/pages/ContestPage'; import CreateCompetitionPage from '@/pages/CreateCompetitionPage'; +import LoginPage from '@/pages/LoginPage'; import MainPage from '@/pages/MainPage'; import ProblemPage from '@/pages/ProblemPage'; import App from './App'; -const router = createBrowserRouter([ +const router = createBrowserRouter( + [ + { + path: '/', + element: , + children: [ + { + index: true, + element: , + }, + { + path: '/contest/:id', + element: , + }, + { + path: '/problem/:id', + element: , + }, + { + path: '/contest/create', + element: , + }, + { path: '/login', element: }, + ], + }, + ], { - path: '/', - element: , - children: [ - { - index: true, - element: , - }, - { - path: '/contest/:id', - element: , - }, - { - path: '/problem/:id', - element: , - }, - { - path: '/contest/create', - element: , - }, - ], + basename: process.env.NODE_ENV === 'production' ? '/web12-Algo-With-Me' : '', }, -]); +); export default router; From b69c9bdd73bcb2e7c4f28d3dbd9febc0b8067ac8 Mon Sep 17 00:00:00 2001 From: youseock Date: Thu, 23 Nov 2023 18:13:13 +0900 Subject: [PATCH 3/6] =?UTF-8?q?feat:=20=EA=B3=B5=ED=86=B5=20=ED=97=A4?= =?UTF-8?q?=EB=8D=94=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 생성한 헤더 main 페이지 상단에 포함 --- frontend/src/components/Header/index.tsx | 41 ++++++++++++++++++++++++ frontend/src/pages/MainPage.tsx | 16 +++++---- 2 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 frontend/src/components/Header/index.tsx diff --git a/frontend/src/components/Header/index.tsx b/frontend/src/components/Header/index.tsx new file mode 100644 index 0000000..99aadd0 --- /dev/null +++ b/frontend/src/components/Header/index.tsx @@ -0,0 +1,41 @@ +import { css } from '@style/css'; + +import { useEffect } from 'react'; + +import Logo from '@/components/Common/Logo'; +import useAuth from '@/hooks/login/useAuth'; + +export default function Header() { + const { changeLoginInfo, changeLogoutInfo, isLogin } = useAuth(); + + useEffect(() => { + console.log(isLogin, '로그인 정보 확인용입니다.'); + }, [isLogin]); + + const handleLogin = () => { + changeLoginInfo(); + }; + + const handleLogout = () => { + changeLogoutInfo(); + }; + + return ( +
+ + {isLogin ? ( + + ) : ( + + )} +
+ ); +} + +const headerStyle = css({ + width: '100%', + height: '40px', + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', +}); diff --git a/frontend/src/pages/MainPage.tsx b/frontend/src/pages/MainPage.tsx index 4d57ee3..95b2106 100644 --- a/frontend/src/pages/MainPage.tsx +++ b/frontend/src/pages/MainPage.tsx @@ -1,17 +1,21 @@ import { css } from '@style/css'; +import Header from '@/components/Header'; import GoToCreateCompetitionLink from '@/components/Main/Buttons/GoToCreateCompetitionLink'; import CompetitionList from '@/components/Main/CompetitionList'; import { SITE } from '@/constants'; function MainPage() { return ( -
- {SITE.NAME} - {SITE.PAGE_DESCRIPTION} - - -
+ <> +
+
+ {SITE.NAME} + {SITE.PAGE_DESCRIPTION} + + +
+ ); } From ed2c76ac59e28d252030288301bd6a5f8877f3ec Mon Sep 17 00:00:00 2001 From: youseock Date: Thu, 23 Nov 2023 18:13:56 +0900 Subject: [PATCH 4/6] =?UTF-8?q?feat:=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20=EC=A0=80=EC=9E=A5=ED=95=A0=20=EC=BB=A8?= =?UTF-8?q?=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EC=83=9D=EC=84=B1=20=EB=B0=8F=20?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=9B=85=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 로그인 정보 담고 있는 context 생성 - main을 감싸서 모든 컴포넌트에서 접근 가능하도록 함 - 커스텀 훅 만들어서 로그인 관련 작업 수행 - 현재는 header에 있지만 메인 페이지의 어느 영역에 있어도 괜찮음 - main 페이지 내에 header가 있기 때문에 현재는 header에 포함함 --- frontend/src/components/Auth/AuthContext.ts | 9 ++ frontend/src/components/Auth/AuthProvider.tsx | 66 ++++++++++++++ frontend/src/hooks/login/useAuth.ts | 91 +++++++++++++++++++ frontend/src/main.tsx | 5 +- 4 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 frontend/src/components/Auth/AuthContext.ts create mode 100644 frontend/src/components/Auth/AuthProvider.tsx create mode 100644 frontend/src/hooks/login/useAuth.ts diff --git a/frontend/src/components/Auth/AuthContext.ts b/frontend/src/components/Auth/AuthContext.ts new file mode 100644 index 0000000..c4e72c6 --- /dev/null +++ b/frontend/src/components/Auth/AuthContext.ts @@ -0,0 +1,9 @@ +import { createContext } from 'react'; + +const AuthContext = createContext({ + isLogin: false, + setLogout: () => {}, + setLogin: () => {}, +}); + +export default AuthContext; diff --git a/frontend/src/components/Auth/AuthProvider.tsx b/frontend/src/components/Auth/AuthProvider.tsx new file mode 100644 index 0000000..16ad72a --- /dev/null +++ b/frontend/src/components/Auth/AuthProvider.tsx @@ -0,0 +1,66 @@ +import { useState } from 'react'; + +import AuthContext from './AuthContext'; + +type AuthState = { + isLogin: boolean; + setLogout: () => void; + setLogin: () => void; +}; + +// const TOKEN_KEY = 'accessToken'; +// const AUTH_TEST_API = 'http://101.101.208.240:3000/auths/tests'; +// const UNAUTHORIZED_STATUS = 401; + +// function saveToken(token: string) { +// localStorage.setItem(TOKEN_KEY, token); +// } + +// function getToken() { +// return localStorage.getItem(TOKEN_KEY); +// } + +// function removeToken() { +// localStorage.removeItem(TOKEN_KEY); +// } + +// async function fetchAuth() { +// const token = getToken(); +// if (!token) return; +// try { +// axios.defaults.headers.common['Authorization'] = `Bearer ${token}`; +// const response = await axios.get('AUTH_TEST_API').json(); +// if (response.statusCode == UNAUTHORIZED_STATUS) return; +// } catch (e) { +// console.log(e); +// } +// } + +const AuthProvider = ({ children }: { children: React.ReactNode }) => { + AuthContext.Provider; + const setLogout = () => { + setState((prevState: AuthState) => ({ + ...prevState, + isLogin: false, + })); + }; + + const setLogin = () => { + setState((prevState: AuthState) => ({ + ...prevState, + isLogin: true, + })); + }; + + const initialState = { + isLogin: false, + setLogout, + setLogin, + }; + + const [state, setState] = useState(initialState); + + return {children}; +}; + +export default AuthProvider; diff --git a/frontend/src/hooks/login/useAuth.ts b/frontend/src/hooks/login/useAuth.ts new file mode 100644 index 0000000..1da53ae --- /dev/null +++ b/frontend/src/hooks/login/useAuth.ts @@ -0,0 +1,91 @@ +import { useContext, useEffect } from 'react'; +import { useLocation, useNavigate } from 'react-router-dom'; + +import AuthContext from '@/components/Auth/AuthContext'; + +import axios from 'axios'; + +const TOKEN_KEY = 'accessToken'; +const API_URL = 'http://101.101.208.240:3000'; +const AUTH_TEST_PATH = '/auths/tests'; + +const URL = `${API_URL}${AUTH_TEST_PATH}`; + +const fetchTokenValid = async (token: string) => { + console.log('accessToken 검증 시작 5시53분 배포'); + try { + const response = await axios.get(URL, { + headers: { Authorization: `Bearer ${token}` }, + }); + // {email: 'mahwin7085@gmail.com', nickname: 'mahwin7085@gmail.com' + // 저장할 지 말지는 나중에 결정 + const data = await response.data; + console.log(data, '인증 받음.'); + if (response.status === 200) return true; + // 올바른 유저라는 검증을 받음. + } catch (e) { + console.log('인증 받지 못함.', e); + return false; + } +}; + +export default function useAuth() { + const { isLogin, setLogin, setLogout } = useContext(AuthContext); + + const location = useLocation(); + const navigate = useNavigate(); + + useEffect(() => { + // 로그인 된 상태라면 아무것도 하지 않음 + if (isLogin) return; + + // 로그인 안 된 상태라면 검증을 해야할 경우가 두 가지 경우가 있음 + + // 1. 쿼리에 accessToken이 있는 경우 + // 토큰을 검증 후에 localStorage에 저장하고 + // AuthContext.isLogin = true로 변경 + // 2. 쿼리에 accessToken이 없지만, localStorage에 accessToken이 있는 경우 + // 토큰을 꺼내서 검증 후에 AuthContext.isLogin = true로 변경 + + const queryParams = new URLSearchParams(location.search); + // 당연히 쿼리에 token 값이 있으면 token 값을 먼저 사용하도록 함. + const token = queryParams.get(TOKEN_KEY) || localStorage.getItem(TOKEN_KEY); + + if (!token) return; + const tokenValidPromise = fetchTokenValid(token); + tokenValidPromise.then((isValid) => { + if (isValid) { + saveAuthInfo(token); + } else { + removeAuthInfo(); + } + }); + }, []); + + const saveAuthInfo = (token: string) => { + localStorage.setItem(TOKEN_KEY, token); + setLogin(); + }; + + const removeAuthInfo = () => { + // accessToken 없애기 + // AuthContext 없애기 + localStorage.removeItem(TOKEN_KEY); + setLogout(); + }; + + const changeLoginInfo = () => { + // accessToken 없애기 + // AuthContext 없애기 + // 로그인 페이지로 이동 + removeAuthInfo(); + navigate('/login'); + }; + + const changeLogoutInfo = () => { + // accessToken 없애기 + // AuthContext 없애기 + removeAuthInfo(); + }; + return { changeLoginInfo, changeLogoutInfo, isLogin }; +} diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index 2ad2dd7..f008af4 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -4,10 +4,13 @@ import React from 'react'; import ReactDOM from 'react-dom/client'; import { RouterProvider } from 'react-router-dom'; +import AuthProvider from './components/Auth/AuthProvider'; import router from './router'; ReactDOM.createRoot(document.getElementById('root')!).render( - + + + , ); From 6225164b6fe2d476def8edb5e561f31fae11acee Mon Sep 17 00:00:00 2001 From: youseock Date: Thu, 23 Nov 2023 18:19:42 +0900 Subject: [PATCH 5/6] =?UTF-8?q?chore:=20=ED=95=84=EC=9A=94=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - console 삭제 - 주석 필요하면 추가 --- frontend/src/components/Auth/AuthProvider.tsx | 28 ------------------- frontend/src/components/Common/Logo.tsx | 1 + frontend/src/components/Header/index.tsx | 6 ---- frontend/src/hooks/login/useAuth.ts | 3 +- 4 files changed, 2 insertions(+), 36 deletions(-) diff --git a/frontend/src/components/Auth/AuthProvider.tsx b/frontend/src/components/Auth/AuthProvider.tsx index 16ad72a..d567c26 100644 --- a/frontend/src/components/Auth/AuthProvider.tsx +++ b/frontend/src/components/Auth/AuthProvider.tsx @@ -8,34 +8,6 @@ type AuthState = { setLogin: () => void; }; -// const TOKEN_KEY = 'accessToken'; -// const AUTH_TEST_API = 'http://101.101.208.240:3000/auths/tests'; -// const UNAUTHORIZED_STATUS = 401; - -// function saveToken(token: string) { -// localStorage.setItem(TOKEN_KEY, token); -// } - -// function getToken() { -// return localStorage.getItem(TOKEN_KEY); -// } - -// function removeToken() { -// localStorage.removeItem(TOKEN_KEY); -// } - -// async function fetchAuth() { -// const token = getToken(); -// if (!token) return; -// try { -// axios.defaults.headers.common['Authorization'] = `Bearer ${token}`; -// const response = await axios.get('AUTH_TEST_API').json(); -// if (response.statusCode == UNAUTHORIZED_STATUS) return; -// } catch (e) { -// console.log(e); -// } -// } - const AuthProvider = ({ children }: { children: React.ReactNode }) => { AuthContext.Provider; const setLogout = () => { diff --git a/frontend/src/components/Common/Logo.tsx b/frontend/src/components/Common/Logo.tsx index 96257af..851ed6c 100644 --- a/frontend/src/components/Common/Logo.tsx +++ b/frontend/src/components/Common/Logo.tsx @@ -3,6 +3,7 @@ interface Props { } export default function Logo({ size }: Props) { + // public이란 곳에 리소스 넣어두면 build시에 바로 밑에 생기기 때문에 ./으로 접근 가능합니다. return (
logo diff --git a/frontend/src/components/Header/index.tsx b/frontend/src/components/Header/index.tsx index 99aadd0..1b2612c 100644 --- a/frontend/src/components/Header/index.tsx +++ b/frontend/src/components/Header/index.tsx @@ -1,17 +1,11 @@ import { css } from '@style/css'; -import { useEffect } from 'react'; - import Logo from '@/components/Common/Logo'; import useAuth from '@/hooks/login/useAuth'; export default function Header() { const { changeLoginInfo, changeLogoutInfo, isLogin } = useAuth(); - useEffect(() => { - console.log(isLogin, '로그인 정보 확인용입니다.'); - }, [isLogin]); - const handleLogin = () => { changeLoginInfo(); }; diff --git a/frontend/src/hooks/login/useAuth.ts b/frontend/src/hooks/login/useAuth.ts index 1da53ae..86364f9 100644 --- a/frontend/src/hooks/login/useAuth.ts +++ b/frontend/src/hooks/login/useAuth.ts @@ -12,12 +12,11 @@ const AUTH_TEST_PATH = '/auths/tests'; const URL = `${API_URL}${AUTH_TEST_PATH}`; const fetchTokenValid = async (token: string) => { - console.log('accessToken 검증 시작 5시53분 배포'); try { const response = await axios.get(URL, { headers: { Authorization: `Bearer ${token}` }, }); - // {email: 'mahwin7085@gmail.com', nickname: 'mahwin7085@gmail.com' + // {email: 'mahwin7085@gmail.com', nickname: 'mahwin7085@gmail.com'} // 저장할 지 말지는 나중에 결정 const data = await response.data; console.log(data, '인증 받음.'); From 6cf3886699a38536d4a742950f8ec66c508f9684 Mon Sep 17 00:00:00 2001 From: youseock Date: Fri, 24 Nov 2023 00:00:00 +0900 Subject: [PATCH 6/6] =?UTF-8?q?refactor:=20=EB=B3=80=EC=88=98=EB=AA=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD,=20=ED=95=84=EC=9A=94=20=EC=97=86=EB=8A=94?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - isLogin => isLoggedin로 확정 (gpt 의견) - state로 관리하던 함수들 외부로 빼냄 - 필요없는 코드 삭제 - .env 파일로 api 관리 --- frontend/src/components/Auth/AuthContext.ts | 6 +-- frontend/src/components/Auth/AuthProvider.tsx | 42 ++++++------------- frontend/src/components/Common/Logo.tsx | 6 +-- frontend/src/components/Header/index.tsx | 4 +- frontend/src/hooks/login/useAuth.ts | 39 ++++++----------- 5 files changed, 31 insertions(+), 66 deletions(-) diff --git a/frontend/src/components/Auth/AuthContext.ts b/frontend/src/components/Auth/AuthContext.ts index c4e72c6..1c15dc3 100644 --- a/frontend/src/components/Auth/AuthContext.ts +++ b/frontend/src/components/Auth/AuthContext.ts @@ -1,9 +1,9 @@ import { createContext } from 'react'; const AuthContext = createContext({ - isLogin: false, - setLogout: () => {}, - setLogin: () => {}, + isLoggedin: false, + login: () => {}, + logout: () => {}, }); export default AuthContext; diff --git a/frontend/src/components/Auth/AuthProvider.tsx b/frontend/src/components/Auth/AuthProvider.tsx index d567c26..09cb906 100644 --- a/frontend/src/components/Auth/AuthProvider.tsx +++ b/frontend/src/components/Auth/AuthProvider.tsx @@ -2,37 +2,19 @@ import { useState } from 'react'; import AuthContext from './AuthContext'; -type AuthState = { - isLogin: boolean; - setLogout: () => void; - setLogin: () => void; -}; - const AuthProvider = ({ children }: { children: React.ReactNode }) => { - AuthContext.Provider; - const setLogout = () => { - setState((prevState: AuthState) => ({ - ...prevState, - isLogin: false, - })); - }; - - const setLogin = () => { - setState((prevState: AuthState) => ({ - ...prevState, - isLogin: true, - })); - }; - - const initialState = { - isLogin: false, - setLogout, - setLogin, - }; - - const [state, setState] = useState(initialState); - - return {children}; + function logout() { + setIsLogined(false); + } + function login() { + setIsLogined(true); + } + + const [isLoggedin, setIsLogined] = useState(false); + + return ( + {children} + ); }; export default AuthProvider; diff --git a/frontend/src/components/Common/Logo.tsx b/frontend/src/components/Common/Logo.tsx index 851ed6c..be0a6a2 100644 --- a/frontend/src/components/Common/Logo.tsx +++ b/frontend/src/components/Common/Logo.tsx @@ -4,9 +4,5 @@ interface Props { export default function Logo({ size }: Props) { // public이란 곳에 리소스 넣어두면 build시에 바로 밑에 생기기 때문에 ./으로 접근 가능합니다. - return ( -
- logo -
- ); + return logo; } diff --git a/frontend/src/components/Header/index.tsx b/frontend/src/components/Header/index.tsx index 1b2612c..df9121d 100644 --- a/frontend/src/components/Header/index.tsx +++ b/frontend/src/components/Header/index.tsx @@ -4,7 +4,7 @@ import Logo from '@/components/Common/Logo'; import useAuth from '@/hooks/login/useAuth'; export default function Header() { - const { changeLoginInfo, changeLogoutInfo, isLogin } = useAuth(); + const { changeLoginInfo, changeLogoutInfo, isLoggedin } = useAuth(); const handleLogin = () => { changeLoginInfo(); @@ -17,7 +17,7 @@ export default function Header() { return (
- {isLogin ? ( + {isLoggedin ? ( ) : ( diff --git a/frontend/src/hooks/login/useAuth.ts b/frontend/src/hooks/login/useAuth.ts index 86364f9..972787e 100644 --- a/frontend/src/hooks/login/useAuth.ts +++ b/frontend/src/hooks/login/useAuth.ts @@ -6,10 +6,10 @@ import AuthContext from '@/components/Auth/AuthContext'; import axios from 'axios'; const TOKEN_KEY = 'accessToken'; -const API_URL = 'http://101.101.208.240:3000'; +const BASE_URL = import.meta.env.VITE_API_URL; const AUTH_TEST_PATH = '/auths/tests'; -const URL = `${API_URL}${AUTH_TEST_PATH}`; +const URL = `${BASE_URL}${AUTH_TEST_PATH}`; const fetchTokenValid = async (token: string) => { try { @@ -29,48 +29,35 @@ const fetchTokenValid = async (token: string) => { }; export default function useAuth() { - const { isLogin, setLogin, setLogout } = useContext(AuthContext); + const { isLoggedin, login, logout } = useContext(AuthContext); const location = useLocation(); const navigate = useNavigate(); useEffect(() => { - // 로그인 된 상태라면 아무것도 하지 않음 - if (isLogin) return; - - // 로그인 안 된 상태라면 검증을 해야할 경우가 두 가지 경우가 있음 - - // 1. 쿼리에 accessToken이 있는 경우 - // 토큰을 검증 후에 localStorage에 저장하고 - // AuthContext.isLogin = true로 변경 - // 2. 쿼리에 accessToken이 없지만, localStorage에 accessToken이 있는 경우 - // 토큰을 꺼내서 검증 후에 AuthContext.isLogin = true로 변경 - + if (isLoggedin) return; const queryParams = new URLSearchParams(location.search); - // 당연히 쿼리에 token 값이 있으면 token 값을 먼저 사용하도록 함. const token = queryParams.get(TOKEN_KEY) || localStorage.getItem(TOKEN_KEY); if (!token) return; - const tokenValidPromise = fetchTokenValid(token); - tokenValidPromise.then((isValid) => { - if (isValid) { - saveAuthInfo(token); - } else { - removeAuthInfo(); - } - }); + evaluateToken(token); }, []); + const evaluateToken = async (token: string) => { + const isValid = await fetchTokenValid(token); + isValid ? saveAuthInfo(token) : removeAuthInfo(); + }; + const saveAuthInfo = (token: string) => { localStorage.setItem(TOKEN_KEY, token); - setLogin(); + login(); }; const removeAuthInfo = () => { // accessToken 없애기 // AuthContext 없애기 localStorage.removeItem(TOKEN_KEY); - setLogout(); + logout(); }; const changeLoginInfo = () => { @@ -86,5 +73,5 @@ export default function useAuth() { // AuthContext 없애기 removeAuthInfo(); }; - return { changeLoginInfo, changeLogoutInfo, isLogin }; + return { changeLoginInfo, changeLogoutInfo, isLoggedin }; }