diff --git a/src/main/java/umc/IRECIPE_Server/controller/MemberController.java b/src/main/java/umc/IRECIPE_Server/controller/MemberController.java index e05165b..0785f23 100644 --- a/src/main/java/umc/IRECIPE_Server/controller/MemberController.java +++ b/src/main/java/umc/IRECIPE_Server/controller/MemberController.java @@ -14,6 +14,7 @@ import org.springframework.web.multipart.MultipartFile; import umc.IRECIPE_Server.apiPayLoad.ApiResponse; import umc.IRECIPE_Server.apiPayLoad.code.status.ErrorStatus; +import umc.IRECIPE_Server.apiPayLoad.code.status.SuccessStatus; import umc.IRECIPE_Server.apiPayLoad.exception.handler.PostHandler; import umc.IRECIPE_Server.common.S3.S3Service; import umc.IRECIPE_Server.converter.MemberConverter; @@ -22,6 +23,7 @@ import umc.IRECIPE_Server.dto.MemberLoginRequestDto; import umc.IRECIPE_Server.entity.Member; import umc.IRECIPE_Server.jwt.JwtProvider; +import umc.IRECIPE_Server.repository.TokenRepository; import umc.IRECIPE_Server.service.MemberService; @Tag(name = "멤버", description = "멤버 관련 API") @@ -143,4 +145,16 @@ public ApiResponse refresh(@RequestParam(name = "personal id") String persona return ApiResponse.onSuccess(MemberConverter.toJoinResult(response, jwtProvider)); } + + @Operation(summary = "회원 탈퇴 API", description = "회원 탈퇴") + @DeleteMapping(value = "/leave") + public ApiResponse leave(){ + //사용자 id 찾기 + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + String userId = authentication.getName();//personal id + + memberService.deleteMember(userId); + + return ApiResponse.onSuccess(SuccessStatus._OK); + } } \ No newline at end of file diff --git a/src/main/java/umc/IRECIPE_Server/service/MemberService.java b/src/main/java/umc/IRECIPE_Server/service/MemberService.java index 238bb9f..ff6cede 100644 --- a/src/main/java/umc/IRECIPE_Server/service/MemberService.java +++ b/src/main/java/umc/IRECIPE_Server/service/MemberService.java @@ -3,8 +3,11 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Optional; +import java.util.concurrent.Flow.Publisher; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -53,6 +56,7 @@ public class MemberService { private final JwtProvider jwtProvider; private final S3Service s3Service; + public Boolean findMemberByNickname(String Nickname){ return memberRepository.existsByNickname(Nickname); } @@ -247,4 +251,16 @@ public Member refresh(Member member){ return member; } + @Transactional + public void deleteMember(String personalId){ + Optional member = memberRepository.findByPersonalId(personalId); + if(member.isEmpty()){ + throw new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND); + } + Member member1 = member.get(); + RefreshToken refreshToken = tokenRepository.findByMember(member1); + tokenRepository.delete(refreshToken); + memberRepository.delete(member1); + } + } \ No newline at end of file