import { supabase } from "@/archive/lib/supabase"; import { authLogger } from "@/utils/logger"; import { showAuthToast } from "@/utils/auth"; /** * 로그인 기능 - Supabase Cloud 환경에 최적화 */ export const signInWithDirectApi = async (email: string, password: string) => { authLogger.info("Supabase Cloud 로그인 시도"); try { // Supabase Cloud를 통한 로그인 요청 const { data, error } = await supabase.auth.signInWithPassword({ email, password, }); // 오류 응답 처리 if (error) { authLogger.error("로그인 오류:", error); // 오류 메시지 포맷팅 let errorMessage = error.message; if (error.message.includes("Invalid login credentials")) { errorMessage = "이메일 또는 비밀번호가 올바르지 않습니다."; } else if (error.message.includes("Email not confirmed")) { errorMessage = "이메일 인증이 완료되지 않았습니다. 이메일을 확인해주세요."; } showAuthToast("로그인 실패", errorMessage, "destructive"); return { error: { message: errorMessage }, user: null }; } // 로그인 성공 처리 if (data && data.user) { authLogger.info("로그인 성공:", data.user); showAuthToast("로그인 성공", "환영합니다!"); return { error: null, user: data.user }; } else { // 사용자 정보가 없는 경우 (드문 경우) authLogger.warn("로그인 성공했지만 사용자 정보가 없습니다"); showAuthToast( "로그인 부분 성공", "로그인은 성공했지만 사용자 정보를 가져오지 못했습니다.", "default" ); return { error: { message: "사용자 정보 조회 실패" }, user: null }; } } catch (error: any) { authLogger.error("로그인 요청 중 예외:", error); const errorMessage = error.message || "로그인 중 오류가 발생했습니다."; showAuthToast("로그인 요청 실패", errorMessage, "destructive"); return { error: { message: errorMessage }, user: null }; } };