-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #12 from Mojacknong/feature_11/에러처리-추가
Fix 11/에러처리 추가
- Loading branch information
Showing
15 changed files
with
251 additions
and
74 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
21 changes: 21 additions & 0 deletions
21
src/main/java/modernfarmer/server/farmususer/global/exception/CustomExceptionContext.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package modernfarmer.server.farmususer.global.exception; | ||
|
||
import lombok.Getter; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.http.HttpStatus; | ||
|
||
@Getter | ||
@RequiredArgsConstructor | ||
public enum CustomExceptionContext implements ExceptionContext{ | ||
|
||
|
||
FIREBASE_CONFIG_EXCEPTION(HttpStatus.BAD_REQUEST, 1005, "파이어베이스 설정 오류입니다."), | ||
NOT_FOUND_MEDICINE_ERROR(HttpStatus.NOT_FOUND, 1006, "해당 약 정보를 찾을 수 없습니다."), | ||
REFRESH_TOKEN_DIFFERENT(HttpStatus.BAD_REQUEST , 1000,"접근이 올바르지 않습니다."); | ||
// DOMAIN PER EXCEPTIONS ... | ||
|
||
|
||
private final HttpStatus httpStatus; | ||
private final int code; | ||
private final String message; | ||
} |
13 changes: 13 additions & 0 deletions
13
src/main/java/modernfarmer/server/farmususer/global/exception/ErrorResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package modernfarmer.server.farmususer.global.exception; | ||
|
||
import lombok.*; | ||
|
||
@Getter | ||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@AllArgsConstructor | ||
@ToString | ||
public class ErrorResponse { | ||
|
||
private int code; | ||
private String message; | ||
} |
11 changes: 11 additions & 0 deletions
11
src/main/java/modernfarmer/server/farmususer/global/exception/ExceptionContext.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package modernfarmer.server.farmususer.global.exception; | ||
|
||
import org.springframework.http.HttpStatus; | ||
|
||
public interface ExceptionContext { | ||
HttpStatus getHttpStatus(); | ||
|
||
String getMessage(); | ||
|
||
int getCode(); | ||
} |
43 changes: 43 additions & 0 deletions
43
src/main/java/modernfarmer/server/farmususer/global/exception/GlobalExceptionHandler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package modernfarmer.server.farmususer.global.exception; | ||
|
||
import lombok.RequiredArgsConstructor; | ||
import lombok.extern.slf4j.Slf4j; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.validation.FieldError; | ||
import org.springframework.web.bind.MethodArgumentNotValidException; | ||
import org.springframework.web.bind.annotation.ExceptionHandler; | ||
import org.springframework.web.bind.annotation.RestControllerAdvice; | ||
|
||
import javax.servlet.http.HttpServletRequest; | ||
import java.util.Objects; | ||
|
||
@Slf4j | ||
@RequiredArgsConstructor | ||
@RestControllerAdvice | ||
public class GlobalExceptionHandler { | ||
private final int INVALID_PARAMETER_CODE = 400; | ||
|
||
@ExceptionHandler(MethodArgumentNotValidException.class) | ||
public ResponseEntity<ErrorResponse> handleInputFieldException(MethodArgumentNotValidException e) { | ||
FieldError mainError = e.getFieldErrors().get(0); | ||
String[] errorInfo = Objects.requireNonNull(mainError.getDefaultMessage()).split(":"); | ||
String message = errorInfo[0]; | ||
return ResponseEntity.badRequest().body(new ErrorResponse(INVALID_PARAMETER_CODE, message)); | ||
} | ||
|
||
@ExceptionHandler(ModernFarmerException.class) | ||
public ResponseEntity<ErrorResponse> handleModernFarmerException(ModernFarmerException e) { | ||
return ResponseEntity.status(e.getHttpStatus()).body(new ErrorResponse(e.getCode(), e.getMessage())); | ||
} | ||
|
||
@ExceptionHandler(Exception.class) | ||
public ResponseEntity<ErrorResponse> unhandledException(Exception e, HttpServletRequest request) { | ||
log.error("UnhandledException: {} {} errMessage={}\n", | ||
request.getMethod(), | ||
request.getRequestURI(), | ||
e.getMessage() | ||
); | ||
return ResponseEntity.internalServerError() | ||
.body(new ErrorResponse(500, "서버와의 접속이 원활하지 않습니다.")); | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
src/main/java/modernfarmer/server/farmususer/global/exception/ModernFarmerException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package modernfarmer.server.farmususer.global.exception; | ||
|
||
import lombok.Getter; | ||
import org.springframework.http.HttpStatus; | ||
|
||
@Getter | ||
public class ModernFarmerException extends RuntimeException { | ||
private final HttpStatus httpStatus; | ||
private final String message; | ||
private final int code; | ||
|
||
public ModernFarmerException(HttpStatus httpStatus, String message, int code) { | ||
this.httpStatus = httpStatus; | ||
this.message = message; | ||
this.code = code; | ||
} | ||
|
||
|
||
} |
13 changes: 13 additions & 0 deletions
13
.../java/modernfarmer/server/farmususer/global/exception/badrequest/BadRequestException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package modernfarmer.server.farmususer.global.exception.badrequest; | ||
|
||
|
||
import lombok.Getter; | ||
import modernfarmer.server.farmususer.global.exception.ExceptionContext; | ||
import modernfarmer.server.farmususer.global.exception.ModernFarmerException; | ||
|
||
@Getter | ||
public class BadRequestException extends ModernFarmerException { | ||
public BadRequestException(ExceptionContext context){ | ||
super(context.getHttpStatus(), context.getMessage(), context.getCode()); | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
...a/modernfarmer/server/farmususer/global/exception/badrequest/FirebaseConfigException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package modernfarmer.server.farmususer.global.exception.badrequest; | ||
|
||
|
||
import static modernfarmer.server.farmususer.global.exception.CustomExceptionContext.FIREBASE_CONFIG_EXCEPTION; | ||
|
||
public class FirebaseConfigException extends BadRequestException { | ||
public FirebaseConfigException(){ | ||
super(FIREBASE_CONFIG_EXCEPTION); | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
...main/java/modernfarmer/server/farmususer/global/exception/notfound/NotFoundException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package modernfarmer.server.farmususer.global.exception.notfound; | ||
|
||
|
||
import lombok.Getter; | ||
import modernfarmer.server.farmususer.global.exception.ExceptionContext; | ||
import modernfarmer.server.farmususer.global.exception.ModernFarmerException; | ||
import org.springframework.http.HttpStatus; | ||
|
||
@Getter | ||
public class NotFoundException extends ModernFarmerException { | ||
public NotFoundException(ExceptionContext context) { | ||
super(context.getHttpStatus(), context.getMessage(), context.getCode()); | ||
} | ||
|
||
|
||
} |
12 changes: 12 additions & 0 deletions
12
...a/modernfarmer/server/farmususer/global/exception/notfound/NotFoundMedicineException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package modernfarmer.server.farmususer.global.exception.notfound; | ||
|
||
|
||
import modernfarmer.server.farmususer.global.exception.ModernFarmerException; | ||
|
||
import static modernfarmer.server.farmususer.global.exception.CustomExceptionContext.NOT_FOUND_MEDICINE_ERROR; | ||
|
||
public class NotFoundMedicineException extends NotFoundException { | ||
public NotFoundMedicineException() { | ||
super(NOT_FOUND_MEDICINE_ERROR); | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
...dernfarmer/server/farmususer/global/exception/notfound/NotFoundRefreshTokenException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
package modernfarmer.server.farmususer.global.exception.notfound; | ||
|
||
import static modernfarmer.server.farmususer.global.exception.CustomExceptionContext.REFRESH_TOKEN_DIFFERENT; | ||
|
||
public class NotFoundRefreshTokenException extends NotFoundException{ | ||
|
||
public NotFoundRefreshTokenException() { | ||
super(REFRESH_TOKEN_DIFFERENT); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
74 changes: 74 additions & 0 deletions
74
src/main/java/modernfarmer/server/farmususer/user/service/UserService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package modernfarmer.server.farmususer.user.service; | ||
|
||
import modernfarmer.server.farmususer.global.exception.notfound.NotFoundRefreshTokenException; | ||
import modernfarmer.server.farmususer.user.dto.response.ResponseDto; | ||
import modernfarmer.server.farmususer.user.dto.response.TokenResponseDto; | ||
import modernfarmer.server.farmususer.user.repository.UserRepository; | ||
import modernfarmer.server.farmususer.user.util.JwtTokenProvider; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.data.redis.core.RedisTemplate; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.web.reactive.function.client.WebClient; | ||
|
||
import java.util.Objects; | ||
|
||
|
||
@Service | ||
public class UserService { | ||
|
||
public JwtTokenProvider jwtTokenProvider; | ||
public RedisTemplate<String, String> redisTemplate; | ||
|
||
public UserRepository userRepository; | ||
|
||
private final WebClient webClient; | ||
|
||
@Autowired | ||
public UserService(WebClient webClient, UserRepository userRepository, JwtTokenProvider jwtTokenProvider, RedisTemplate<String, String> redisTemplate) { | ||
this.webClient = webClient; | ||
this.userRepository = userRepository; | ||
this.jwtTokenProvider = jwtTokenProvider; | ||
this.redisTemplate = redisTemplate; | ||
} | ||
|
||
|
||
public ResponseDto logout(Long userId) { | ||
deleteValueByKey(String.valueOf(userId)); | ||
|
||
ResponseDto responseDto = ResponseDto.builder() | ||
.message("OK") | ||
.code(200) | ||
.build(); | ||
return responseDto; | ||
} | ||
|
||
public TokenResponseDto reissueToken(String refreshToken, Long userId) { | ||
TokenResponseDto reissueTokenResponse; | ||
|
||
String redisRefreshToken = redisTemplate.opsForValue().get(userId.toString()); | ||
|
||
if(refreshToken.equals(redisRefreshToken)){ | ||
|
||
String userRole = userRepository.findUserRole(userId); | ||
|
||
reissueTokenResponse= TokenResponseDto | ||
.builder() | ||
.code(200) | ||
.message("OK") | ||
.accessToken(jwtTokenProvider.createAccessToken(userId, userRole)) | ||
.refreshToken(refreshToken) | ||
.build(); | ||
|
||
return reissueTokenResponse; | ||
|
||
|
||
} | ||
throw new NotFoundRefreshTokenException(); | ||
|
||
} | ||
|
||
public void deleteValueByKey(String key) { | ||
redisTemplate.delete(key); | ||
} | ||
|
||
} |
Oops, something went wrong.