Spring/[P] AI 기반 사용자 맞춤형 메뉴와 맛집 추천

[Springboot/JWT] 회원 탈퇴 개발하기

alsruds 2024. 8. 8. 15:53

📂 apiPayload

📂 config

📂 controller

  L UserController

📂 domain

  L 📂 common

  L 📂 enums

  L User

📂 dto

  L 📂 request

  L 📂 response

📂 jwt

  L JwtFilter

  L JwtUtil

📂 repository

  L UserRepository

📂 service

  L UserService

  L UserServiceImpl

 

회원 탈퇴 로직 구현

 

UserServiceImpl

@Service
@Transactional
@RequiredArgsConstructor
public class UserServiceImpl implements UserService {
    private final UserRepository userRepository;

    public SuccessStatus signOut(String userEmail) {
        Optional<User> user = userRepository.findByEmail(userEmail);
        if (user.isPresent()) {
            userRepository.deleteById(user.get().getId());
            return SuccessStatus._OK;
        } else {
            throw new GeneralException(ErrorStatus.MEMBER_NOT_FOUND);
        }
    }
}

  L 전달받은 이메일이 가입된 사용자인지 확인 → 있으면 객체 삭제 → 없으면 에러 반환

 

UserController

@RestController
@RequiredArgsConstructor
@RequestMapping("/user")
@Tag(name = "USER", description = "USER SignUp/Login API")
public class UserController {

    private final UserService userService;

    @DeleteMapping("/signout")
    @Operation(summary = "회원 탈퇴", description = "회원 탈퇴 시 사용하는 API")
    @ApiResponses(value = {
            @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "MEMBER4001", description = "사용자가 없습니다", content = @Content(mediaType = "application/json")),
    })
    public ApiResponse<SuccessStatus> signOut(@RequestHeader("Authorization") String token) {
        String jwtToken = token.substring(7);
        String userEmail = JwtUtil.getEmail(jwtToken);
        return ApiResponse.onSuccess(userService.signOut(userEmail));
    }
}

  L 현재 로그인 중인 사용자의 jwt 토큰으로 사용자 이메일 추출 → 해당 이메일 가진 사용자 삭제 요청

 

 


2024.08.07 - [Spring/[Project] AI 기반 사용자 맞춤형 메뉴와 맛집 추천] - [Springboot] 회원 탈퇴 설계하기

 

[Springboot] 회원 탈퇴 설계하기

📂 /user  L 회원 가입  L 회원 탈퇴 ⬅️ ⬅️ ⬅️   L 로그인  L 로그아웃  L 비밀번호 재설정 (로그인 전)  L 비밀번호 재설정 (로그인 후) 🔧 HTTP Method  L DELETE 🔧 API Path  L /user/signout 

alsrudalsrudalsrud.tistory.com