diff --git a/auth/src/main/kotlin/kpring/auth/repository/ExpireTokenRepository.kt b/auth/src/main/kotlin/kpring/auth/repository/ExpireTokenRepository.kt index 63b951d4..6e56d1b6 100644 --- a/auth/src/main/kotlin/kpring/auth/repository/ExpireTokenRepository.kt +++ b/auth/src/main/kotlin/kpring/auth/repository/ExpireTokenRepository.kt @@ -18,6 +18,10 @@ class ExpireTokenRepository( .awaitSingle() } + suspend fun isBlacklisted(tokenId: String): Boolean { + return redisTemplate.hasKey(tokenId).awaitSingle() + } + suspend fun expireToken( tokenId: String, expiredAt: LocalDateTime, diff --git a/auth/src/main/kotlin/kpring/auth/service/TokenService.kt b/auth/src/main/kotlin/kpring/auth/service/TokenService.kt index ba79095a..66c47501 100644 --- a/auth/src/main/kotlin/kpring/auth/service/TokenService.kt +++ b/auth/src/main/kotlin/kpring/auth/service/TokenService.kt @@ -89,6 +89,9 @@ class TokenService( val isExpired = !tokenRepository.isExpired(token) if (!isExpired) throw ServiceException(AuthErrorCode.TOKEN_EXPIRED) + val isBlacklisted = tokenRepository.isBlacklisted(jwt.id) + if (isBlacklisted) throw ServiceException(AuthErrorCode.TOKEN_EXPIRED) + return TokenInfo(jwt.type, jwt.userId) } } diff --git a/user/src/main/kotlin/kpring/user/service/LoginServiceImpl.kt b/user/src/main/kotlin/kpring/user/service/LoginServiceImpl.kt index a761e001..14e6a523 100644 --- a/user/src/main/kotlin/kpring/user/service/LoginServiceImpl.kt +++ b/user/src/main/kotlin/kpring/user/service/LoginServiceImpl.kt @@ -31,7 +31,8 @@ class LoginServiceImpl( } override fun logout(request: LogoutRequest) { - TODO("Not yet implemented") + authClient.deleteToken(request.accessToken) + authClient.deleteToken(request.refreshToken) } fun handleTokenResponse(tokenResponse: ResponseEntity): LoginResponse {