2026-04-03 18:01:53 +09:00

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' })
}