Skip to content

feat: 비밀번호 재설정과 가입 약관 동의 이력 구현 - #100

Merged
hywznn merged 6 commits into
mainfrom
feat/55-auth-recovery
Aug 6, 2026
Merged

feat: 비밀번호 재설정과 가입 약관 동의 이력 구현#100
hywznn merged 6 commits into
mainfrom
feat/55-auth-recovery

Conversation

@hywznn

@hywznn hywznn commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

왜 필요한가요?

Figma의 비밀번호 찾기·회원가입 화면이 실제 Server API와 안전하게 연결되도록 인증 복구와 약관 동의 이력을 구현합니다.

Refs #55

무엇이 바뀌나요?

  • POST /api/v1/auth/password-reset-requests를 추가했습니다.
  • POST /api/v1/auth/password-resets를 추가했습니다.
  • 존재하지 않는 이메일도 동일한 202 응답을 반환해 계정 존재 여부가 노출되지 않게 했습니다.
  • 재설정 원본 token은 반환·로그 저장하지 않고 DB에는 hash만 저장합니다.
  • 만료·재사용·동시 사용을 차단하고 비밀번호 변경 시 기존 Refresh Token을 폐기합니다.
  • 회원가입 시 필수·선택 약관의 version과 결과를 별도 이력으로 저장합니다.
  • Flyway V24와 PostgreSQL RLS 준비 V25를 추가했습니다.
  • 실제 메일 Provider가 없는 환경에서는 안전한 NoOp Adapter를 사용합니다.

보안·호환성

  • 이메일 존재 여부를 외부 응답으로 구분할 수 없습니다.
  • 원본 token·비밀번호·민감정보를 일반 로그와 감사로그에 남기지 않습니다.
  • 기존 로그인·Refresh Token API 계약을 유지합니다.
  • 회원가입 성공 후 자동 로그인하지 않습니다.

검증

  • ./gradlew clean test 성공
  • PostgreSQL 17 Migration·Tenant·RLS 테스트 성공
  • 정상·만료·위조·재사용·동시 요청·사업장 격리 시나리오 검증

병합 순서

이 PR의 V24·V25를 먼저 병합한 뒤 #54의 V26·V27, #85의 V28 순서로 병합해야 합니다.

hywznn added 4 commits August 6, 2026 18:26
비밀번호 재설정 토큰과 약관 동의 이력을 위한 V24 스키마를 추가합니다. PostgreSQL tenant 정책과 안전한 토큰 생성·해시·알림 Port를 구성하고 관련 설정값을 등록합니다.
회원가입 필수 약관과 버전을 검증해 이력을 기록합니다. 비밀번호 재설정 요청·완료 API에 계정 노출 방지, 일회용 토큰, 동시 요청 제어, IP 제한, 비밀번호 변경 및 기존 세션 폐기를 연결합니다.
약관 동의, 존재 여부를 숨긴 재설정 요청, 토큰 만료·재사용·동시 요청, 기존 세션 폐기와 OpenAPI 계약을 검증합니다. PostgreSQL migration과 RLS 격리 검증에도 신규 테이블과 bootstrap 함수를 포함합니다.
비밀번호 재설정 만료·재요청·요청 제한 값과 가입 약관 버전 환경 변수를 예시 파일에 문서화합니다. 실제 알림 Provider가 후속 연동 대상임을 명시합니다.
@hywznn
hywznn requested review from chaeliki and krestar August 6, 2026 10:23
@hywznn
hywznn marked this pull request as ready for review August 6, 2026 10:32
비밀번호 변경 성공 시 같은 사용자의 모든 미사용 재설정 토큰을 한 번에 무효화합니다.\n계정 잠금을 먼저 획득해 서로 다른 링크의 동시 사용도 한 요청만 성공하도록 정리합니다.\n알림 발송을 전용 비동기 실행기로 분리하고 Provider 실패가 202 응답에 영향을 주지 않도록 격리합니다.\n이전 링크 거부와 알림 실패 시 동일 응답을 검증하는 통합 테스트를 추가합니다.

@krestar krestar 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.

비밀번호 재설정의 보안·동시성 처리와 약관 동의 이력, 마이그레이션 구성을 확인했습니다.
현재 범위에서 blocking issue는 없어 승인합니다.

@hywznn
hywznn merged commit 55d34a7 into main Aug 6, 2026
4 of 5 checks passed
@hywznn
hywznn deleted the feat/55-auth-recovery branch August 6, 2026 15:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants