56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import type { SessionData } from '@/types/Auth'
|
|
import { cookies } from 'next/headers'
|
|
import { NextResponse } from 'next/server'
|
|
import { getIronSession } from 'iron-session'
|
|
import { axiosInstance } from '@/libs/axios'
|
|
import { sessionOptions } from '@/libs/session'
|
|
import { tracking } from '@/libs/tracking'
|
|
|
|
export async function POST(request: Request) {
|
|
const cookieStore = await cookies()
|
|
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
|
|
|
const headers: Record<string, string> = {
|
|
referer: process.env.NEXT_PUBLIC_QSP_API_REFERER || '',
|
|
}
|
|
|
|
console.log('🚀 ~ logout POST ~ loginId:', session.userId, 'sessionId:', session.sessionId)
|
|
|
|
try {
|
|
const result = await axiosInstance(`${process.env.NEXT_PUBLIC_QSP_API_URL}`, headers).post(`/api/user/logout`, {
|
|
loginId: session.userId,
|
|
accsSiteCd: 'QREAD',
|
|
actLog: 'LOGOUT',
|
|
requestId: session.sessionId,
|
|
})
|
|
console.log('🚀 ~ logout POST ~ result:', result.data)
|
|
} catch (e) {
|
|
console.error('🚀 ~ logout POST ~ error:', e)
|
|
}
|
|
|
|
tracking({
|
|
url: '/api/auth/logout',
|
|
data: JSON.stringify({ loginId: session.userId }),
|
|
})
|
|
session.destroy()
|
|
console.log('🚀 ~ logout POST ~ session destroyed')
|
|
|
|
return NextResponse.json({ code: 200, message: 'Logout successful' })
|
|
}
|
|
|
|
export async function GET(request: Request) {
|
|
const cookieStore = await cookies()
|
|
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
|
|
|
|
console.log('🚀 ~ logout GET ~ userId:', session.userId)
|
|
|
|
tracking({
|
|
url: '/api/auth/logout',
|
|
data: JSON.stringify({ userId: session.userId }),
|
|
})
|
|
session.destroy()
|
|
console.log('🚀 ~ logout GET ~ session destroyed')
|
|
|
|
return NextResponse.json({ code: 200, message: 'Logout successful' })
|
|
}
|