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("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") } }