We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
2 parents 4a37e6b + b677b82 commit 3d51104Copy full SHA for 3d51104
3 files changed
src/main/java/com/example/FixLog/controller/AuthController.java
@@ -3,7 +3,9 @@
3
import com.example.FixLog.dto.Response;
4
import com.example.FixLog.dto.member.LoginRequestDto;
5
import com.example.FixLog.dto.member.LoginResponseDto;
6
+import com.example.FixLog.exception.ErrorCode;
7
import com.example.FixLog.service.AuthService;
8
+import jakarta.servlet.http.HttpServletRequest;
9
import lombok.RequiredArgsConstructor;
10
import org.springframework.http.ResponseEntity;
11
import org.springframework.web.bind.annotation.*;
@@ -20,4 +22,18 @@ public ResponseEntity<Response<LoginResponseDto>> login(@RequestBody LoginReques
20
22
LoginResponseDto result = authService.login(requestDto);
21
23
return ResponseEntity.ok(Response.success("로그인 성공", result));
24
}
25
+
26
+ @PostMapping("/logout")
27
+ public ResponseEntity<Response<String>> logout(HttpServletRequest request) {
28
+ String token = request.getHeader("Authorization");
29
30
+ if (token != null && token.startsWith("Bearer ")) {
31
+ return ResponseEntity.ok(Response.success("로그아웃 완료. 클라이언트에서 토큰을 삭제하세요.", null));
32
+ } else {
33
+ return ResponseEntity
34
+ .badRequest()
35
+ .body(Response.fail(ErrorCode.UNAUTHORIZED.getMessage()));
36
+ }
37
38
39
src/main/java/com/example/FixLog/exception/ErrorCode.java
@@ -9,6 +9,7 @@
public enum ErrorCode {
USER_NICKNAME_NOT_FOUND(HttpStatus.NOT_FOUND,"존재하지 않는 사용자 아이디입니다."),
USER_EMAIL_NOT_FOUND(HttpStatus.NOT_FOUND, "회원 이메일을 찾을 수 없습니다."),
12
+ USER_DELETED(HttpStatus.FORBIDDEN, "탈퇴한 회원입니다."),
13
EMAIL_DUPLICATED(HttpStatus.CONFLICT, "중복된 이메일입니다"),
14
NICKNAME_DUPLICATED(HttpStatus.CONFLICT, "중복된 닉네임입니다"),
15
ALREADY_FOLLOWING(HttpStatus.CONFLICT, "이미 팔로우 중입니다"),
@@ -29,7 +30,8 @@ public enum ErrorCode {
UNAUTHORIZED(HttpStatus.UNAUTHORIZED, "권한이 없습니다."),
INVALID_REQUEST(HttpStatus.BAD_REQUEST, "요청 데이터가 유효하지 않습니다."),
S3_UPLOAD_FAILED(HttpStatus.BAD_REQUEST, "S3 파일 업로드에 실패했습니다."),
- IMAGE_UPLOAD_FAILED(HttpStatus.NOT_FOUND, "이미지 파일이 업로드되지 않았습니다.");
+ IMAGE_UPLOAD_FAILED(HttpStatus.NOT_FOUND, "이미지 파일이 업로드되지 않았습니다."),
+ LOGOUT_SUCCESS(HttpStatus.OK, "로그아웃이 정상적으로 처리되었습니다.");
private final HttpStatus status;
private final String message;
src/main/java/com/example/FixLog/service/AuthService.java
@@ -26,6 +26,10 @@ public LoginResponseDto login(LoginRequestDto requestDto) {
Member member = memberRepository.findByEmail(requestDto.getEmail())
.orElseThrow(() -> new CustomException(ErrorCode.USER_NICKNAME_NOT_FOUND));
+ if (member.getIsDeleted()) {
+ throw new CustomException(ErrorCode.USER_DELETED);
if (!passwordEncoder.matches(requestDto.getPassword(), member.getPassword())) {
throw new CustomException(ErrorCode.INVALID_PASSWORD);
0 commit comments