Skip to content

Commit

Permalink
토큰 갱신 조건문 변경, UserInfo 파라미터 생성자 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
5upportPark committed Sep 23, 2024
1 parent 95b52be commit 49993aa
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,7 @@ public LoginController(UserService userService, JWTService jwtService){
public ResponseEntity<LoginResponse> userLogin(@RequestBody @Valid LoginRequest loginReq){
UserDTO user = userService.userLogin(loginReq);

UserInfo userInfo = new UserInfo();
userInfo.setName(user.getName());
userInfo.setLoginId(user.getLoginId());
UserInfo userInfo = new UserInfo(user.getName(), user.getLoginId());

LoginResponse response = new LoginResponse();
JWToken token = new JWToken();
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/pjw/retry_view/dto/UserInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,10 @@
public class UserInfo {
private String name;
private String loginId;

public UserInfo(){}
public UserInfo(String name, String loginId){
this.name = name;
this.loginId = loginId;
}
}
40 changes: 20 additions & 20 deletions src/main/java/com/pjw/retry_view/service/JWTService.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,27 +58,22 @@ public String createAccessToken(UserInfo userInfo){

@Transactional
public JWToken renewAccessToken(String refreshToken) throws InvalidTokenException {
//HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
boolean isValidate = this.validateToken(refreshToken);
boolean isExpired = this.isTokenExpired(refreshToken);
JWToken token = new JWToken();
UserDTO user = userRepository.findByRefreshToken(refreshToken).map(User::toDTO).orElseThrow(UserNotFoundException::new);
UserInfo userInfo = new UserInfo(user.getName(), user.getLoginId());

if(this.validateToken(refreshToken)){ // refreshToken이 유효한 경우
Claims jwtClaims = getClaims(refreshToken);
JWToken token = new JWToken();
UserDTO user = userRepository.findByRefreshToken(refreshToken).map(User::toDTO).orElseThrow(UserNotFoundException::new);
UserInfo userInfo = new UserInfo();
userInfo.setName(user.getName());
userInfo.setLoginId(user.getLoginId());

if(jwtClaims.getExpiration().before(new Date())){ // refreshToken이 만료되지 않은 경우 accessToken만 생성
token.setAccessToken(createAccessToken(userInfo));
return token;
}else{ // refreshToken이 만료된 경우 access,refreshToken 둘 다 생성
refreshToken = createRefreshToken();
token.setAccessToken(createAccessToken(userInfo));
token.setRefreshToken(refreshToken);
user.setRefreshToken(refreshToken);
userRepository.save(user.toEntity());
return token;
}
if(isValidate && !isExpired){ // refreshToken이 유효한 경우
token.setAccessToken(createAccessToken(userInfo));
return token;
}else if(isValidate && isExpired){// refreshToken이 만료된 경우 access,refreshToken 둘 다 생성
refreshToken = createRefreshToken();
token.setAccessToken(createAccessToken(userInfo));
token.setRefreshToken(refreshToken);
user.setRefreshToken(refreshToken);
userRepository.save(user.toEntity());
return token;
}else{
throw new InvalidTokenException();
}
Expand Down Expand Up @@ -120,6 +115,11 @@ public boolean validateToken(String token){
return false;
}

public boolean isTokenExpired(String token){
Claims jwtClaims = getClaims(token);
return jwtClaims.getExpiration().before(new Date());
}

private String tokenSplit(String token){
if(token.startsWith(BEARER_TYPE)){
return token.split(" ")[1];
Expand Down

0 comments on commit 49993aa

Please sign in to comment.