diff --git a/frontend/src/pages/relay/LoginPage.vue b/frontend/src/pages/relay/LoginPage.vue index 8e8ded6..d3f5098 100644 --- a/frontend/src/pages/relay/LoginPage.vue +++ b/frontend/src/pages/relay/LoginPage.vue @@ -16,12 +16,6 @@ const showPassword = ref(false) const keepLogin = ref(true) const submitting = ref(false) -// 미인증 계정 로그인 시도 시(서버 403) 인라인 재발송 안내 노출 -const needsVerify = ref(false) -const pendingEmail = ref('') -const resending = ref(false) -const resendDone = ref(false) - // 상단 안내 배너 — 이메일 인증(/login?verified=1|0) 또는 비밀번호 재설정 완료(/login?reset=1) const verifyBanner = computed<{ ok: boolean; text: string } | null>(() => { if (route.query.reset === '1') @@ -40,7 +34,6 @@ const verifyBanner = computed<{ ok: boolean; text: string } | null>(() => { async function onLogin() { if (submitting.value) return submitting.value = true - needsVerify.value = false try { await authStore.login({ email: email.value.trim(), @@ -49,32 +42,23 @@ async function onLogin() { }) await router.push('/projects') } catch (err) { - // 미인증 계정은 서버가 403 으로 응답 → 인라인 재발송 안내 노출(메시지 토스트는 인터셉터가 처리) + // 미인증 계정(서버 403) → 인증 메일을 즉시 발송하고 '발송 완료' 화면으로 이동 const status = (err as { response?: { status?: number } })?.response?.status if (status === 403) { - pendingEmail.value = email.value.trim() - resendDone.value = false - needsVerify.value = true + const addr = email.value.trim() + try { + await authStore.resendVerification(addr) + } catch { + // 재발송 실패는 API 인터셉터가 전역 처리 + } + await router.push({ path: '/signup', query: { sent: addr } }) } + // 그 외(자격 불일치 등) 에러 메시지는 API 인터셉터에서 전역 처리됨 } finally { submitting.value = false } } -// 인증 메일 재발송 — 미인증 로그인 안내에서 호출(존재 여부는 서버가 노출하지 않음) -async function resendVerify() { - if (resending.value || !pendingEmail.value) return - resending.value = true - try { - await authStore.resendVerification(pendingEmail.value) - resendDone.value = true - } catch { - // 에러 메시지는 API 인터셉터에서 전역 처리됨 - } finally { - resending.value = false - } -} - // 소셜 로그인 — 백엔드 OAuth 엔드포인트로 전체 페이지 이동(쿠키 기반 세션이라 새 창 X) const apiBase = import.meta.env.VITE_API_BASE_URL || '/api' function goSocial(provider: 'google' | 'kakao') { @@ -183,32 +167,6 @@ const points = [ {{ verifyBanner.text }} - -
-