Skip to content

Commit

Permalink
Merge pull request #438 from Namo-log/feat/437
Browse files Browse the repository at this point in the history
[Feat/437] 즉시 회원 탈퇴 기능 구현
  • Loading branch information
hosung-222 authored Feb 9, 2025
2 parents 97e1ddf + 5040692 commit de4986b
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
Expand Down Expand Up @@ -105,4 +106,20 @@ public ResponseDto<String> removeAuthUser(
return ResponseDto.onSuccess("회원탈퇴가 완료되었습니다.");
}

@Operation(summary = "!!!!!!!!!!!!!!!!즉시 회원 탈퇴!!!!!!!!!!!!", description = """
즉시 회원을 탈퇴합니다. 절대 복구가 불가능합니다
테스트용으로만 사용해주세요!!!!!!!!!!!!!!!!
""")
@DeleteMapping("/admin/{socialType}")
@PreAuthorize("isAuthenticated()")
public ResponseDto<String> removeUserImmediate(
@RequestHeader(value = "Authorization") String authHeader,
@RequestHeader(value = "refreshToken") String refreshToken,
@AuthenticationPrincipal SecurityUserDetails member
) {
String accessToken = authHeader.split(" ")[1];
memberFacade.removeMemberNow(member.getUserId(), accessToken, refreshToken);
return ResponseDto.onSuccess("즉시 회원탈퇴가 완료되었습니다.");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -120,4 +120,12 @@ public Member completeSignup(MemberRequest.CompleteSignUpDto dto, Long memberId)
scheduleMaker.createBirthdaySchedules(savedMember);
return member;
}

@Transactional
public void removeMemberNow(Long memberId, String accessToken, String refreshToken) {
Member member = memberManageService.getMember(memberId);
socialLoginService.unlinkSocialAccount(member);
jwtAuthHelper.removeJwtsToken(memberId, accessToken, refreshToken);
memberManageService.removeMember(member);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.springframework.transaction.annotation.Transactional;

import com.namo.spring.application.external.api.user.service.MemberManageService;
import com.namo.spring.application.external.api.user.service.SocialLoginService;
import com.namo.spring.db.mysql.domains.user.entity.Member;

import lombok.RequiredArgsConstructor;
Expand All @@ -18,6 +19,7 @@
public class MemberScheduler {

private final MemberManageService memberManageService;
private final SocialLoginService socialLoginService;

/**
* 매일 자정에 실행되며, 탈퇴 이후 3일간 활동이 없는 사용자를 DB에서 삭제한다.
Expand All @@ -39,6 +41,7 @@ public void removePendingUsersFromDB() {
List<Member> pendingMembers = memberManageService.getPendingMembers();
for (Member member : pendingMembers) {
log.debug("[Delete PENDING] user name: {}", member.getName());
socialLoginService.unlinkSocialAccount(member);
memberManageService.removeMember(member);
}
}
Expand Down

0 comments on commit de4986b

Please sign in to comment.