refactor: 인증 API 로깅 추가

This commit is contained in:
이상진 2025-07-27 22:57:29 +09:00
parent e6c08100ee
commit 2d55e411cf
2 changed files with 27 additions and 14 deletions

View File

@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody
import roomescape.auth.web.LoginCheckResponse
import roomescape.auth.web.LoginRequest
import roomescape.auth.web.LoginResponse
import roomescape.auth.web.support.LoginRequired
import roomescape.auth.web.support.MemberId
import roomescape.common.dto.response.CommonApiResponse
@ -36,6 +37,7 @@ interface AuthAPI {
@MemberId @Parameter(hidden = true) memberId: Long
): ResponseEntity<CommonApiResponse<LoginCheckResponse>>
@LoginRequired
@Operation(summary = "로그아웃", tags = ["로그인이 필요한 API"])
@ApiResponses(
ApiResponse(responseCode = "200", description = "로그아웃 성공시 쿠키에 저장된 토큰 정보를 삭제합니다."),

View File

@ -9,6 +9,7 @@ import roomescape.auth.infrastructure.jwt.JwtHandler
import roomescape.auth.web.LoginCheckResponse
import roomescape.auth.web.LoginRequest
import roomescape.auth.web.LoginResponse
import roomescape.common.exception.RoomescapeException
import roomescape.member.business.MemberService
import roomescape.member.infrastructure.persistence.MemberEntity
@ -17,40 +18,50 @@ private val log: KLogger = KotlinLogging.logger {}
@Service
class AuthService(
private val memberService: MemberService,
private val jwtHandler: JwtHandler
private val jwtHandler: JwtHandler,
) {
fun login(request: LoginRequest): LoginResponse {
val member: MemberEntity = fetchMemberOrThrow(AuthErrorCode.LOGIN_FAILED) {
log.debug { "[AuthService.login] 로그인 시작: email=${request.email}" }
val params = "email=${request.email}, password=${request.password}"
val member: MemberEntity = fetchMemberOrThrow(AuthErrorCode.LOGIN_FAILED, params, "login") {
memberService.findByEmailAndPassword(request.email, request.password)
}
val accessToken: String = jwtHandler.createToken(member.id!!)
return LoginResponse(accessToken)
.also { log.info { "[AuthService.login] 로그인 완료: memberId=${member.id}" } }
}
fun checkLogin(memberId: Long): LoginCheckResponse {
val member: MemberEntity = fetchMemberOrThrow(AuthErrorCode.UNIDENTIFIABLE_MEMBER) {
log.debug { "[AuthService.checkLogin] 로그인 확인 시작: memberId=$memberId" }
val member: MemberEntity =
fetchMemberOrThrow(AuthErrorCode.UNIDENTIFIABLE_MEMBER, "memberId=$memberId", "checkLogin") {
memberService.findById(memberId)
}
return LoginCheckResponse(member.name, member.role.name)
.also { log.info { "[AuthService.checkLogin] 로그인 확인 완료: memberId=$memberId" } }
}
fun logout(memberId: Long) {
log.info { "[AuthService.logout] 로그아웃: memberId=$memberId" }
}
private fun fetchMemberOrThrow(
errorCode: AuthErrorCode,
block: () -> MemberEntity
params: String,
calledBy: String,
block: () -> MemberEntity,
): MemberEntity {
try {
log.debug { "[AuthService.$calledBy] 회원 조회 시작: $params" }
return block()
} catch (_: Exception) {
} catch (e: Exception) {
if (e !is RoomescapeException) {
log.warn(e) { "[AuthService.$calledBy] 회원 조회 실패: $params" }
}
throw AuthException(errorCode)
}
}
fun logout(memberId: Long?) {
if (memberId != null) {
log.info { "requested logout for $memberId" }
}
}
}