Skip to content

[FEATURE] 전화번호 중복가입 차단 및 로그인 플로우 개선 - #355

Merged
jeonbinggu merged 13 commits into
developfrom
block-duplicate-sns-signup(#346)
Aug 11, 2026
Merged

[FEATURE] 전화번호 중복가입 차단 및 로그인 플로우 개선#355
jeonbinggu merged 13 commits into
developfrom
block-duplicate-sns-signup(#346)

Conversation

@jeonbinggu

@jeonbinggu jeonbinggu commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

🔀 Pull Request Title

전화번호 중복가입 차단 및 로그인 플로우 개선(#346)


🎞️ 주요 코드 설명

전화번호 중복가입 차단

  • MEMBER_412(전화번호 중복) 에러 코드 수신 시 온보딩 폼에서 중복 가입 안내 다이얼로그를 띄우도록 처리 (useOnBoardingForm.ts, useRequestPhoneVerification.ts)
  • 인증 요청 API 응답에서 에러 코드가 유실되던 문제 수정 (requestPhoneVerification.api.ts)

로그인 UX 개선

  • 로그인 페이지에 최근 로그인한 소셜 계정 안내 말풍선(RecentLoginDialog) 추가 및 위치 조정
  • 하드웨어 뒤로가기 시 앱 종료 확인 다이얼로그 추가, 히스토리 스택 버그 수정 (RootLayout.tsx, Router.tsx)

📌 PR 설명

이번 PR에서 어떤 작업을 했는지 요약해주세요.

  • 전화번호 중복(MEMBER_412)에 따른 중복가입 차단 처리 추가
  • 인증 요청 응답의 에러 코드(MEMBER_412) 유실 방지 수정
  • 로그인 페이지 최근 로그인 소셜 안내 말풍선 표시 및 위치 조정
  • 하드웨어 뒤로가기 시 앱 종료 확인 다이얼로그 추가 및 히스토리 스택 버그 수정
  • 말풍선 위치 및 버튼 gap 등 UI 미세 조정

  • 실기기 확인 필요: 마이페이지 탭 → 로그인 다이얼로그 → 카카오 신규가입 → 온보딩에서 하드웨어 back (CDP로는 네이티브 backButton 이벤트 판정 불가)
    📷 스크린샷

@jeonbinggu jeonbinggu self-assigned this Aug 3, 2026
@jeonbinggu jeonbinggu added feature 새 기능 추가 refactor 내부 구조 개선(가독성,확장성,유지보수성) labels Aug 3, 2026
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
finders Ready Ready Preview Aug 11, 2026 1:14pm

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude 자동 리뷰
⚠️ 이슈 4건 (Critical 0 / Major 2 / Minor 2)
검사 범위: 로직 오류 · 엣지 케이스/런타임(Capacitor 플랫폼 분기·히스토리·리스너) · 컨벤션 준수 (CLAUDE.md, .claude/skills/tdd-clean-arch/SKILL.md, references/{directory-structure,state-management,routing-forms-http,testing-guide}.md) · pnpm lint 통과, tsc -b 통과 (이 PR 변경 라인발 실패 없음)
후보 12건 중 8건은 독립 검증에서 confidence 80 미만으로 폐기했습니다. 컨벤션 위반으로 확정된 건은 없습니다.


Generated by Claude Code

/>
)}
{recentLoginProvider === "KAKAO" && !isAndroidApp() && (
<RecentLoginDialog className="absolute bottom-0 left-1/2 -translate-x-1/2 translate-y-1/4" />

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Major] pointer-events-none이 없어 이 말풍선이 Apple 버튼의 탭 영역을 가립니다.

말풍선은 AppleButton과 같은 relative 컨테이너 안에 position: absolute로, DOM상 버튼 에 렌더됩니다. 버튼(Press<button>)은 static이라 페인팅 순서상 말풍선이 위에 오고, 히트 테스트도 말풍선이 먼저 받습니다.

겹침 계산: 말풍선 높이 34px(text-xs 16 + py-1.25 10 + Polygon h-2.5 10 − -mt-0.5 2), 컨테이너 높이 = AppleButtonh-[3.125rem] 50px. bottom-0 → top 16px, 여기에 translate-y-1/4(자기 높이의 25% = 8.5px) → top 24.5px. 즉 **y 24.5~50px, 버튼 높이의 51%**가 덮입니다. 가로로는 left-1/2 -translate-x-1/2로 중앙 약 130px — "Apple로 계속하기" 라벨이 있는 지점입니다.

재현: iOS 앱 또는 모바일 웹에서 finders:recentLoginProvider"KAKAO"인 상태 → 로그인 화면 → Apple 버튼 중앙 아래쪽 탭 → SignInWithApple.authorize()가 호출되지 않습니다. 버튼 좌우 끝이나 위쪽만 반응합니다.

정적 외형은 그대로 두고 히트 테스트만 통과시키면 됩니다.

Suggested change
<RecentLoginDialog className="absolute bottom-0 left-1/2 -translate-x-1/2 translate-y-1/4" />
<RecentLoginDialog className="pointer-events-none absolute bottom-0 left-1/2 -translate-x-1/2 translate-y-1/4" />

Generated by Claude Code

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

기획에 의해 의도한 것임.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그 버튼이 가려지는 건 그럴 수 있는데 터치가 막히는 것도 의도된건가요?

@jeonbinggu jeonbinggu Aug 9, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

넵 어차피 카카오로 회원가입한 사용자는 애플로 시작하기를 안건들게 하는게 기획의 의도 같아서요..! 버튼 클릭이 안먹는거면 일단 다시 한 번 확인해 보겠습니다!

Comment thread src/hooks/auth/login/useKakaoOAuth.ts Outdated
Comment thread src/layouts/RootLayout.tsx Outdated
Comment thread src/pages/auth/TermsAgreementPage.tsx

@MlNTYS MlNTYS left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PRAISE: 전체적으로 괜찮아 보이네요! 근데 지금 회워가입 부분에서 뒤로가기 보호가 의도대로 동작하지 않을 수 있어 그 부분 확인 한 번만 부탁드립니다.
기존 backreplace경로에서 동작했는데, 지금 GlobalLoginDialogpush 경로이기에 확인이 필요할 것 같습니다.

recentLoginProvider 부분도 이번 수정에 맞춰 수정 필요해 보입니다!

@jeonbinggu
jeonbinggu requested a review from MlNTYS August 9, 2026 13:02
jeonbinggu and others added 2 commits August 9, 2026 22:02
GlobalLoginDialog는 /auth/login으로 push 이동해 히스토리가 남는다.
가입 단계 가드가 canGoBack 분기 뒤에 있어 이 경로로 진입하면 가드에
도달하지 못하고 입력 중이던 가입 정보가 날아갔다.

가드를 canGoBack 앞으로 옮기고 대상 경로를 가입 단계로 한정한다.
push로 진입하는 약관 열람(/auth/terms)은 제외.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
기록 시점을 기존 회원 분기로 옮기면서, 가입을 끝낸 신규 회원은
기록되는 지점이 사라졌다. 온보딩 시점엔 provider를 알 수 없어
신규 회원 분기에서 임시 보관 후 가입 완료 시 확정하도록 한다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jeonbinggu
jeonbinggu merged commit 0e0e121 into develop Aug 11, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature 새 기능 추가 refactor 내부 구조 개선(가독성,확장성,유지보수성)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REFACTOR] SNS 계정 통합 방지 - 동일 전화번호 중복 가입 차단

2 participants