From c6da437a8def16bb5b3de56c5cfb5c93bbe94968 Mon Sep 17 00:00:00 2001 From: ysCha Date: Fri, 3 Apr 2026 13:35:23 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8,=20=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83=20=EC=B6=94?= =?UTF-8?q?=EC=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useLogout.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/hooks/useLogout.js diff --git a/src/hooks/useLogout.js b/src/hooks/useLogout.js new file mode 100644 index 00000000..cbaed9db --- /dev/null +++ b/src/hooks/useLogout.js @@ -0,0 +1,38 @@ +import { useRecoilState, useRecoilValue } from 'recoil' +import { sessionStore } from '@/store/commonAtom' +import { globalLocaleStore } from '@/store/localeAtom' +import { stuffSearchState } from '@/store/stuffAtom' +import { useAxios } from '@/hooks/useAxios' +import { logout } from '@/lib/authActions' +import Cookies from 'js-cookie' + +export function useLogout() { + const [sessionState] = useRecoilState(sessionStore) + const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState) + const globalLocaleState = useRecoilValue(globalLocaleStore) + const { promisePost } = useAxios(globalLocaleState) + + const logoutProcess = async () => { + const param = { + loginId: sessionState.userId, + requestId: Cookies.get('sessionId'), + } + await promisePost({ url: '/api/login/v1.0/logout', data: param }) + .then(async (res) => { + if (res.data.result.resultCode === 'S') { + setStuffSearch({ + ...stuffSearch, + code: 'DELETE', + }) + Cookies.remove('sessionId') + await logout() + window.location.href = '/login' + } + }) + .catch((error) => { + alert(error.response?.data?.message || 'ログアウトに失敗しました。') + }) + } + + return { logoutProcess } +}