SWM-99-degree / jariBean

SWM 14th JariBean Project
0 stars 1 forks source link

[FEAT] Social Login 회원 탈퇴 기능 구현 #209

Closed isayaksh closed 11 months ago

isayaksh commented 11 months ago

✏️ Description

소셜 로그인 기능을 통해 회원 가입한 유저가 서비스 회원 탈퇴를 위한 기능을 구현하였다.

KakaoGoogle의 경우 특별한 절차 없이 Database에 존재하는 User Document를 삭제한다.

Apple의 경우는 소셜 로그인한 유저 정보를 POST https://appleid.apple.com/auth/revoke 엔드 포인트를 통해 소셜 로그인한 상태를 해제해야 한다.

📌 Revoke tokens

image

회원 탈퇴 추상화 메소드를 만들고 해당 추상화 메소드를 상속받아서 각 상황에 맞게 구현한다.

💻 Kakao

@Override
public void deleteUser(String id, String code) {
    userRepository.deleteById(id);
}

💻 Google

@Override
public void deleteUser(String id, String code) {
    userRepository.deleteById(id);
}

💻 Apple

@Override
public void deleteUser(String id, String code) {
    MultiValueMap<String, String> bodyValue = new LinkedMultiValueMap<>();
    bodyValue.add("client_id", CLIENT_ID);
    bodyValue.add("client_secret", createClientSecret());
    bodyValue.add("token", getAccessToken(code));

    WebClient client = WebClient.create();
    client.post()
            .uri("https://appleid.apple.com/auth/revoke")
            .contentType(APPLICATION_FORM_URLENCODED)
            .bodyValue(bodyValue)
            .retrieve()
            .bodyToMono(String.class)
            .block();
}