onsitesurvey/src/libs/session.ts
2025-04-04 09:01:49 +09:00

34 lines
1.1 KiB
TypeScript

import { getIronSession, SessionOptions } from 'iron-session'
import { cookies } from 'next/headers'
export const sessionOptions: SessionOptions = {
cookieName: 'onsitesurvey_session',
password: process.env.SESSION_PASSWORD as string,
cookieOptions: {
secure: process.env.NODE_ENV === 'production', // HTTPS에서만 쿠키 전송 (production일 때만 true)
httpOnly: true, // 클라이언트 JavaScript에서 쿠키 접근 차단
sameSite: 'lax', // 사용자가 외부 사이트의 링크를 클릭해 사이트에 들어올 때 쿠키가 전송됨
// maxAge: 2147483647, // 최대 유효기간(약 68년)
maxAge: 60 * 60 * 24 * 30, // 30일
path: '/', // 쿠키가 유효한 경로 (기본값: 사이트 전체에 대해 유효)
},
}
export interface SessionData {
username: string | null
email: string | null
isLoggedIn: boolean
}
export const defaultSession: SessionData = {
username: '',
email: '',
isLoggedIn: false,
}
export const getSession = async () => {
const cookieStore = await cookies()
const session = await getIronSession<SessionData>(cookieStore, sessionOptions)
return session
}