Skip to content

feat 비밀번호 재설정 기능 구현 #71

Merged
Gimini-3 merged 11 commits intodevelopfrom
feat/37-password-reset
Feb 11, 2026
Merged

feat 비밀번호 재설정 기능 구현 #71
Gimini-3 merged 11 commits intodevelopfrom
feat/37-password-reset

Conversation

@Gimini-3
Copy link
Copy Markdown
Contributor

#️⃣ 연관된 이슈

📝 작업 내용

비밀번호 재설정 플로우를 Draft 기반으로 추가했습니다.
Step1에서 Draft를 발급하고, Step2에서 SMS OTP 발송, Step3에서 OTP 검증 후 Step4에서 새 비밀번호를 설정하는 흐름입니다.
진행 상태는 Redis Draft에 저장하고 TTL로 만료 처리합니다.

🔍 주요 변경 사항

  • Password Reset 도메인 추가
    • Draft 생성 API: /api/password-reset/drafts
    • SMS 발송 API: /api/password-reset/sms/send
    • OTP 검증 API: /api/password-reset/otp/verify
    • 비밀번호 변경 API: /api/password-reset/password
  • Redis Draft 저장소 추가
    • PasswordResetDraftRedisValue로 상태(step, otpState 등) 관리
    • TTL 유지 업데이트(updatePreserveTtl) 지원
  • SMS 발송 연동
    • Solapi 기반 OTP 발송
    • OTP 만료/재전송 윈도우/시도 횟수 제한 로직 포함
  • 비밀번호 변경 반영
    • MemberRepository에 phoneNumber 기준 passwordHash 업데이트 쿼리 추가
  • 설정/문서화
    • SecurityConfig/api/password-reset/** permitAll 추가
    • SwaggerConfig에 PasswordReset API group 추가
    • application-local.ymlpassword-reset.draft-ttl-minutes 추가
  • 빌드 설정
    • QueryDSL generated output 디렉토리 설정 정리(Gradle 최신 방식)

🧪 테스트/검증

  • 로컬에서 Draft 생성 → OTP 발송 → OTP 검증 → 비밀번호 변경까지 플로우 동작 확인
  • Redis Draft TTL 동작 확인
  • Swagger에 PasswordReset 그룹 노출 확인

⚠️ 영향 범위

  • API 변경: 있음 (password-reset 신규 엔드포인트)
  • DB 변경: 없음 (schema 변경 없음)
  • Redis/외부연동: 있음 (Redis draft 저장 + Solapi SMS)
  • 설정 변경: 있음 (password-reset.draft-ttl-minutes 추가)

@Gimini-3 Gimini-3 self-assigned this Feb 11, 2026
@Gimini-3 Gimini-3 merged commit 7a1433f into develop Feb 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feat] 비밀번호 찾기 기능 구현

1 participant