Skip to content

Commit 06171b6

Browse files
authored
Merge pull request #15 from WhosInRoom/feat/#10-myPage
[HotFix] #10 Jwt Token 응답 Http 상태코드 변경
2 parents a97e38f + 66dee3a commit 06171b6

5 files changed

Lines changed: 19 additions & 28 deletions

File tree

src/main/java/com/WhoIsRoom/WhoIs_Server/domain/auth/handler/exception/CustomJsonAuthenticationFailureHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ private ErrorCode mapToErrorCode(AuthenticationException ex) {
3232

3333
// 1) 아이디 없음
3434
if (ex instanceof UsernameNotFoundException) {
35-
return ErrorCode.USER_NOT_FOUND;
35+
return ErrorCode.SECURITY_UNAUTHORIZED;
3636
}
3737

3838
// 2) 잘못된 자격 증명(값 누락/불일치)
3939
if (ex instanceof BadCredentialsException) {
40-
return ErrorCode.INVALID_ID_OR_PASSWORD;
40+
return ErrorCode.INVALID_EMAIL_OR_PASSWORD;
4141
}
4242

4343
// 4) 요청 형식/메서드/파싱 문제 (JSON only 강제)

src/main/java/com/WhoIsRoom/WhoIs_Server/domain/auth/service/JwtService.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
11
package com.WhoIsRoom.WhoIs_Server.domain.auth.service;
22

33
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.request.RefreshTokenRequest;
4-
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.response.LoginResponse;
54
import com.WhoIsRoom.WhoIs_Server.domain.auth.dto.response.ReissueResponse;
65
import com.WhoIsRoom.WhoIs_Server.domain.auth.exception.CustomAuthenticationException;
76
import com.WhoIsRoom.WhoIs_Server.domain.auth.exception.CustomJwtException;
87
import com.WhoIsRoom.WhoIs_Server.domain.auth.util.JwtUtil;
98
import com.WhoIsRoom.WhoIs_Server.global.common.redis.RedisService;
10-
import com.WhoIsRoom.WhoIs_Server.global.common.response.BaseResponse;
119
import com.WhoIsRoom.WhoIs_Server.global.common.response.ErrorCode;
1210
import com.fasterxml.jackson.databind.ObjectMapper;
1311
import jakarta.servlet.http.HttpServletRequest;
14-
import jakarta.servlet.http.HttpServletResponse;
1512
import lombok.RequiredArgsConstructor;
1613
import lombok.extern.slf4j.Slf4j;
1714
import org.springframework.beans.factory.annotation.Value;
18-
import org.springframework.http.MediaType;
1915
import org.springframework.stereotype.Service;
2016

21-
import java.io.IOException;
2217
import java.time.Duration;
2318

2419
@Slf4j
@@ -53,7 +48,7 @@ public void logout(HttpServletRequest request, RefreshTokenRequest tokenRequest)
5348
String refreshToken = tokenRequest.getRefreshToken();
5449
jwtUtil.validateToken(refreshToken);
5550
if (!"refresh".equals(jwtUtil.getTokenType(refreshToken))) {
56-
throw new CustomJwtException(ErrorCode.INVALID_TOKEN_TYPE);
51+
throw new CustomJwtException(ErrorCode.INVALID_REFRESH_TYPE);
5752
}
5853

5954
deleteRefreshToken(refreshToken);
@@ -65,7 +60,7 @@ public ReissueResponse reissueTokens(RefreshTokenRequest tokenRequest) {
6560
String refreshToken = tokenRequest.getRefreshToken();
6661
jwtUtil.validateToken(refreshToken);
6762
if (!"refresh".equals(jwtUtil.getTokenType(refreshToken))) {
68-
throw new CustomJwtException(ErrorCode.INVALID_TOKEN_TYPE);
63+
throw new CustomJwtException(ErrorCode.INVALID_REFRESH_TYPE);
6964
}
7065
return reissueAndSendTokens(refreshToken);
7166
}
@@ -83,7 +78,7 @@ public void storeRefreshToken(String refreshToken) {
8378

8479
private void deleteRefreshToken(String refreshToken){
8580
if(refreshToken == null){
86-
throw new CustomJwtException(ErrorCode.EMPTY_REFRESH_HEADER);
81+
throw new CustomJwtException(ErrorCode.INVALID_REFRESH_TYPE);
8782
}
8883
redisService.delete(refreshToken);
8984
}

src/main/java/com/WhoIsRoom/WhoIs_Server/domain/auth/util/JwtUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public void validateToken(String token) {
112112
} catch (IllegalArgumentException e) { // 토큰이 비어 있거나 Null
113113
throw new CustomJwtException(ErrorCode.EMPTY_AUTHORIZATION_HEADER);
114114
} catch (Exception e) { // 기타 예외 상황
115-
throw new CustomJwtException(ErrorCode.SECURITY_INVALID_ACCESS_TOKEN);
115+
throw new CustomJwtException(ErrorCode.SECURITY_INVALID_TOKEN);
116116
}
117117
}
118118

src/main/java/com/WhoIsRoom/WhoIs_Server/domain/user/service/UserService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void signUp(SignupRequest request) {
5858
@Transactional
5959
public void sendNewPassword(MailRequest request) {
6060
User user = userRepository.findByEmail(request.getEmail())
61-
.orElseThrow(() -> new BusinessException(ErrorCode.USER_NOT_FOUND));
61+
.orElseThrow(() -> new BusinessException(ErrorCode.USER_MAIL_NOT_FOUND));
6262
String newPassword = mailService.sendPasswordMail(request);
6363
user.setPassword(passwordEncoder.encode(newPassword));
6464
}

src/main/java/com/WhoIsRoom/WhoIs_Server/global/common/response/ErrorCode.java

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
package com.WhoIsRoom.WhoIs_Server.global.common.response;
22

3-
import com.fasterxml.jackson.annotation.JsonFormat;
4-
import com.fasterxml.jackson.annotation.JsonInclude;
53
import lombok.AllArgsConstructor;
64
import lombok.Getter;
75
import org.springframework.http.HttpStatus;
86

9-
import static org.springframework.http.HttpStatus.*;
10-
117
@Getter
128
@AllArgsConstructor
139
public enum ErrorCode{
@@ -22,6 +18,7 @@ public enum ErrorCode{
2218
USER_NOT_FOUND(200, HttpStatus.NOT_FOUND.value(), "사용자를 찾을 수 없습니다."),
2319
USER_DUPLICATE_EMAIL(201, HttpStatus.BAD_REQUEST.value(), "중복된 이메일의 사용자가 있습니다."),
2420
USER_DUPLICATE_NICKNAME(202, HttpStatus.BAD_REQUEST.value(), "중복된 닉네임의 사용자가 있습니다."),
21+
USER_MAIL_NOT_FOUND(203, HttpStatus.NOT_FOUND.value(), "해당 이메일의 사용자를 찾을 수 없습니다."),
2522

2623
// Club
2724
CLUB_NOT_FOUND(300, HttpStatus.NOT_FOUND.value(), "해당 동아리가 존재하지 않습니다."),
@@ -36,24 +33,23 @@ public enum ErrorCode{
3633

3734
// Auth
3835
SECURITY_UNAUTHORIZED(600,HttpStatus.UNAUTHORIZED.value(), "인증 정보가 유효하지 않습니다"),
39-
INVALID_TOKEN_TYPE(601, HttpStatus.UNAUTHORIZED.value(), "토큰 타입이 유효하지 않습니다."),
40-
SECURITY_INVALID_REFRESH_TOKEN(602, HttpStatus.UNAUTHORIZED.value(), "refresh token이 유효하지 않습니다."),
36+
SECURITY_INVALID_TOKEN(602, HttpStatus.UNAUTHORIZED.value(), "유효하지 않은 token입니다."),
4137
SECURITY_INVALID_ACCESS_TOKEN(603, HttpStatus.UNAUTHORIZED.value(), "access token이 유효하지 않습니다."),
4238
SECURITY_ACCESS_DENIED(604, HttpStatus.FORBIDDEN.value(), "접근 권한이 없습니다."),
43-
EMPTY_REFRESH_HEADER(605, HttpStatus.BAD_REQUEST.value(), "refresh token이 필요합니다."),
39+
INVALID_REFRESH_TYPE(605, HttpStatus.BAD_REQUEST.value(), "refresh token 타입이 유효하지 않습니다."),
40+
INVALID_TOKEN_TYPE(601, HttpStatus.UNAUTHORIZED.value(), "access token 타입이 유효하지 않습니다."),
4441
MAIL_SEND_FAILED(606, HttpStatus.BAD_REQUEST.value(), "메일 전송에 실패했습니다."),
45-
INVALID_EMAIL_CODE(607, HttpStatus.BAD_REQUEST.value(), "인증 번호가 다릅니다."),
46-
EXPIRED_EMAIL_CODE(608, HttpStatus.BAD_REQUEST.value(), "인증 번호가 만료되었거나 없습니다."),
42+
INVALID_EMAIL_CODE(607, HttpStatus.UNAUTHORIZED.value(), "인증 번호가 다릅니다."),
43+
EXPIRED_EMAIL_CODE(608, HttpStatus.UNAUTHORIZED.value(), "인증 번호가 만료되었거나 없습니다."),
4744
AUTHCODE_ALREADY_AUTHENTICATED(609, HttpStatus.BAD_REQUEST.value(), "이미 인증이 된 번호입니다."),
4845
AUTHCODE_UNAUTHORIZED(610, HttpStatus.UNAUTHORIZED.value(), "이메일 인증을 하지 않았습니다."),
49-
LOGIN_FAILED(611, HttpStatus.BAD_REQUEST.value(), "이메일 혹은 비밀번호가 올바르지 않습니다."),
5046
EMPTY_AUTHORIZATION_HEADER(612, HttpStatus.BAD_REQUEST.value(),"Authorization 헤더가 존재하지 않습니다."),
51-
EXPIRED_ACCESS_TOKEN(613, HttpStatus.BAD_REQUEST.value(), "이미 만료된 Access 토큰입니다."),
52-
UNSUPPORTED_TOKEN_TYPE(614, HttpStatus.BAD_REQUEST.value(),"지원되지 않는 토큰 형식입니다."),
53-
MALFORMED_TOKEN_TYPE(615, HttpStatus.BAD_REQUEST.value(),"인증 토큰이 올바르게 구성되지 않았습니다."),
54-
INVALID_SIGNATURE_JWT(616, HttpStatus.BAD_REQUEST.value(), "인증 시그니처가 올바르지 않습니다"),
55-
INVALID_ID_OR_PASSWORD(617, HttpStatus.BAD_REQUEST.value(), "이메일 또는 비밀번호가 올바르지 않습니다."),
56-
INVALID_PASSWORD(618, HttpStatus.BAD_REQUEST.value(), "기존 비밀번호가 유효하지 않습니다");
47+
EXPIRED_ACCESS_TOKEN(613, HttpStatus.UNAUTHORIZED.value(), "이미 만료된 Access 토큰입니다."),
48+
UNSUPPORTED_TOKEN_TYPE(614, HttpStatus.UNAUTHORIZED.value(),"지원되지 않는 토큰 형식입니다."),
49+
MALFORMED_TOKEN_TYPE(615, HttpStatus.UNAUTHORIZED.value(),"인증 토큰이 올바르게 구성되지 않았습니다."),
50+
INVALID_SIGNATURE_JWT(616, HttpStatus.UNAUTHORIZED.value(), "인증 시그니처가 올바르지 않습니다"),
51+
INVALID_EMAIL_OR_PASSWORD(617, HttpStatus.UNAUTHORIZED.value(), "이메일 또는 비밀번호가 올바르지 않습니다."),
52+
INVALID_PASSWORD(618, HttpStatus.UNAUTHORIZED.value(), "기존 비밀번호가 유효하지 않습니다");
5753

5854
private final int code;
5955
private final int httpStatus;

0 commit comments

Comments
 (0)