61 lines
2.4 KiB
Kotlin
61 lines
2.4 KiB
Kotlin
package kr.co.vividnext.sodalive.common
|
|
|
|
import org.slf4j.LoggerFactory
|
|
import org.springframework.dao.DataIntegrityViolationException
|
|
import org.springframework.security.access.AccessDeniedException
|
|
import org.springframework.security.authentication.BadCredentialsException
|
|
import org.springframework.security.authentication.InternalAuthenticationServiceException
|
|
import org.springframework.web.bind.annotation.ExceptionHandler
|
|
import org.springframework.web.bind.annotation.RestControllerAdvice
|
|
import org.springframework.web.multipart.MaxUploadSizeExceededException
|
|
|
|
@RestControllerAdvice
|
|
class SodaExceptionHandler {
|
|
private val logger = LoggerFactory.getLogger(this::class.java)
|
|
|
|
@ExceptionHandler(SodaException::class)
|
|
fun handleSodaException(e: SodaException) = run {
|
|
logger.error("API error", e)
|
|
ApiResponse.error(
|
|
message = e.message,
|
|
errorProperty = e.errorProperty
|
|
)
|
|
}
|
|
|
|
@ExceptionHandler(MaxUploadSizeExceededException::class)
|
|
fun handleMaxUploadSizeExceededException(e: MaxUploadSizeExceededException) = run {
|
|
logger.error("API error", e)
|
|
ApiResponse.error(message = "파일용량은 최대 1024MB까지 저장할 수 있습니다.")
|
|
}
|
|
|
|
@ExceptionHandler(AccessDeniedException::class)
|
|
fun handleAccessDeniedException(e: AccessDeniedException) = run {
|
|
logger.error("API error", e)
|
|
ApiResponse.error(message = "권한이 없습니다.")
|
|
}
|
|
|
|
@ExceptionHandler(InternalAuthenticationServiceException::class)
|
|
fun handleInternalAuthenticationServiceException(e: InternalAuthenticationServiceException) = run {
|
|
logger.error("API error", e)
|
|
ApiResponse.error("로그인 정보를 확인해주세요.")
|
|
}
|
|
|
|
@ExceptionHandler(BadCredentialsException::class)
|
|
fun handleBadCredentialsException(e: BadCredentialsException) = run {
|
|
logger.error("API error", e)
|
|
ApiResponse.error("로그인 정보를 확인해주세요.")
|
|
}
|
|
|
|
@ExceptionHandler(DataIntegrityViolationException::class)
|
|
fun handleDataIntegrityViolationException(e: DataIntegrityViolationException) = run {
|
|
logger.error("API error", e)
|
|
ApiResponse.error("이미 등록되어 있습니다.")
|
|
}
|
|
|
|
@ExceptionHandler(Exception::class)
|
|
fun handleException(e: Exception) = run {
|
|
logger.error("API error", e)
|
|
ApiResponse.error("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
|
|
}
|
|
}
|