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 + } }