From 5891775b15a29f14b70dd50de0929c1dc23f3c9b Mon Sep 17 00:00:00 2001 From: banjjoknim Date: Tue, 8 Mar 2022 12:52:58 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20Naver=20=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=20=ED=83=80=EC=9E=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../banjjoknim/playground/domain/auth/OAuth2Type.kt | 3 +- .../playground/domain/auth/OAuth2UserInfos.kt | 30 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/놀이터(예제 코드 작성)/spring-security/src/main/kotlin/com/banjjoknim/playground/domain/auth/OAuth2Type.kt b/놀이터(예제 코드 작성)/spring-security/src/main/kotlin/com/banjjoknim/playground/domain/auth/OAuth2Type.kt index c19f85c..f3017a1 100644 --- a/놀이터(예제 코드 작성)/spring-security/src/main/kotlin/com/banjjoknim/playground/domain/auth/OAuth2Type.kt +++ b/놀이터(예제 코드 작성)/spring-security/src/main/kotlin/com/banjjoknim/playground/domain/auth/OAuth2Type.kt @@ -5,7 +5,8 @@ enum class OAuth2Type( private val createUserInfo: (attributes: Map) -> OAuth2UserInfo ) { GOOGLE("google", { attributes -> GoogleUserInfo(attributes) }), - FACEBOOK("facebook", { attributes -> FacebookUserInfo(attributes) }); + FACEBOOK("facebook", { attributes -> FacebookUserInfo(attributes) }), + NAVER("naver", { attributes -> NaverUserInfo(attributes) }); fun createOAuth2UserInfo(attributes: Map): OAuth2UserInfo { return createUserInfo(attributes) diff --git a/놀이터(예제 코드 작성)/spring-security/src/main/kotlin/com/banjjoknim/playground/domain/auth/OAuth2UserInfos.kt b/놀이터(예제 코드 작성)/spring-security/src/main/kotlin/com/banjjoknim/playground/domain/auth/OAuth2UserInfos.kt index c145b7f..5455bd3 100644 --- a/놀이터(예제 코드 작성)/spring-security/src/main/kotlin/com/banjjoknim/playground/domain/auth/OAuth2UserInfos.kt +++ b/놀이터(예제 코드 작성)/spring-security/src/main/kotlin/com/banjjoknim/playground/domain/auth/OAuth2UserInfos.kt @@ -53,5 +53,33 @@ class FacebookUserInfo( override fun getName(): String { return attributes["name"] as String } - +} + +class NaverUserInfo( + /** + * DefaultOAuth2Service#loadUser(OAuth2UserRequest) + * ```kotlin + * val oAuth2User = super.loadUser(userRequest) + * val attributes = oAuth2User.attributes + * ``` + */ + private val attributes: Map +): OAuth2UserInfo { + private val response = attributes["response"] as Map<*, *> + + override fun getProviderId(): String { + return response["id"] as String + } + + override fun getProvider(): String { + return "naver" + } + + override fun getEmail(): String { + return response["email"] as String + } + + override fun getName(): String { + return response["name"] as String + } }