Skip to content

Commit a366c69

Browse files
committed
refactor: 토큰 유형을 enum(TokenType)으로 관리
1 parent 9cf668f commit a366c69

File tree

8 files changed

+46
-27
lines changed

8 files changed

+46
-27
lines changed

src/main/java/apptive/team5/filter/JWTFilter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package apptive.team5.filter;
22

33
import apptive.team5.global.exception.NotFoundEntityException;
4+
import apptive.team5.jwt.TokenType;
45
import apptive.team5.jwt.component.JWTUtil;
56
import apptive.team5.user.domain.UserEntity;
67
import apptive.team5.user.service.UserLowService;
@@ -46,7 +47,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
4647

4748
String accessToken = authorization.split(" ")[1];
4849

49-
if (!jwtUtil.validateToken(accessToken, true)) {
50+
if (!jwtUtil.validateToken(accessToken, TokenType.ACCESS_TOKEN)) {
5051

5152
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
5253
response.setContentType("application/json;charset=UTF-8");
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package apptive.team5.jwt;
2+
3+
public enum TokenType {
4+
ACCESS_TOKEN,
5+
REFRESH_TOKEN
6+
}

src/main/java/apptive/team5/jwt/component/JWTUtil.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package apptive.team5.jwt.component;
22

3+
import apptive.team5.jwt.TokenType;
34
import io.jsonwebtoken.Claims;
45
import io.jsonwebtoken.Jwts;
56
import org.springframework.beans.factory.annotation.Value;
@@ -30,14 +31,13 @@ public Claims getClaims(String token) {
3031
.getPayload();
3132
}
3233

33-
public boolean validateToken(String token, Boolean isAccess) {
34+
public boolean validateToken(String token, TokenType tokenType) {
3435
try {
3536
Claims claims = getClaims(token);
36-
String tokenType = claims.get("tokenType").toString();
37+
String realTokenType = claims.get("tokenType").toString();
3738

3839
if (tokenType == null) return false;
39-
if (isAccess && tokenType.equals("refresh")) return false;
40-
if (!isAccess && tokenType.equals("access")) return false;
40+
if (!realTokenType.equals(tokenType.name())) return false;
4141

4242
return true;
4343
} catch (Exception ex) {
@@ -46,18 +46,18 @@ public boolean validateToken(String token, Boolean isAccess) {
4646
}
4747

4848

49-
public String createJWT(String identifier, String role, Boolean isAccess) {
49+
public String createJWT(String identifier, String role, TokenType tokenType) {
5050

5151
long expiredMs;
5252
String type;
5353

54-
if (isAccess) {
54+
if (tokenType.equals(TokenType.ACCESS_TOKEN)) {
5555
expiredMs = accessTokenExpiresIn;
56-
type = "access";
56+
type = TokenType.ACCESS_TOKEN.name();
5757
}
5858
else {
5959
expiredMs = refreshTokenExpiresIn;
60-
type = "refresh";
60+
type = TokenType.REFRESH_TOKEN.name();
6161
}
6262

6363
return Jwts.builder()
@@ -70,15 +70,15 @@ public String createJWT(String identifier, String role, Boolean isAccess) {
7070
.compact();
7171
}
7272

73-
public String createJWT(String identifier, String role, Boolean isAccess, Long expiredMs) {
73+
public String createJWT(String identifier, String role, TokenType tokenType, Long expiredMs) {
7474

7575
String type;
7676

77-
if (isAccess) {
78-
type = "access";
77+
if (tokenType.equals(TokenType.ACCESS_TOKEN)) {
78+
type = TokenType.ACCESS_TOKEN.name();
7979
}
8080
else {
81-
type = "refresh";
81+
type = TokenType.REFRESH_TOKEN.name();
8282
}
8383

8484
return Jwts.builder()
@@ -90,4 +90,4 @@ public String createJWT(String identifier, String role, Boolean isAccess, Long e
9090
.signWith(secretKey)
9191
.compact();
9292
}
93-
}
93+
}

src/main/java/apptive/team5/jwt/service/JwtService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import apptive.team5.global.exception.AuthenticationException;
44
import apptive.team5.global.exception.ExceptionCode;
5+
import apptive.team5.jwt.TokenType;
56
import apptive.team5.jwt.component.JWTUtil;
67
import apptive.team5.jwt.domain.RefreshToken;
78
import apptive.team5.jwt.dto.TokenResponse;
@@ -45,7 +46,7 @@ public TokenResponse exchangeToken(String oldRefreshToken) {
4546

4647
if (oldRefreshToken == null) throw new AuthenticationException(ExceptionCode.NOT_EXIST_REFRESH_TOKEN.getDescription());
4748

48-
if (!jwtUtil.validateToken(oldRefreshToken, false))
49+
if (!jwtUtil.validateToken(oldRefreshToken, TokenType.REFRESH_TOKEN))
4950
throw new AuthenticationException(ExceptionCode.INVALID_REFRESH_TOKEN.getDescription());
5051

5152
Claims claims = jwtUtil.getClaims(oldRefreshToken);
@@ -58,8 +59,8 @@ public TokenResponse exchangeToken(String oldRefreshToken) {
5859
throw new AuthenticationException(ExceptionCode.INVALID_REFRESH_TOKEN.getDescription());
5960
}
6061

61-
String newAccessToken = jwtUtil.createJWT(identifier, role, true);
62-
String newRefreshToken = jwtUtil.createJWT(identifier, role, false);
62+
String newAccessToken = jwtUtil.createJWT(identifier, role, TokenType.ACCESS_TOKEN);
63+
String newRefreshToken = jwtUtil.createJWT(identifier, role, TokenType.REFRESH_TOKEN);
6364

6465
saveRefreshToken(identifier, newRefreshToken);
6566

src/main/java/apptive/team5/user/domain/UserEntity.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,15 @@ public UserEntity(String identifier, String email, String username, UserRoleType
4747
this.socialType = socialType;
4848
}
4949

50+
public UserEntity(Long id, String identifier, String email, String username, UserRoleType roleType, SocialType socialType) {
51+
this.id = id;
52+
this.identifier = identifier;
53+
this.email = email;
54+
this.username = username;
55+
this.roleType = roleType;
56+
this.socialType = socialType;
57+
}
58+
5059
public UserEntity(OAuth2Response oAuth2Response) {
5160
this.identifier = oAuth2Response.getProvider() + "-" + oAuth2Response.getProviderId();
5261
this.email = oAuth2Response.getEmail();

src/main/java/apptive/team5/user/service/UserService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
package apptive.team5.user.service;
2+
import apptive.team5.jwt.TokenType;
23
import apptive.team5.jwt.component.JWTUtil;
34
import apptive.team5.jwt.dto.TokenResponse;
45
import apptive.team5.jwt.repository.RefreshTokenRepository;
@@ -30,8 +31,8 @@ public TokenResponse socialLogin(OAuth2Response oAuth2Response) {
3031
user = userLowService.save(new UserEntity(identifier, oAuth2Response.getEmail(), oAuth2Response.getUsername(), UserRoleType.USER, oAuth2Response.getProvider()));
3132
}
3233

33-
String accessToken = jwtUtil.createJWT(user.getIdentifier(), "ROLE_" + user.getRoleType().name(), true);
34-
String refreshToken = jwtUtil.createJWT(user.getIdentifier(), "ROLE_" + user.getRoleType().name(), false);
34+
String accessToken = jwtUtil.createJWT(user.getIdentifier(), "ROLE_" + user.getRoleType().name(), TokenType.ACCESS_TOKEN);
35+
String refreshToken = jwtUtil.createJWT(user.getIdentifier(), "ROLE_" + user.getRoleType().name(), TokenType.REFRESH_TOKEN);
3536

3637

3738
jwtService.saveRefreshToken(user.getIdentifier(), refreshToken);

src/test/java/apptive/team5/jwt/controller/JwtControllerTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
import apptive.team5.global.exception.ExceptionCode;
5+
import apptive.team5.jwt.TokenType;
56
import apptive.team5.jwt.component.JWTUtil;
67
import apptive.team5.jwt.dto.TokenResponse;
78
import apptive.team5.jwt.service.JwtService;
@@ -52,7 +53,7 @@ void exchangeTokenSuccess() throws Exception {
5253
UserEntity user = TestUtil.makeUserEntity();
5354
UserEntity userEntity = userLowService.save(user);
5455

55-
String refreshToken = jwtUtil.createJWT(userEntity.getIdentifier(), userEntity.getRoleType().name(), false);
56+
String refreshToken = jwtUtil.createJWT(userEntity.getIdentifier(), userEntity.getRoleType().name(), TokenType.REFRESH_TOKEN);
5657

5758
jwtService.saveRefreshToken(userEntity.getIdentifier(), refreshToken);
5859

@@ -92,7 +93,7 @@ void exchangeTokenFailure3() throws Exception {
9293
UserEntity user = TestUtil.makeUserEntity();
9394
UserEntity userEntity = userLowService.save(user);
9495

95-
String refreshToken = jwtUtil.createJWT(userEntity.getIdentifier(), userEntity.getRoleType().name(), false, 0L);
96+
String refreshToken = jwtUtil.createJWT(userEntity.getIdentifier(), userEntity.getRoleType().name(), TokenType.REFRESH_TOKEN, 0L);
9697

9798
mockMvc.perform(post("/api/jwt/exchange")
9899
.header("X-Refresh-Token", refreshToken))
@@ -101,4 +102,4 @@ void exchangeTokenFailure3() throws Exception {
101102
}
102103

103104

104-
}
105+
}

src/test/java/apptive/team5/jwt/service/JwtServiceTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ void saveRefreshTokenSuccess() {
8888
void exchangeTokenSuccess() {
8989
// given
9090

91-
given(jwtUtil.validateToken(any(), anyBoolean()))
91+
given(jwtUtil.validateToken(any(), any()))
9292
.willReturn(true);
9393

9494
Claims claims = mock(Claims.class);
@@ -134,7 +134,7 @@ void exchangeTokenSuccess() {
134134
verify(refreshTokenRepository).deleteByUser(any());
135135
verify(refreshTokenRepository).save(any());
136136
verify(jwtUtil).getClaims(any());
137-
verify(jwtUtil).validateToken(any(), anyBoolean());
137+
verify(jwtUtil).validateToken(any(), any());
138138
verify(jwtUtil, times(2)).createJWT(any(), any(), any());
139139
verifyNoMoreInteractions(userLowService, jwtUtil, refreshTokenRepository);
140140
}
@@ -162,14 +162,14 @@ void exchangeTokenFailure3() {
162162
// given
163163

164164

165-
given(jwtUtil.validateToken(any(), anyBoolean()))
165+
given(jwtUtil.validateToken(any(), any()))
166166
.willReturn(false);
167167

168168
// when & then
169169
assertThatThrownBy(()->jwtService.exchangeToken("refreshToken"))
170170
.isInstanceOf(AuthenticationException.class)
171171
.hasMessage(ExceptionCode.INVALID_REFRESH_TOKEN.getDescription());
172-
verify(jwtUtil).validateToken(any(), anyBoolean());
172+
verify(jwtUtil).validateToken(any(), any());
173173
verifyNoMoreInteractions(userLowService, jwtUtil, refreshTokenRepository);
174174
}
175175

@@ -178,4 +178,4 @@ private UserEntity createUserEntity() {
178178
"exampleName", UserRoleType.USER, SocialType.GOOGLE);
179179
}
180180

181-
}
181+
}

0 commit comments

Comments
 (0)