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.LoginCheckResponse
|
||||||
import roomescape.auth.web.LoginRequest
|
import roomescape.auth.web.LoginRequest
|
||||||
import roomescape.auth.web.LoginResponse
|
import roomescape.auth.web.LoginResponse
|
||||||
|
import roomescape.auth.web.support.LoginRequired
|
||||||
import roomescape.auth.web.support.MemberId
|
import roomescape.auth.web.support.MemberId
|
||||||
import roomescape.common.dto.response.CommonApiResponse
|
import roomescape.common.dto.response.CommonApiResponse
|
||||||
|
|
||||||
@ -36,6 +37,7 @@ interface AuthAPI {
|
|||||||
@MemberId @Parameter(hidden = true) memberId: Long
|
@MemberId @Parameter(hidden = true) memberId: Long
|
||||||
): ResponseEntity<CommonApiResponse<LoginCheckResponse>>
|
): ResponseEntity<CommonApiResponse<LoginCheckResponse>>
|
||||||
|
|
||||||
|
@LoginRequired
|
||||||
@Operation(summary = "로그아웃", tags = ["로그인이 필요한 API"])
|
@Operation(summary = "로그아웃", tags = ["로그인이 필요한 API"])
|
||||||
@ApiResponses(
|
@ApiResponses(
|
||||||
ApiResponse(responseCode = "200", description = "로그아웃 성공시 쿠키에 저장된 토큰 정보를 삭제합니다."),
|
ApiResponse(responseCode = "200", description = "로그아웃 성공시 쿠키에 저장된 토큰 정보를 삭제합니다."),
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import roomescape.auth.infrastructure.jwt.JwtHandler
|
|||||||
import roomescape.auth.web.LoginCheckResponse
|
import roomescape.auth.web.LoginCheckResponse
|
||||||
import roomescape.auth.web.LoginRequest
|
import roomescape.auth.web.LoginRequest
|
||||||
import roomescape.auth.web.LoginResponse
|
import roomescape.auth.web.LoginResponse
|
||||||
|
import roomescape.common.exception.RoomescapeException
|
||||||
import roomescape.member.business.MemberService
|
import roomescape.member.business.MemberService
|
||||||
import roomescape.member.infrastructure.persistence.MemberEntity
|
import roomescape.member.infrastructure.persistence.MemberEntity
|
||||||
|
|
||||||
@ -17,40 +18,50 @@ private val log: KLogger = KotlinLogging.logger {}
|
|||||||
@Service
|
@Service
|
||||||
class AuthService(
|
class AuthService(
|
||||||
private val memberService: MemberService,
|
private val memberService: MemberService,
|
||||||
private val jwtHandler: JwtHandler
|
private val jwtHandler: JwtHandler,
|
||||||
) {
|
) {
|
||||||
fun login(request: LoginRequest): LoginResponse {
|
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)
|
memberService.findByEmailAndPassword(request.email, request.password)
|
||||||
}
|
}
|
||||||
|
|
||||||
val accessToken: String = jwtHandler.createToken(member.id!!)
|
val accessToken: String = jwtHandler.createToken(member.id!!)
|
||||||
|
|
||||||
return LoginResponse(accessToken)
|
return LoginResponse(accessToken)
|
||||||
|
.also { log.info { "[AuthService.login] 로그인 완료: memberId=${member.id}" } }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun checkLogin(memberId: Long): LoginCheckResponse {
|
fun checkLogin(memberId: Long): LoginCheckResponse {
|
||||||
val member: MemberEntity = fetchMemberOrThrow(AuthErrorCode.UNIDENTIFIABLE_MEMBER) {
|
log.debug { "[AuthService.checkLogin] 로그인 확인 시작: memberId=$memberId" }
|
||||||
memberService.findById(memberId)
|
val member: MemberEntity =
|
||||||
}
|
fetchMemberOrThrow(AuthErrorCode.UNIDENTIFIABLE_MEMBER, "memberId=$memberId", "checkLogin") {
|
||||||
|
memberService.findById(memberId)
|
||||||
|
}
|
||||||
|
|
||||||
return LoginCheckResponse(member.name, member.role.name)
|
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(
|
private fun fetchMemberOrThrow(
|
||||||
errorCode: AuthErrorCode,
|
errorCode: AuthErrorCode,
|
||||||
block: () -> MemberEntity
|
params: String,
|
||||||
|
calledBy: String,
|
||||||
|
block: () -> MemberEntity,
|
||||||
): MemberEntity {
|
): MemberEntity {
|
||||||
try {
|
try {
|
||||||
|
log.debug { "[AuthService.$calledBy] 회원 조회 시작: $params" }
|
||||||
return block()
|
return block()
|
||||||
} catch (_: Exception) {
|
} catch (e: Exception) {
|
||||||
|
if (e !is RoomescapeException) {
|
||||||
|
log.warn(e) { "[AuthService.$calledBy] 회원 조회 실패: $params" }
|
||||||
|
}
|
||||||
throw AuthException(errorCode)
|
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