Skip to content

Commit 87ad39f

Browse files
committed
CLAP-84 Feat: AuthException과 JwtException 분리
<footer> - 관련: #43
1 parent 2799697 commit 87ad39f

File tree

6 files changed

+28
-10
lines changed

6 files changed

+28
-10
lines changed

src/main/java/clap/server/adapter/inbound/security/SecurityUserDetailsService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package clap.server.adapter.inbound.security;
22

33
import clap.server.adapter.outbound.persistense.repository.member.MemberRepository;
4-
import clap.server.exception.ApplicationException;
4+
import clap.server.exception.AuthException;
55
import clap.server.exception.code.MemberErrorCode;
66
import lombok.RequiredArgsConstructor;
77
import org.springframework.security.core.userdetails.UserDetails;
@@ -18,6 +18,6 @@ public class SecurityUserDetailsService implements UserDetailsService {
1818
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
1919
return loadMemberPort.findById(Long.parseLong(username))
2020
.map(SecurityUserDetails::from)
21-
.orElseThrow(() -> new ApplicationException(MemberErrorCode.MEMBER_NOT_FOUND));
21+
.orElseThrow(() -> new AuthException(MemberErrorCode.MEMBER_NOT_FOUND));
2222
}
2323
}

src/main/java/clap/server/adapter/inbound/security/filter/JwtErrorCodeUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ public static BaseErrorCode determineErrorCode(Exception exception, BaseErrorCod
3636
public static JwtException determineAuthErrorException(Exception exception) {
3737
return findAuthErrorException(exception).orElseGet(
3838
() -> {
39-
BaseErrorCode errorStatus = determineErrorCode(exception, CommonErrorCode.INTERNAL_SERVER_ERROR);
39+
BaseErrorCode errorCode = determineErrorCode(exception, CommonErrorCode.INTERNAL_SERVER_ERROR);
4040
log.debug(exception.getMessage(), exception);
41-
return new JwtException(errorStatus);
41+
return new JwtException(errorCode);
4242
}
4343
);
4444
}

src/main/java/clap/server/adapter/outbound/jwt/refresh/RefreshTokenProvider.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import clap.server.application.port.outbound.auth.JwtProvider;
55
import clap.server.common.annotation.jwt.RefreshTokenStrategy;
66
import clap.server.common.utils.DateUtil;
7+
import clap.server.exception.JwtException;
8+
import clap.server.exception.code.AuthErrorCode;
79
import io.jsonwebtoken.Claims;
810
import io.jsonwebtoken.Jwts;
911
import io.jsonwebtoken.security.Keys;
@@ -66,7 +68,7 @@ public boolean isTokenExpired(String token) {
6668
return claims.getExpiration().before(new Date());
6769
} catch (Exception e) {
6870
log.error("Token is expired: {}", e.getMessage());
69-
throw e;
71+
throw new JwtException(AuthErrorCode.EMPTY_ACCESS_KEY);
7072
}
7173
}
7274

@@ -80,7 +82,7 @@ public Claims getClaimsFromToken(String token) {
8082
.getBody();
8183
} catch (Exception e) {
8284
log.error("Token parsing error: {}", e.getMessage());
83-
throw e;
85+
throw new JwtException(AuthErrorCode.INVALID_TOKEN);
8486
}
8587
}
8688

src/main/java/clap/server/application/service/auth/IssueTokenService.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,18 @@
88
import clap.server.domain.model.auth.CustomJwts;
99
import clap.server.domain.model.auth.RefreshToken;
1010
import clap.server.domain.model.member.Member;
11-
import clap.server.exception.JwtException;
11+
import clap.server.exception.AuthException;
1212
import clap.server.exception.code.AuthErrorCode;
1313
import lombok.RequiredArgsConstructor;
14+
import lombok.extern.slf4j.Slf4j;
1415
import org.springframework.stereotype.Component;
1516

1617
import java.time.Duration;
1718
import java.time.LocalDateTime;
1819

1920
@RequiredArgsConstructor
2021
@Component
22+
@Slf4j
2123
public class IssueTokenService {
2224
private final JwtProvider accessTokenProvider;
2325
private final JwtProvider refreshTokenProvider;
@@ -48,7 +50,7 @@ public RefreshToken refresh(
4850
String newRefreshToken
4951
) throws IllegalArgumentException, IllegalStateException {
5052
RefreshToken refreshToken = loadRefreshTokenPort.findByMemberId(memberId).orElseThrow(
51-
()-> new JwtException(AuthErrorCode.REFRESH_TOKEN_NOT_FOUND)
53+
()-> new AuthException(AuthErrorCode.REFRESH_TOKEN_NOT_FOUND)
5254
);
5355
validateToken(oldRefreshToken, refreshToken);
5456

@@ -61,7 +63,7 @@ public RefreshToken refresh(
6163
private void validateToken(String oldRefreshToken, RefreshToken refreshToken) {
6264
if (isTakenAway(oldRefreshToken, refreshToken.getToken())) {
6365
commandRefreshTokenPort.delete(refreshToken);
64-
throw new IllegalStateException("refresh token mismatched");
66+
throw new AuthException(AuthErrorCode.REFRESH_TOKEN_MISMATCHED);
6567
}
6668
}
6769

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package clap.server.exception;
2+
3+
import clap.server.exception.code.BaseErrorCode;
4+
5+
public class AuthException extends BaseException {
6+
public AuthException(BaseErrorCode code) {
7+
super(code);
8+
}
9+
10+
public BaseErrorCode getErrorCode() {
11+
return (BaseErrorCode)super.getCode();
12+
}
13+
}

src/main/java/clap/server/exception/code/AuthErrorCode.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public enum AuthErrorCode implements BaseErrorCode {
2020
UNSUPPORTED_JWT_TOKEN(HttpStatus.UNAUTHORIZED, "AUTH_011", "지원하지 않는 토큰입니다."),
2121
FORBIDDEN_ACCESS_TOKEN(HttpStatus.FORBIDDEN, "AUTH_012","해당 토큰에는 엑세스 권한이 없습니다."),
2222
INVALID_TOKEN(HttpStatus.UNAUTHORIZED,"AUTH_013", "유효하지 않은 토큰입니다."),
23-
REFRESH_TOKEN_NOT_FOUND(HttpStatus.UNAUTHORIZED, "AUTH_014", "리프레시 토큰을 찾을 수 없습니다.");
23+
REFRESH_TOKEN_NOT_FOUND(HttpStatus.UNAUTHORIZED, "AUTH_014", "리프레시 토큰을 찾을 수 없습니다."),
24+
REFRESH_TOKEN_MISMATCHED(HttpStatus.UNAUTHORIZED, "AUTH_014", "리프레시 토큰이 일치하지 않습니다");
2425

2526
private final HttpStatus httpStatus;
2627
private final String customCode;

0 commit comments

Comments
 (0)