-
Notifications
You must be signed in to change notification settings - Fork 1
비밀번호 찾기, 회원가입 이메일 인증 타입 구분 #41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@0zuth 코드 확인 및 검증 부탁드립니다
Walkthrough이 PR은 이메일 인증 흐름에 인증 유형( Changes
Sequence Diagram(s)sequenceDiagram
participant User as 사용자
participant UI as EmailCertificationForm
participant HookCheck as useCheckEmailCertification
participant HookReset as useResetPassword
participant API as server
User->>UI: 인증 코드 입력 후 제출
alt mode = "signup"
UI->>HookCheck: mutate({ email, certification })
HookCheck->>API: POST /check-email { email, certification }
API-->>HookCheck: 검증 결과
HookCheck-->>UI: onSuccess(valid)
UI->>User: 다음 단계(onNext(certification))
else mode = "findPassword"
UI->>HookReset: mutate({ email, code: certification })
HookReset->>API: POST /reset-password { email, code }
API-->>HookReset: 성공/오류
HookReset-->>UI: onSuccess(response)
UI->>User: 다음 단계(onNext(certification))
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes
시
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
src/widgets/auth/ui/EmailCertificationForm.tsx (1)
40-62: mode 기반 분기 로직이 명확하고 올바르게 구현되었습니다.
findPassword모드에서는resetPassword를 호출하고, 그 외에는checkEmail로 인증번호를 검증합니다. 두 플로우 모두 성공 시onNext를 호출하여 일관성을 유지합니다.선택적 개선사항: 현재 하나의 컴포넌트가 두 가지 다른 플로우를 처리합니다. 향후 로직이 더 복잡해지면
SignupCertificationForm과PasswordResetCertificationForm으로 분리하는 것을 고려해볼 수 있습니다.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
src/entities/auth/DTO.d.ts(2 hunks)src/entities/auth/hooks/useEmailCertification.tsx(1 hunks)src/entities/user/api.ts(2 hunks)src/pages/auth/find-password.tsx(1 hunks)src/widgets/auth/ui/EmailCertificationForm.tsx(3 hunks)src/widgets/auth/ui/EmailForm.tsx(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- src/widgets/auth/ui/EmailForm.tsx
🧰 Additional context used
🧬 Code graph analysis (4)
src/widgets/auth/ui/EmailCertificationForm.tsx (3)
src/entities/auth/hooks/useCheckEmailCertification.tsx (1)
useCheckEmailCertification(9-29)src/entities/auth/api.ts (1)
resetPassword(257-272)src/entities/auth/hooks/useResetPassword.tsx (1)
useResetPassword(16-45)
src/pages/auth/find-password.tsx (2)
src/widgets/auth/ui/EmailForm.tsx (1)
EmailForm(21-58)src/widgets/auth/ui/EmailCertificationForm.tsx (1)
EmailCertificationForm(22-79)
src/entities/user/api.ts (2)
src/entities/auth/DTO.d.ts (1)
SendEmailCertificationRequest(62-65)src/shared/config/api.ts (1)
API_PATHS(2-98)
src/entities/auth/hooks/useEmailCertification.tsx (1)
src/entities/user/api.ts (1)
sendEmailCertification(202-219)
🔇 Additional comments (8)
src/pages/auth/find-password.tsx (2)
56-58: 구현이 올바릅니다.Step 2 핸들러가 빈 함수인 이유는
useResetPassword훅이 성공 시 내부적으로 로그인 페이지로 네비게이션을 처리하기 때문입니다. 주석이 의도를 명확히 설명하고 있습니다.
62-72: 비밀번호 찾기 플로우 통합이 잘 구현되었습니다.
certificationType="TEMPORARY_PASSWORD"와mode="findPassword"props가 올바르게 전달되어 회원가입 플로우와 명확하게 구분됩니다.src/entities/auth/hooks/useEmailCertification.tsx (1)
10-16: mutation 타입 업데이트가 올바르게 구현되었습니다.페이로드가 객체 구조로 변경되어
certificationType을 선택적으로 전달할 수 있습니다. API 레이어의 변경 사항과 일치하며 타입 안정성이 유지됩니다.src/entities/auth/DTO.d.ts (2)
37-40:ResetPasswordRequest에code필드 추가가 적절합니다.비밀번호 재설정 시 인증 코드를 전달하기 위한 필드가 올바르게 추가되었습니다.
백엔드 API가 동일한 필드명(
code)을 기대하는지 확인해주세요.
62-65: 새로운SendEmailCertificationRequest인터페이스가 잘 정의되었습니다.
certificationType필드의 유니온 타입이 명확하게 정의되어 회원가입과 비밀번호 찾기 플로우를 타입 레벨에서 구분합니다.백엔드 API가
"EMAIL"|"TEMPORARY_PASSWORD"값을 정확히 인식하는지 확인해주세요.src/entities/user/api.ts (1)
196-219:sendEmailCertificationAPI 업데이트가 잘 구현되었습니다.
certificationType매개변수가 기본값"EMAIL"과 함께 추가되어 기존 호출과의 호환성을 유지하면서 새로운 플로우를 지원합니다. 페이로드 타입이SendEmailCertificationRequest로 올바르게 지정되었습니다.src/widgets/auth/ui/EmailCertificationForm.tsx (2)
16-20: props 설계가 유연하고 타입 안전합니다.
modeprop으로 두 가지 플로우를 구분하며,onNext시그니처가 선택적certification매개변수를 받도록 확장되었습니다. 기본값"signup"이 기존 동작을 유지합니다.
27-32: pending 상태 관리가 올바르게 구현되었습니다.두 개의 mutation hook에서 각각 pending 상태를 추적하고 이를 결합하여 UI에 반영합니다. 이를 통해 어느 작업이 진행 중이든 적절히 로딩 상태를 표시합니다.
…n/dev 비밀번호 찾기, 회원가입 이메일 인증 타입 구분
⚒️ 작업 내용
Summary by CodeRabbit
New Features
Refactor
✏️ Tip: You can customize this high-level summary in your review settings.