Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading