generated from pricelees/issue-pr-template
refactor: 회원 / 관리자 PK 기반 MDC 유틸 분리 및 반영
This commit is contained in:
parent
cf3a1488f7
commit
afedaa21b8
@ -4,7 +4,6 @@ import io.github.oshai.kotlinlogging.KLogger
|
|||||||
import io.github.oshai.kotlinlogging.KotlinLogging
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
import org.slf4j.MDC
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import org.springframework.web.method.HandlerMethod
|
import org.springframework.web.method.HandlerMethod
|
||||||
import org.springframework.web.servlet.HandlerInterceptor
|
import org.springframework.web.servlet.HandlerInterceptor
|
||||||
@ -18,7 +17,7 @@ import roomescape.auth.exception.AuthException
|
|||||||
import roomescape.auth.infrastructure.jwt.JwtUtils
|
import roomescape.auth.infrastructure.jwt.JwtUtils
|
||||||
import roomescape.auth.web.support.AdminOnly
|
import roomescape.auth.web.support.AdminOnly
|
||||||
import roomescape.auth.web.support.accessToken
|
import roomescape.auth.web.support.accessToken
|
||||||
import roomescape.common.dto.MDC_PRINCIPAL_ID_KEY
|
import roomescape.common.util.MdcPrincipalId
|
||||||
|
|
||||||
private val log: KLogger = KotlinLogging.logger {}
|
private val log: KLogger = KotlinLogging.logger {}
|
||||||
|
|
||||||
@ -39,7 +38,7 @@ class AdminInterceptor(
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
run {
|
run {
|
||||||
val id: String = jwtUtils.extractSubject(token).also { MDC.put(MDC_PRINCIPAL_ID_KEY, it) }
|
val id: String = jwtUtils.extractSubject(token).also { MdcPrincipalId.set(it) }
|
||||||
val type: AdminType = validateTypeAndGet(token, annotation.type)
|
val type: AdminType = validateTypeAndGet(token, annotation.type)
|
||||||
val permission: AdminPermissionLevel = validatePermissionAndGet(token, annotation.privilege)
|
val permission: AdminPermissionLevel = validatePermissionAndGet(token, annotation.privilege)
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import io.github.oshai.kotlinlogging.KLogger
|
|||||||
import io.github.oshai.kotlinlogging.KotlinLogging
|
import io.github.oshai.kotlinlogging.KotlinLogging
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import jakarta.servlet.http.HttpServletResponse
|
import jakarta.servlet.http.HttpServletResponse
|
||||||
import org.slf4j.MDC
|
|
||||||
import org.springframework.stereotype.Component
|
import org.springframework.stereotype.Component
|
||||||
import org.springframework.web.method.HandlerMethod
|
import org.springframework.web.method.HandlerMethod
|
||||||
import org.springframework.web.servlet.HandlerInterceptor
|
import org.springframework.web.servlet.HandlerInterceptor
|
||||||
@ -14,7 +13,7 @@ import roomescape.auth.exception.AuthException
|
|||||||
import roomescape.auth.infrastructure.jwt.JwtUtils
|
import roomescape.auth.infrastructure.jwt.JwtUtils
|
||||||
import roomescape.auth.web.support.UserOnly
|
import roomescape.auth.web.support.UserOnly
|
||||||
import roomescape.auth.web.support.accessToken
|
import roomescape.auth.web.support.accessToken
|
||||||
import roomescape.common.dto.MDC_PRINCIPAL_ID_KEY
|
import roomescape.common.util.MdcPrincipalId
|
||||||
|
|
||||||
private val log: KLogger = KotlinLogging.logger {}
|
private val log: KLogger = KotlinLogging.logger {}
|
||||||
|
|
||||||
@ -34,7 +33,7 @@ class UserInterceptor(
|
|||||||
val token: String? = request.accessToken()
|
val token: String? = request.accessToken()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val id: String = jwtUtils.extractSubject(token).also { MDC.put(MDC_PRINCIPAL_ID_KEY, it) }
|
val id: String = jwtUtils.extractSubject(token).also { MdcPrincipalId.set(it) }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CLAIM_ADMIN_TYPE_KEY 가 존재하면 관리자 토큰임
|
* CLAIM_ADMIN_TYPE_KEY 가 존재하면 관리자 토큰임
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
package roomescape.common.config
|
package roomescape.common.config
|
||||||
|
|
||||||
import org.slf4j.MDC
|
|
||||||
import org.springframework.context.annotation.Bean
|
import org.springframework.context.annotation.Bean
|
||||||
import org.springframework.context.annotation.Configuration
|
import org.springframework.context.annotation.Configuration
|
||||||
import org.springframework.data.domain.AuditorAware
|
import org.springframework.data.domain.AuditorAware
|
||||||
import org.springframework.data.jpa.repository.config.EnableJpaAuditing
|
import org.springframework.data.jpa.repository.config.EnableJpaAuditing
|
||||||
import roomescape.common.dto.MDC_PRINCIPAL_ID_KEY
|
import roomescape.common.util.MdcPrincipalId
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@ -17,13 +16,5 @@ class JpaConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class MdcAuditorAware : AuditorAware<Long> {
|
class MdcAuditorAware : AuditorAware<Long> {
|
||||||
override fun getCurrentAuditor(): Optional<Long> {
|
override fun getCurrentAuditor(): Optional<Long> = MdcPrincipalId.extractAsOptionalLongOrEmpty()
|
||||||
val memberIdStr: String? = MDC.get(MDC_PRINCIPAL_ID_KEY)
|
|
||||||
|
|
||||||
if (memberIdStr == null) {
|
|
||||||
return Optional.empty()
|
|
||||||
} else {
|
|
||||||
return Optional.of(memberIdStr.toLong())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import roomescape.auth.web.LoginSuccessResponse
|
|||||||
import roomescape.auth.web.UserLoginSuccessResponse
|
import roomescape.auth.web.UserLoginSuccessResponse
|
||||||
import roomescape.user.infrastructure.persistence.UserEntity
|
import roomescape.user.infrastructure.persistence.UserEntity
|
||||||
|
|
||||||
const val MDC_PRINCIPAL_ID_KEY: String = "principal_id"
|
|
||||||
|
|
||||||
abstract class LoginCredentials {
|
abstract class LoginCredentials {
|
||||||
abstract val id: Long
|
abstract val id: Long
|
||||||
|
|||||||
@ -2,8 +2,7 @@ package roomescape.common.log
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper
|
import com.fasterxml.jackson.databind.ObjectMapper
|
||||||
import jakarta.servlet.http.HttpServletRequest
|
import jakarta.servlet.http.HttpServletRequest
|
||||||
import org.slf4j.MDC
|
import roomescape.common.util.MdcPrincipalId
|
||||||
import roomescape.common.dto.MDC_PRINCIPAL_ID_KEY
|
|
||||||
|
|
||||||
enum class LogType {
|
enum class LogType {
|
||||||
INCOMING_HTTP_REQUEST,
|
INCOMING_HTTP_REQUEST,
|
||||||
@ -34,7 +33,7 @@ class ApiLogMessageConverter(
|
|||||||
controllerPayload: Map<String, Any>,
|
controllerPayload: Map<String, Any>,
|
||||||
): String {
|
): String {
|
||||||
val payload: MutableMap<String, Any> = commonRequestPayload(LogType.CONTROLLER_INVOKED, request)
|
val payload: MutableMap<String, Any> = commonRequestPayload(LogType.CONTROLLER_INVOKED, request)
|
||||||
val memberId: Long? = MDC.get(MDC_PRINCIPAL_ID_KEY)?.toLong()
|
val memberId: Long? = MdcPrincipalId.extractAsLongOrNull()
|
||||||
if (memberId != null) payload["principal_id"] = memberId else payload["principal_id"] = "NONE"
|
if (memberId != null) payload["principal_id"] = memberId else payload["principal_id"] = "NONE"
|
||||||
|
|
||||||
payload.putAll(controllerPayload)
|
payload.putAll(controllerPayload)
|
||||||
@ -48,7 +47,7 @@ class ApiLogMessageConverter(
|
|||||||
payload["endpoint"] = request.endpoint
|
payload["endpoint"] = request.endpoint
|
||||||
payload["status_code"] = request.httpStatus
|
payload["status_code"] = request.httpStatus
|
||||||
|
|
||||||
MDC.get(MDC_PRINCIPAL_ID_KEY)?.toLongOrNull()
|
MdcPrincipalId.extractAsLongOrNull()
|
||||||
?.let { payload["principal_id"] = it }
|
?.let { payload["principal_id"] = it }
|
||||||
?: run { payload["principal_id"] = "NONE" }
|
?: run { payload["principal_id"] = "NONE" }
|
||||||
|
|
||||||
|
|||||||
27
src/main/kotlin/roomescape/common/util/MDCUtils.kt
Normal file
27
src/main/kotlin/roomescape/common/util/MDCUtils.kt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package roomescape.common.util
|
||||||
|
|
||||||
|
import org.slf4j.MDC
|
||||||
|
import java.util.Optional
|
||||||
|
|
||||||
|
private const val MDC_PRINCIPAL_ID_KEY = "principal_id"
|
||||||
|
|
||||||
|
object MdcPrincipalId {
|
||||||
|
|
||||||
|
fun extractAsLongOrNull(): Long? {
|
||||||
|
return MDC.get(MDC_PRINCIPAL_ID_KEY)?.toLong()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun extractAsOptionalLongOrEmpty(): Optional<Long> {
|
||||||
|
return MDC.get(MDC_PRINCIPAL_ID_KEY)?.let {
|
||||||
|
Optional.of(it.toLong())
|
||||||
|
} ?: Optional.empty()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun set(id: String) {
|
||||||
|
MDC.put(MDC_PRINCIPAL_ID_KEY, id)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun clear() {
|
||||||
|
MDC.remove(MDC_PRINCIPAL_ID_KEY)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user