From 90f79a7a691943a496f67f01c1e493256070e4de Mon Sep 17 00:00:00 2001 From: dujinkim Date: Mon, 7 Jul 2025 01:44:45 +0000 Subject: (대표님) 변경사항 20250707 10시 43분 - unstaged 변경사항 추가 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/users/session/helper.ts | 62 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 lib/users/session/helper.ts (limited to 'lib/users/session/helper.ts') diff --git a/lib/users/session/helper.ts b/lib/users/session/helper.ts new file mode 100644 index 00000000..439ab32d --- /dev/null +++ b/lib/users/session/helper.ts @@ -0,0 +1,62 @@ +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) + } + } + \ No newline at end of file -- cgit v1.2.3