diff --git a/api/src/main/kotlin/com/john/lotto/auth/adapter/out/adapter/KakaoAuthAdapter.kt b/api/src/main/kotlin/com/john/lotto/auth/adapter/out/adapter/KakaoAuthAdapter.kt index 2473e0a..20c7fdd 100644 --- a/api/src/main/kotlin/com/john/lotto/auth/adapter/out/adapter/KakaoAuthAdapter.kt +++ b/api/src/main/kotlin/com/john/lotto/auth/adapter/out/adapter/KakaoAuthAdapter.kt @@ -1,6 +1,5 @@ package com.john.lotto.auth.adapter.out.adapter -import com.fasterxml.jackson.databind.ObjectMapper import com.john.lotto.auth.application.dto.JwkInfo import com.john.lotto.auth.application.dto.ResultTokenInfo import com.john.lotto.auth.application.dto.TokenInfo @@ -13,7 +12,6 @@ import com.john.lotto.common.exception.UnAuthorizedException import com.john.lotto.common.utils.CipherUtils import com.john.lotto.common.utils.EnvironmentUtils import com.john.lotto.common.utils.ObjectMapperUtils -import com.john.lotto.member.MemberRepository import io.jsonwebtoken.ExpiredJwtException import io.jsonwebtoken.Jwts import org.slf4j.LoggerFactory @@ -30,14 +28,11 @@ import java.math.BigInteger import java.security.KeyFactory import java.security.PublicKey import java.security.spec.RSAPublicKeySpec -import java.time.Instant -import java.time.LocalDateTime import java.util.* @Component class KakaoAuthAdapter( - private val defaultWebClient: WebClient, - private val memberRepository: MemberRepository + private val defaultWebClient: WebClient ): AuthPort { private val log = LoggerFactory.getLogger(this::class.java) diff --git a/api/src/main/kotlin/com/john/lotto/auth/application/AuthService.kt b/api/src/main/kotlin/com/john/lotto/auth/application/AuthService.kt index 5f073e0..fc45864 100644 --- a/api/src/main/kotlin/com/john/lotto/auth/application/AuthService.kt +++ b/api/src/main/kotlin/com/john/lotto/auth/application/AuthService.kt @@ -41,16 +41,19 @@ class AuthService( override fun token(state: String, code: String): Mono = authPort.token(state, code) .flatMap { - val nickname = ObjectMapperUtils.decode( + val payload = ObjectMapperUtils.decode( it.idToken.split(".")[1], JwtTokenInfo.Payload::class.java - ).nickname + ) Mono.just( ResultTokenInfo( idToken = it.idToken, + expiresIn = it.expiresIn, refreshToken = it.refreshToken, - nickname = nickname + refreshTokenExpiresIn = it.refreshTokenExpiresIn, + nickname = payload.nickname, + email = payload.email ) ) } @@ -66,16 +69,19 @@ class AuthService( override fun refresh(refreshToken: String): Mono = authPort.refresh(refreshToken = refreshToken) .flatMap { - val nickname = ObjectMapperUtils.decode( + val payload = ObjectMapperUtils.decode( it.idToken.split(".")[1], JwtTokenInfo.Payload::class.java - ).nickname + ) Mono.just( ResultTokenInfo( idToken = it.idToken, + expiresIn = it.expiresIn, refreshToken = it.refreshToken, - nickname = nickname + refreshTokenExpiresIn = it.refreshTokenExpiresIn, + nickname = payload.nickname, + email = payload.email ) ) } diff --git a/api/src/main/kotlin/com/john/lotto/auth/application/dto/ResultTokenInfo.kt b/api/src/main/kotlin/com/john/lotto/auth/application/dto/ResultTokenInfo.kt index fba419c..a446fea 100644 --- a/api/src/main/kotlin/com/john/lotto/auth/application/dto/ResultTokenInfo.kt +++ b/api/src/main/kotlin/com/john/lotto/auth/application/dto/ResultTokenInfo.kt @@ -11,10 +11,19 @@ data class ResultTokenInfo( @field:Schema(description = "OpenID방식의 id_token", example = "header.payload.signature") @field:JsonProperty("id_token") val idToken: String, + @field:Schema(description = "id_token 만료시간", example = "0") + @field:JsonProperty("expires_in") + val expiresIn: Long? = 0L, @field:Schema(description = "리프레시 토큰", example = "0") @field:JsonProperty("refresh_token") val refreshToken: String? = "", + @field:Schema(description = "리프레시 토큰 만료시간", example = "0") + @field:JsonProperty("refresh_token_expires_in") + val refreshTokenExpiresIn: Long? = 0L, @field:Schema(description = "사용자 닉네임", example = "user") @field:JsonProperty("nickname") - val nickname: String? = "" + val nickname: String? = "", + @field:Schema(description = "사용자 이메일", example = "lotto@email.com") + @field:JsonProperty("email") + val email: String? = "" ) diff --git a/api/src/main/kotlin/com/john/lotto/common/dto/JwtTokenInfo.kt b/api/src/main/kotlin/com/john/lotto/common/dto/JwtTokenInfo.kt index 521b0ae..104c1b7 100644 --- a/api/src/main/kotlin/com/john/lotto/common/dto/JwtTokenInfo.kt +++ b/api/src/main/kotlin/com/john/lotto/common/dto/JwtTokenInfo.kt @@ -14,7 +14,8 @@ class JwtTokenInfo { val sub: String, val auth_time: Int, val iss: String, - val nickname: String, + val nickname: String? = "", + val email: String? = "", val exp: Int, val iat: Int, ): Serializable