diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts index c5cd6cc7..408b83dd 100644 --- a/frontend/src/api/index.ts +++ b/frontend/src/api/index.ts @@ -34,6 +34,8 @@ export const requestPostOAuthLogin = (provider: OAuthProvider, code: string) => body: JSON.stringify({ oauthProvider: provider, code }), }); +export const requestPostLogout = () => http.post(`/api/auth/logout`); + export const requestGetMemberInfo = () => http.get('/api/me'); export const requestGetOneStudyData = async (studyId: string) => { diff --git a/frontend/src/contexts/MemberInfoProvider.tsx b/frontend/src/contexts/MemberInfoProvider.tsx index 6674d468..749248a5 100644 --- a/frontend/src/contexts/MemberInfoProvider.tsx +++ b/frontend/src/contexts/MemberInfoProvider.tsx @@ -9,7 +9,7 @@ import { ROUTES_PATH } from '@Constants/routes'; import tokenStorage from '@Utils/tokenStorage'; import url from '@Utils/url'; -import { requestGetMemberInfo } from '@Apis/index'; +import { requestGetMemberInfo, requestPostLogout } from '@Apis/index'; import type { MemberInfo } from '@Types/member'; @@ -35,8 +35,9 @@ const MemberInfoProvider = ({ children }: PropsWithChildren) => { const actions: Actions = useMemo( () => ({ refetchMemberInfo: refetch, - clearMemberInfo: () => { - tokenStorage.clear(); + clearMemberInfo: async () => { + tokenStorage.removeAccessToken(); + await requestPostLogout(); clearResult(); navigate(ROUTES_PATH.landing); }, diff --git a/frontend/src/mocks/handlers/authHandler.ts b/frontend/src/mocks/handlers/authHandler.ts index 2c5718d8..95662ab5 100644 --- a/frontend/src/mocks/handlers/authHandler.ts +++ b/frontend/src/mocks/handlers/authHandler.ts @@ -6,6 +6,11 @@ import { hasCookie } from '@Utils/cookie'; import { ACCESS_TOKEN, NEW_ACCESS_TOKEN, USER_DATA } from '../mockData'; export const authHandler = [ + // 로그아웃 API + rest.post('api/auth/logout', (req, res, ctx) => { + return res(ctx.status(200)); + }), + // 게스트 로그인 API rest.post('/api/auth/guest', (req, res, ctx) => { return res(