Skip to content

[Feat/#39] 회원 탈퇴 기능 구현#54

Merged
chaeminyu merged 19 commits into
developfrom
Feat/#39-delete-user
Aug 24, 2025
Merged

[Feat/#39] 회원 탈퇴 기능 구현#54
chaeminyu merged 19 commits into
developfrom
Feat/#39-delete-user

Conversation

@y11n

@y11n y11n commented Aug 23, 2025

Copy link
Copy Markdown
Contributor

✅ 체크 리스트

  • 변경 사항에 대한 테스트를 했나요?
  • 컨벤션에 맞게 PR 제목과 커밋 메시지를 작성했나요?
  • merge할 브랜치의 위치를 확인했나요?
  • Label을 지정했나요?

📌관련 이슈 번호


💡작업 내용

  • 최초 소셜 로그인 시, 인증 서버로부터 받은 사용자의 RefreshToken 저장
    • User 테이블에 저장 시, 암호화하여 저장 (AES-GCM 암호화 기법)
  • 회원 탈퇴 요청 시, 카카오/구글 인증 서버와의 연결을 끊고 사용자의 모든 데이터 삭제 (하드 삭제)
  • 구글 연결 해제 전략
    • 사용자의 RefreshToken으로 AccessToken을 재발급 받아 revoke 요청을 보냄
    • AccessToken의 유효기간이 짧으므로 RefreshToken으로 재발급 받는 로직을 추가함
  • 카카오 연결 해제 전략 (아래 2가지 방법 모두 구현)
    1. admin-key 사용
      • 앱 어드민 키와 사용자의 kakaoUserId로 unlink 요청을 보냄
    2. AccessToken 사용
      • 사용자의 RefreshToken으로 AccessToken을 재발급 받아 unlink 요청을 보냄
    • RefreshToken의 만료 가능성이 있어 (1)번 방법을 기본으로 사용
  • Flyway 의존성 및 마이그레이션 파일 추가
    • 현재 운영 DB의 user 테이블에는 refresh_token 컬럼이 없는 상태
    • 해당 컬럼을 추가하기 위해 Flyway 마이그레이션 툴을 적용함

👤 리뷰 요구사항(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요.


📚참고 문서(선택)

y11n added 19 commits August 14, 2025 12:57
User 삭제 시, 연관되어 있는 Friend, Streak, StudyRecord, Category, Notification, Quiz 데이터를 삭제하기 위해 제약조건을 추가하였음
User 삭제 시 남아 있는 Refresh 토큰 데이터를 모두 삭제하는 메소드 추가
refreshToken을 받기 위해 accesstype=offline&prompt=consent 형식으로 요청을 보냄
GoogleClient: 구글 OAuth 토큰 관리
KakaoAuthClient: 카카오 토큰 관리
KakaoApiClient: 카카오 사용자/리소스 API 호출(언링크 등)
KakaoAuthClient: accessToken 재발급 client
KakaoApiClient: 연동 해제 client
1. refreshToken으로 accessToken 재발급 요청 보내는 메소드
2. accessToken으로 unlink 요청 보내는 메소드
3. adminKey와 kakaoUserId로 unlink 요청 보내는 메소드
Google/Kakao 유저를 구분하여 그에 맞는 연결 해제 로직 수행
@y11n y11n requested a review from chaeminyu August 23, 2025 02:04
@y11n y11n self-assigned this Aug 23, 2025
@y11n y11n added 💡Feature 기능 개발 📭 API API 관련 labels Aug 23, 2025
@y11n y11n linked an issue Aug 23, 2025 that may be closed by this pull request
1 task
@chaeminyu chaeminyu merged commit f89c71c into develop Aug 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📭 API API 관련 💡Feature 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 회원 탈퇴

2 participants