import { getIronSession, type SessionOptions } from 'iron-session'
import { cookies } from 'next/headers'

// Sesión cifrada en cookie httpOnly (equivalente a la sesión Django de antes).
export interface SessionData {
  bnetId?: number
  bnetEmail?: string
  username?: string // cuenta de juego elegida (<bnetId>#<index>)
  accountId?: number
  // Secreto TOTP pendiente de confirmar (hex) durante el alta de 2FA, ligado a
  // la cuenta de juego que lo generó. Se guarda sólo hasta verificar el código.
  pending2fa?: string
  pending2faFor?: number
}

export const sessionOptions: SessionOptions = {
  password: process.env.SESSION_SECRET as string,
  cookieName: 'nightspire_session',
  cookieOptions: {
    httpOnly: true,
    secure: process.env.NODE_ENV === 'production',
    sameSite: 'lax',
    path: '/',
  },
}

export async function getSession() {
  return getIronSession<SessionData>(await cookies(), sessionOptions)
}
