Skip to content
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

Feat: 회원탈퇴 구현 #55

Merged
merged 32 commits into from
Aug 8, 2024
Merged

Feat: 회원탈퇴 구현 #55

merged 32 commits into from
Aug 8, 2024

Conversation

hee9841
Copy link
Collaborator

@hee9841 hee9841 commented Aug 7, 2024

🔗 이슈 연결

🚀 구현한 API

  • POST /api/v1/auth/oauth/withdraw

💡 반영할 내용 및 변경 사항 요약

  • pem 파일을 읽기 위해 bouncycastle라이브러리를 추가합니다.
  • 클라이언트에서 받은 id token로 검증합니다.(애플에서 제시한 검증 절차를 추가할 예정입니다.)
  • 클라이언트에서 받은 authorization code로 엑세스 토큰을 발급하고 발급받은 토큰으로 토큰 해제를 요청합니다.
  • 사용자 정보를 db에서 삭제합니다. 데이터가 삭제되는 테이블은 다음과 같습니다.
    • badge_achievement
    • running_record
    • member_level
    • social_profile
    • member

🔍 리뷰 요청/참고 사항

  • 토큰을 발급하고 해제하는 테스트는 실시간으로 클라이언트분들과 진행해야 되서 아직 완료되지 않았습니다.
  • 해당 테스트 진행하고 서비스단 테스트 코드와 docs작성 예정입니다.
  • 페키지 구조는 혼자 뛰기 api 머지 된 후 변경할 예정입니다.

Jaewon-pro and others added 24 commits August 6, 2024 13:32
- save
- findById
- findBySocialTypeAndOauthId
- updateOauthEmail
- deleteByMember
* Feat: RunningRecord member에 따라 삭제 기능 추가

* Test: RunningRecord member에 따라 삭제 테스트

* Fix: deleteByMember의 인자를 member_id로 받게 수정

* Fix: Repository Transactional 삭제
@hee9841 hee9841 added feature 기능 추가 chore labels Aug 7, 2024
@hee9841 hee9841 self-assigned this Aug 7, 2024
@hee9841 hee9841 linked an issue Aug 7, 2024 that may be closed by this pull request
badgeAchievementRepository.deleteByMemberId(memberId);
runningRecordRepository.deleteByMemberId(memberId);
memberLevelRepository.deleteByMemberId(memberId);
socialProfileRepository.deleteByMemberId(memberId);
Copy link
Member

Choose a reason for hiding this comment

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

지금 변경은 어렵지만, 고려해볼 사항

지금은 apple 밖에 없지만, 다른 social profile들도 연결 끊기 작업이 필요하다고 생각해요

  • 각 oidc 제공자 마다 연결 끊는 방법이 다를 수 있으므로, OidcProvider 인터페이스에 withdraw()unlink() 같은 함수가 있어야 할 것 같아요

그리고 현재 PR에서 withdraw 함수가 하나의 트랜잭션 내에서 외부 네트워크로 통신을 하고 있는데,
이러면 트랜잭션이 너무 길어질 수도 있고, 외부 서비스 장애시 대처하기 어려운 것 같아요.

  • 지금 PR에서는 수정하기 힘들더라도, 이슈로 남겨두고 리팩토링하면 좋을 것 같아요

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

각 oidc 제공자 마다 연결 끊는 방법이 다를 수 있으므로, OidcProvider 인터페이스에 withdraw()나 unlink() 같은 함수가 있어야 할 것 같아요

OidcProvider 인터페이스에 연결해제 함수가 있어요!
void revoke(String accessToken)
찾아보니 대표 소셜 로그인에서 공통적으로 accessToken으로 해제하는 것 같아서 인자로 accessToken을 받게 해놨습니다.

그리고 현재 PR에서 withdraw 함수가 하나의 트랜잭션 내에서 외부 네트워크로 통신을 하고 있는데,
이러면 트랜잭션이 너무 길어질 수도 있고, 외부 서비스 장애시 대처하기 어려운 것 같아요.

이런 부분에 대해 생각해보지 못했는데 👍
이슈로 남겨두고 리팩토링해봐야 겠네요!

@Jaewon-pro
Copy link
Member

고생하셨습니다 ! 몇가지 생각들 적었는데, 한번 코멘트 주시면 감사하겠습니다

@hee9841
Copy link
Collaborator Author

hee9841 commented Aug 7, 2024

꼼꼼한 코멘트 감사합니다!

Copy link
Member

@Jaewon-pro Jaewon-pro left a comment

Choose a reason for hiding this comment

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

빠른 수정 감사합니다 !
어제 실수로 놓친 점이 있어서, 그것만 봐주시면 감사하겠습니다 🙏

- AppleAuthTokenResponse 코드 카멜로 변경
- Requst DTO toMultiValueMap 메서드 코드 간결화
Copy link
Member

@Jaewon-pro Jaewon-pro left a comment

Choose a reason for hiding this comment

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

늦은 새벽까지 고생하셨어요!

@hee9841 hee9841 merged commit 2ee5857 into main Aug 8, 2024
1 check passed
@hee9841 hee9841 deleted the feature/#40/account-delete branch August 8, 2024 10:53
@hee9841 hee9841 mentioned this pull request Aug 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
chore feature 기능 추가
Projects
None yet
Development

Successfully merging this pull request may close these issues.

회원 탈퇴 기능 구현
2 participants