Merge pull request 'dev' (#756) from dev into dev-deploy
Reviewed-on: #756
This commit is contained in:
commit
140cbd9439
@ -3,12 +3,12 @@
|
||||
import { useState } from 'react'
|
||||
import { useMessage } from '@/hooks/useMessage'
|
||||
import { setSession, login } from '@/lib/authActions'
|
||||
import Cookies from 'js-cookie'
|
||||
import { sessionStore } from '@/store/commonAtom'
|
||||
import { useRecoilState } from 'recoil'
|
||||
import { useAxios } from '@/hooks/useAxios'
|
||||
import { globalLocaleStore } from '@/store/localeAtom'
|
||||
import { useRouter } from 'next/navigation'
|
||||
import Cookies from 'js-cookie'
|
||||
|
||||
import GlobalSpinner from '@/components/common/spinner/GlobalSpinner'
|
||||
|
||||
|
||||
@ -50,6 +50,7 @@ export default function Header(props) {
|
||||
const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState)
|
||||
|
||||
const { closeAll } = usePopup()
|
||||
const { logoutProcess } = useLogout()
|
||||
|
||||
const { userSession } = props
|
||||
const [sessionState, setSessionState] = useRecoilState(sessionStore)
|
||||
@ -78,7 +79,6 @@ export default function Header(props) {
|
||||
const { promiseGet } = useAxios()
|
||||
|
||||
const { swalFire } = useSwal()
|
||||
const { logoutProcess } = useLogout()
|
||||
|
||||
/**
|
||||
* 지붕재 목록 Header에서 조회
|
||||
|
||||
@ -6,10 +6,9 @@ import { useRecoilState, useRecoilValue } from 'recoil'
|
||||
import { useAxios } from '@/hooks/useAxios'
|
||||
import { globalLocaleStore } from '@/store/localeAtom'
|
||||
import { login, setSession } from '@/lib/authActions'
|
||||
import { useLogout } from '@/hooks/useLogout'
|
||||
import { useSwal } from '@/hooks/useSwal'
|
||||
import { QcastContext } from '@/app/QcastProvider'
|
||||
import { useRouter } from 'next/navigation'
|
||||
import { useLogout } from '@/hooks/useLogout'
|
||||
|
||||
export default function ChangePasswordPop(props) {
|
||||
const globalLocaleState = useRecoilValue(globalLocaleStore)
|
||||
@ -18,10 +17,9 @@ export default function ChangePasswordPop(props) {
|
||||
|
||||
const { swalFire } = useSwal()
|
||||
const { patch } = useAxios(globalLocaleState)
|
||||
const { logoutProcess } = useLogout()
|
||||
const { getMessage } = useMessage()
|
||||
const [sessionState, setSessionState] = useRecoilState(sessionStore)
|
||||
const router = useRouter()
|
||||
const { logoutProcess } = useLogout()
|
||||
const formInitValue = {
|
||||
password1: '',
|
||||
password2: '',
|
||||
|
||||
@ -6,6 +6,11 @@ import { useAxios } from '@/hooks/useAxios'
|
||||
import { logout } from '@/lib/authActions'
|
||||
import Cookies from 'js-cookie'
|
||||
|
||||
/**
|
||||
* 로그아웃 처리 Hook
|
||||
* - 로그아웃 API 호출 후 성공/실패 상관없이 로그아웃 처리
|
||||
* - Header, ChangePasswordPop 등에서 공통으로 사용
|
||||
*/
|
||||
export function useLogout() {
|
||||
const [sessionState] = useRecoilState(sessionStore)
|
||||
const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState)
|
||||
@ -15,23 +20,24 @@ export function useLogout() {
|
||||
const logoutProcess = async () => {
|
||||
const param = {
|
||||
loginId: sessionState.userId,
|
||||
requestId: Cookies.get('sessionId'),
|
||||
requestId: Cookies.get('sessionId'), // 로그인 시 저장한 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 || 'ログアウトに失敗しました。')
|
||||
})
|
||||
|
||||
// 로그아웃 API 호출 (실패해도 로그아웃 진행)
|
||||
try {
|
||||
await promisePost({ url: '/api/login/v1.0/logout', data: param })
|
||||
} catch (error) {
|
||||
console.log('logout api error:', error)
|
||||
}
|
||||
|
||||
// 물건검색 상태 초기화
|
||||
setStuffSearch({
|
||||
...stuffSearch,
|
||||
code: 'DELETE',
|
||||
})
|
||||
Cookies.remove('sessionId') // sessionId 쿠키 삭제
|
||||
await logout() // iron-session 세션 파기
|
||||
window.location.href = '/login' // 로그인 페이지로 이동 (full reload)
|
||||
}
|
||||
|
||||
return { logoutProcess }
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user