import { authenticateWithSGips, verifyExternalCredentials } from "../auth/verifyCredentails"; import { SessionRepository } from "./repository"; // lib/session/helpers.ts - NextAuth 헬퍼 함수들 개선 export const authHelpers = { // 1차 인증 검증 및 임시 키 생성 (DB 버전) async performFirstAuth(username: string, password: string, provider: 'email' | 'sgips') { console.log('performFirstAuth started:', { username, provider }) try { let authResult; if (provider === 'sgips') { authResult = await authenticateWithSGips(username, password) } else { authResult = await verifyExternalCredentials(username, password) } if (!authResult.success || !authResult.user) { return { success: false, error: 'Invalid credentials' } } // DB에 임시 인증 세션 생성 const expiresAt = new Date(Date.now() + (10 * 60 * 1000)) // 10분 후 만료 const tempAuthKey = await SessionRepository.createTempAuthSession({ userId: authResult.user.id, email: authResult.user.email, authMethod: provider, expiresAt }) console.log('Temp auth stored in DB:', { tempAuthKey, userId: authResult.user.id, email: authResult.user.email, authMethod: provider, expiresAt }) return { success: true, tempAuthKey, userId: authResult.user.id, email: authResult.user.email } } catch (error) { console.error('First auth error:', error) return { success: false, error: 'Authentication failed' } } }, // 임시 인증 정보 조회 (DB 버전) async getTempAuth(tempAuthKey: string) { return await SessionRepository.getTempAuthSession(tempAuthKey) }, // 임시 인증 정보 삭제 (DB 버전) async clearTempAuth(tempAuthKey: string) { await SessionRepository.markTempAuthSessionAsUsed(tempAuthKey) } }