34 lines
864 B
TypeScript
34 lines
864 B
TypeScript
import { getClientIp } from '../../utils/ip'
|
|
import { getSession, deleteSession, getSessionIdFromCookie, deleteSessionCookie } from '../../utils/session'
|
|
|
|
/**
|
|
* 로그아웃
|
|
* POST /api/auth/logout
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
const sessionId = getSessionIdFromCookie(event)
|
|
const clientIp = getClientIp(event)
|
|
|
|
if (sessionId) {
|
|
// 세션 정보 조회
|
|
const session = await getSession(sessionId)
|
|
|
|
// 로그아웃 이력 기록
|
|
if (session?.loginHistoryId) {
|
|
await execute(`
|
|
UPDATE wr_login_history
|
|
SET logout_at = NOW(), logout_ip = $1
|
|
WHERE history_id = $2
|
|
`, [clientIp, session.loginHistoryId])
|
|
}
|
|
|
|
// DB에서 세션 삭제
|
|
await deleteSession(sessionId)
|
|
}
|
|
|
|
// 세션 쿠키 삭제
|
|
deleteSessionCookie(event)
|
|
|
|
return { success: true }
|
|
})
|