diff --git a/lib/actions/loginAction.ts b/lib/actions/loginAction.ts index 5260d69..7f21f9b 100644 --- a/lib/actions/loginAction.ts +++ b/lib/actions/loginAction.ts @@ -1,10 +1,19 @@ "use server"; +import { serverApi } from "@/lib/server-api"; +import { isAxiosError } from "axios"; + type LoginState = { success: boolean; message: string; }; +type LoginResponse = { + code: string; + status: number; + message: string; +}; + export async function loginAction( prevState: LoginState, formData: FormData, @@ -12,20 +21,29 @@ export async function loginAction( const email = formData.get("email"); const password = formData.get("password"); - // Mock delay - await new Promise((resolve) => setTimeout(resolve, 1000)); - - // TODO: 실제 백엔드 API 호출로 교체 필요 - // const response = await fetch("https://api.comatching.com/login", { - // method: "POST", - // body: JSON.stringify({ email, password }), - // headers: { "Content-Type": "application/json" }, - // }); - - // Mock logic - if (email === "test@test.com" && password === "1234") { - return { success: true, message: "" }; + try { + await serverApi.post({ + path: "/api/auth/login", + body: { email, password }, + }); + } catch (error) { + if (isAxiosError(error)) { + const status = error.response?.status; + if (status === 400 || status === 401) { + return { success: false, message: "이메일 혹은 비밀번호가 틀립니다" }; + } + console.error("[loginAction] API error", { + status, + data: error.response?.data, + }); + } else { + console.error("[loginAction] Unexpected error", error); + } + return { + success: false, + message: "서버 오류가 발생했습니다. 잠시 후 다시 시도해주세요.", + }; } - return { success: false, message: "이메일 혹은 비밀번호가 틀립니다" }; + return { success: true, message: "로그인 성공" }; }