From 9bbc4f82b6b49f2047093460a9b2e8d22404b237 Mon Sep 17 00:00:00 2001 From: sohot8653 Date: Mon, 22 Sep 2025 14:22:28 +0900 Subject: [PATCH] =?UTF-8?q?[=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EA=B0=9C=EC=84=A0]=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=20=EC=B2=98=EB=A6=AC=20=EB=A1=9C=EC=A7=81=20=EA=B0=84=EC=86=8C?= =?UTF-8?q?=ED=99=94=20=EB=B0=8F=20=EC=97=90=EB=9F=AC=20=EB=A9=94=EC=8B=9C?= =?UTF-8?q?=EC=A7=80=20=EA=B0=9C=EC=84=A0,=20=EB=A1=9C=EA=B7=B8=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EA=B8=B0=EB=8A=A5=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/login.vue | 19 ++++++----------- stores/user.ts | 55 ++++++++++++++----------------------------------- 2 files changed, 22 insertions(+), 52 deletions(-) diff --git a/pages/login.vue b/pages/login.vue index fdcddd3..a99f95d 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -86,21 +86,14 @@ async function signIn() { isLoading.value = true; errorMessage.value = ""; - try { - const result = await userStore.login(userId.value, password.value); + const result = await userStore.login(userId.value, password.value); - if (result.success) { - // 로그인 성공 시 홈으로 이동 - await router.push("/"); - } else { - errorMessage.value = result.error || "로그인에 실패했습니다."; - } - } catch (error) { - errorMessage.value = "로그인 중 오류가 발생했습니다."; - console.error("로그인 오류:", error); - } finally { - isLoading.value = false; + if (result.success) { + await router.push("/"); + } else { + errorMessage.value = result.error; } + isLoading.value = false; } diff --git a/stores/user.ts b/stores/user.ts index 3e9ff39..d5d91f1 100644 --- a/stores/user.ts +++ b/stores/user.ts @@ -16,53 +16,30 @@ export const useUserStore = defineStore( userId: string; name: string; } - // 액션 const login = async (userId: string, password: string) => { - try { - // 실제 API 호출로 대체할 수 있습니다 + const { success, data, description } = await useApi< + ApiResponse + >("/login", { + method: "post", + body: { userId, password }, + }); - const { success, data } = await useApi>( - "/login", - { - method: "post", - body: { userId, password }, - } - ); - - if (success) { - user.value = data; - isLoggedIn.value = true; - } else { - throw new Error("아이디 또는 비밀번호가 올바르지 않습니다."); - } - - return { success }; - } catch (error: any) { - console.log(error); + if (success) { + user.value = data; + isLoggedIn.value = true; + return { success, data }; + } else { return { success: false, - error: - error?.response?.status === 401 - ? "아이디 또는 비밀번호가 올바르지 않습니다." - : error instanceof Error - ? error.message - : "로그인에 실패했습니다.", + error: description, }; } }; - const logout = async () => { - try { - await useApi("/members/logout", { - method: "post", - }); - } catch (error) { - console.error("로그아웃 요청 실패:", error); - } finally { - // 로컬 상태 정리 - user.value = null; - isLoggedIn.value = false; - } + const logout = () => { + user.value = null; + isLoggedIn.value = false; + useApi("/members/logout", { method: "post" }); }; const checkAuth = () => {