[#24] feat: front용 에러 응답 포멧 적용(미완성)

- error response 규격화 때 개발 계획
- front용 임시 에러응답 적용
This commit is contained in:
beaniejoy
2022-11-29 01:15:21 +09:00
parent 74896f286d
commit 579e107084
15 changed files with 49 additions and 16 deletions

View File

@@ -22,7 +22,7 @@ class UserDetailsServiceImpl(
return memberRepository.findByEmail(email)?.let {
logger.info { "[LOAD MEMBER] email: ${it.email}, role: ${it.roleType}, activated: ${it.activated}" }
createSecurityUser(it)
} ?: throw UsernameNotFoundException(email)
} ?: throw UsernameNotFoundException("${email} is not found")
}
private fun createSecurityUser(member: Member): SecurityUser {

View File

@@ -0,0 +1,27 @@
package io.beaniejoy.dongnecafe.error.handler
import io.beaniejoy.dongnecafe.error.ErrorResponse
import mu.KLogging
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.security.core.AuthenticationException
import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.bind.annotation.RestControllerAdvice
// TODO 통합된 에러 핸들링 필요(ErrorResponse 규격화)
@RestControllerAdvice
class CommonControllerAdvice {
companion object : KLogging()
@ExceptionHandler(AuthenticationException::class)
fun handleAuthenticationException(e: AuthenticationException): ResponseEntity<ErrorResponse> {
logger.error { "AuthenticationException: ${e.message}" }
return ResponseEntity.ok().body(
ErrorResponse(
code = HttpStatus.BAD_REQUEST.value(),
message = "계정 혹은 비밀번호가 일치하지 않습니다."
)
)
}
}

View File

@@ -0,0 +1,6 @@
package io.beaniejoy.dongnecafe.error
data class ErrorResponse(
val code: Int,
val message: String?
)

View File

@@ -1,7 +1,7 @@
package io.beaniejoy.dongnecafe.domain.cafe.service
import io.beaniejoy.dongnecafe.domain.cafe.model.response.CafeMenuDetailedInfo
import io.beaniejoy.dongnecafe.common.error.exception.CafeMenuNotFoundException
import io.beaniejoy.dongnecafe.error.exception.CafeMenuNotFoundException
import io.beaniejoy.dongnecafe.domain.cafe.model.request.CafeMenuUpdateRequest
import io.beaniejoy.dongnecafe.domain.cafe.repository.CafeMenuRepository
import org.springframework.data.repository.findByIdOrNull

View File

@@ -4,8 +4,8 @@ import io.beaniejoy.dongnecafe.domain.cafe.model.response.CafeDetailedInfo
import io.beaniejoy.dongnecafe.domain.cafe.model.response.CafeSearchInfo
import io.beaniejoy.dongnecafe.domain.cafe.model.request.CafeMenuRegisterRequest
import io.beaniejoy.dongnecafe.domain.cafe.entity.Cafe
import io.beaniejoy.dongnecafe.common.error.exception.CafeExistedException
import io.beaniejoy.dongnecafe.common.error.exception.CafeNotFoundException
import io.beaniejoy.dongnecafe.error.exception.CafeExistedException
import io.beaniejoy.dongnecafe.error.exception.CafeNotFoundException
import io.beaniejoy.dongnecafe.domain.cafe.repository.CafeRepository
import mu.KLogging
import org.springframework.data.domain.Page

View File

@@ -1,6 +1,6 @@
package io.beaniejoy.dongnecafe.domain.cafe.service
import io.beaniejoy.dongnecafe.common.error.exception.MenuOptionNotFoundException
import io.beaniejoy.dongnecafe.error.exception.MenuOptionNotFoundException
import io.beaniejoy.dongnecafe.domain.cafe.model.request.MenuOptionUpdateRequest
import io.beaniejoy.dongnecafe.domain.cafe.repository.MenuOptionRepository
import org.springframework.data.repository.findByIdOrNull

View File

@@ -1,6 +1,6 @@
package io.beaniejoy.dongnecafe.domain.cafe.service
import io.beaniejoy.dongnecafe.common.error.exception.OptionDetailNotFoundException
import io.beaniejoy.dongnecafe.error.exception.OptionDetailNotFoundException
import io.beaniejoy.dongnecafe.domain.cafe.model.request.OptionDetailUpdateRequest
import io.beaniejoy.dongnecafe.domain.cafe.repository.OptionDetailRepository
import org.springframework.data.repository.findByIdOrNull

View File

@@ -1,6 +1,6 @@
package io.beaniejoy.dongnecafe.common.error
package io.beaniejoy.dongnecafe.error
import io.beaniejoy.dongnecafe.common.error.exception.CafeNotFoundException
import io.beaniejoy.dongnecafe.error.exception.CafeNotFoundException
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.bind.annotation.RestControllerAdvice

View File

@@ -1,3 +1,3 @@
package io.beaniejoy.dongnecafe.common.error.exception
package io.beaniejoy.dongnecafe.error.exception
class CafeExistedException(name: String) : RuntimeException("Cafe[$name] is already existed")

View File

@@ -1,4 +1,4 @@
package io.beaniejoy.dongnecafe.common.error.exception
package io.beaniejoy.dongnecafe.error.exception
class CafeMenuNotFoundException(menuId: Long, cafeId: Long) :
RuntimeException("Cafe[${cafeId}]의 Menu[${menuId}]는 존재하지 않는 메뉴입니다.")

View File

@@ -1,3 +1,3 @@
package io.beaniejoy.dongnecafe.common.error.exception
package io.beaniejoy.dongnecafe.error.exception
class CafeNotFoundException(cafeId: Long) : RuntimeException("Cafe[$cafeId] is not found")

View File

@@ -1,3 +1,3 @@
package io.beaniejoy.dongnecafe.common.error.exception
package io.beaniejoy.dongnecafe.error.exception
class MenuOptionNotFoundException(menuOptionId: Long) : RuntimeException("MenuOption[$menuOptionId] is not found")

View File

@@ -1,3 +1,3 @@
package io.beaniejoy.dongnecafe.common.error.exception
package io.beaniejoy.dongnecafe.error.exception
class OptionDetailNotFoundException(optionDetailId: Long) : RuntimeException("OptionDetail[$optionDetailId] is not found")

View File

@@ -1,7 +1,7 @@
package io.beaniejoy.dongnecafe.domain.cafe.service
import io.beaniejoy.dongnecafe.domain.cafe.entity.CafeMenu
import io.beaniejoy.dongnecafe.common.error.exception.CafeMenuNotFoundException
import io.beaniejoy.dongnecafe.error.exception.CafeMenuNotFoundException
import io.beaniejoy.dongnecafe.domain.cafe.repository.CafeMenuRepository
import io.beaniejoy.dongnecafe.domain.cafe.repository.MenuOptionRepository
import io.beaniejoy.dongnecafe.domain.cafe.repository.OptionDetailRepository

View File

@@ -1,8 +1,8 @@
package io.beaniejoy.dongnecafe.domain.cafe.service
import io.beaniejoy.dongnecafe.domain.cafe.entity.Cafe
import io.beaniejoy.dongnecafe.common.error.exception.CafeExistedException
import io.beaniejoy.dongnecafe.common.error.exception.CafeNotFoundException
import io.beaniejoy.dongnecafe.error.exception.CafeExistedException
import io.beaniejoy.dongnecafe.error.exception.CafeNotFoundException
import io.beaniejoy.dongnecafe.domain.cafe.repository.CafeRepository
import io.beaniejoy.dongnecafe.domain.cafe.utils.CafeTestUtils
import org.junit.jupiter.api.*