generated from pricelees/issue-pr-template
refactor: 인증 API 로깅 추가
This commit is contained in:
parent
e6c08100ee
commit
2d55e411cf
@ -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 = "로그아웃 성공시 쿠키에 저장된 토큰 정보를 삭제합니다."),
|
||||
|
||||
@ -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) {
|
||||
memberService.findById(memberId)
|
||||
}
|
||||
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" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user