diff --git a/src/main/kotlin/com/petqua/domain/oauth/JwtProvider.kt b/src/main/kotlin/com/petqua/domain/oauth/JwtProvider.kt deleted file mode 100644 index 0c70e93a..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/JwtProvider.kt +++ /dev/null @@ -1,34 +0,0 @@ -package com.petqua.domain.oauth - -import io.jsonwebtoken.Header.JWT_TYPE -import io.jsonwebtoken.Header.TYPE -import io.jsonwebtoken.Jwts -import io.jsonwebtoken.SignatureAlgorithm -import io.jsonwebtoken.security.Keys -import org.springframework.beans.factory.annotation.Value -import org.springframework.stereotype.Component -import java.nio.charset.StandardCharsets -import java.util.* -import javax.crypto.SecretKey - - -@Component -class JwtProvider( - @Value("\${token.secretKey}") - private val secretKeyText: String -) { - - private val secretKey: SecretKey = Keys.hmacShaKeyFor(secretKeyText.toByteArray(StandardCharsets.UTF_8)) - - fun createToken(subject: String, tokenLiveTime: Long): String { - val now = Date() - val expirationTime = Date(now.time + tokenLiveTime) - return Jwts.builder() - .setHeaderParam(TYPE, JWT_TYPE) - .setSubject(subject) - .setIssuedAt(now) - .setExpiration(expirationTime) - .signWith(secretKey, SignatureAlgorithm.HS256) - .compact() - } -} diff --git a/src/main/kotlin/com/petqua/domain/oauth/OauthApiClientConfig.kt b/src/main/kotlin/com/petqua/domain/oauth/OauthApiClientConfig.kt deleted file mode 100644 index 175b0cad..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/OauthApiClientConfig.kt +++ /dev/null @@ -1,21 +0,0 @@ -package com.petqua.domain.oauth - -import com.petqua.domain.oauth.kakao.KakaoOauthApiClient -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.Configuration -import org.springframework.web.reactive.function.client.WebClient -import org.springframework.web.reactive.function.client.support.WebClientAdapter -import org.springframework.web.service.invoker.HttpServiceProxyFactory - -@Configuration -class OauthApiClientConfig { - - @Bean - fun KakaoOauthApiClient(): KakaoOauthApiClient { - return HttpServiceProxyFactory.builderFor( - WebClientAdapter.create(WebClient.create()) - ) - .build() - .createClient(KakaoOauthApiClient::class.java) - } -} diff --git a/src/main/kotlin/com/petqua/domain/oauth/OauthClient.kt b/src/main/kotlin/com/petqua/domain/oauth/OauthClient.kt deleted file mode 100644 index da0eaab1..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/OauthClient.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.petqua.domain.oauth - -interface OauthClient { - - fun oauthServerType() : OauthServerType - - fun requestOauthUserInfo( - code: String - ) : OauthUserInfo -} diff --git a/src/main/kotlin/com/petqua/domain/oauth/OauthServerType.kt b/src/main/kotlin/com/petqua/domain/oauth/OauthServerType.kt deleted file mode 100644 index 73cc37a2..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/OauthServerType.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.petqua.domain.oauth - -import java.util.Locale.ENGLISH - -enum class OauthServerType { - KAKAO; - - companion object { - fun from(name: String): OauthServerType { - return OauthServerType.valueOf(name.uppercase(ENGLISH)) - } - } -} diff --git a/src/main/kotlin/com/petqua/domain/oauth/OauthTokenInfo.kt b/src/main/kotlin/com/petqua/domain/oauth/OauthTokenInfo.kt deleted file mode 100644 index 11066939..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/OauthTokenInfo.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.petqua.domain.oauth - -import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy -import com.fasterxml.jackson.databind.annotation.JsonNaming - -@JsonNaming(SnakeCaseStrategy::class) -data class OauthTokenInfo ( - val accessToken: String -) diff --git a/src/main/kotlin/com/petqua/domain/oauth/OauthUserInfo.kt b/src/main/kotlin/com/petqua/domain/oauth/OauthUserInfo.kt deleted file mode 100644 index 5fd15e92..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/OauthUserInfo.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.petqua.domain.oauth - -interface OauthUserInfo { - - fun nickname() :String - - fun imageUrl() :String - - fun oauthId(): String -} diff --git a/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoOauthApiClient.kt b/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoOauthApiClient.kt deleted file mode 100644 index 02735cbd..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoOauthApiClient.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.petqua.domain.oauth.kakao - -import com.petqua.domain.oauth.OauthTokenInfo -import org.springframework.http.HttpHeaders.AUTHORIZATION -import org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED_VALUE -import org.springframework.util.MultiValueMap -import org.springframework.web.bind.annotation.RequestHeader -import org.springframework.web.bind.annotation.RequestParam -import org.springframework.web.service.annotation.GetExchange -import org.springframework.web.service.annotation.PostExchange - -interface KakaoOauthApiClient { - - @PostExchange(url = "https://kauth.kakao.com/oauth/token", contentType = APPLICATION_FORM_URLENCODED_VALUE) - fun fetchToken(@RequestParam body: MultiValueMap): OauthTokenInfo - - @GetExchange(url = "https://kapi.kakao.com/v2/user/me") - fun fetchUserInfo(@RequestHeader(name = AUTHORIZATION) bearerToken: String): KakaoUserInfo -} diff --git a/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoOauthClient.kt b/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoOauthClient.kt deleted file mode 100644 index e829e9cd..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoOauthClient.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.petqua.domain.oauth.kakao - -import com.petqua.domain.oauth.OauthClient -import com.petqua.domain.oauth.OauthServerType -import com.petqua.domain.oauth.OauthServerType.KAKAO -import com.petqua.domain.oauth.OauthTokenInfo -import com.petqua.domain.oauth.OauthUserInfo -import org.springframework.stereotype.Component -import org.springframework.util.LinkedMultiValueMap -import org.springframework.util.MultiValueMap - -@Component -class KakaoOauthClient( - private val kakaoOauthConfig: KakaoOauthConfig, - private val kakaoOauthApiClient: KakaoOauthApiClient, -) : OauthClient { - - override fun oauthServerType(): OauthServerType { - return KAKAO - } - - override fun requestOauthUserInfo(code: String): OauthUserInfo { - val oauthTokenInfo = requestToken(code) - return kakaoOauthApiClient.fetchUserInfo("Bearer " + oauthTokenInfo.accessToken) - } - - private fun requestToken(code: String): OauthTokenInfo { - val body: MultiValueMap = LinkedMultiValueMap() - body.add("grant_type", "authorization_code") - body.add("client_id", kakaoOauthConfig.clientId) - body.add("redirect_uri", kakaoOauthConfig.redirectUri) - body.add("code", code) - body.add("client_secret", kakaoOauthConfig.clientSecret) - - return kakaoOauthApiClient.fetchToken(body) - } -} diff --git a/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoOauthConfig.kt b/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoOauthConfig.kt deleted file mode 100644 index 7a84cd74..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoOauthConfig.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.petqua.domain.oauth.kakao - -import org.springframework.boot.context.properties.ConfigurationProperties - -@ConfigurationProperties(prefix = "oauth.client.kakao") -data class KakaoOauthConfig( - val clientId: String, - val clientSecret: String, - val redirectUri: String, - val tokenUri: String, - val userInfoUri: String, -) diff --git a/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoUserInfo.kt b/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoUserInfo.kt deleted file mode 100644 index 8bc6604f..00000000 --- a/src/main/kotlin/com/petqua/domain/oauth/kakao/KakaoUserInfo.kt +++ /dev/null @@ -1,38 +0,0 @@ -package com.petqua.domain.oauth.kakao - -import com.fasterxml.jackson.annotation.JsonProperty -import com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy -import com.fasterxml.jackson.databind.annotation.JsonNaming -import com.petqua.domain.oauth.OauthUserInfo - -@JsonNaming(SnakeCaseStrategy::class) -class KakaoUserInfo( - private val kakaoAccount: KakaoAccount, - - @JsonProperty("id") - private val oauthId: String, -) : OauthUserInfo { - - override fun nickname(): String { - return kakaoAccount.profile.nickname - } - - override fun imageUrl(): String { - return kakaoAccount.profile.imageUrl - } - - override fun oauthId(): String { - return oauthId - } -} - -data class KakaoAccount( - val profile: Profile -) - -data class Profile( - val nickname: String, - - @JsonProperty("profile_image_url") - val imageUrl: String -)