Skip to content

Commit bc0a6ea

Browse files
committed
feat kookmin-sw#2 - naver login
OAuth2Response에 맞춰 NaverResponse 구현
1 parent ff8c17b commit bc0a6ea

File tree

9 files changed

+21
-67
lines changed

9 files changed

+21
-67
lines changed

src/main/java/org/capstone/maru/config/JpaConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import org.springframework.data.domain.AuditorAware;
77
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
88

9+
/**
10+
* login 구현시 tester -> name 변경
11+
*/
912
@EnableJpaAuditing
1013
@Configuration
1114
public class JpaConfig {

src/main/java/org/capstone/maru/config/SecurityConfig.java

Lines changed: 2 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,14 @@
22

33

44
import lombok.extern.slf4j.Slf4j;
5-
import org.capstone.maru.security.CustomOAuth2UserService;
6-
import org.capstone.maru.security.KakaoOAuth2Response;
7-
import org.capstone.maru.security.SharedPostPrincipal;
8-
import org.capstone.maru.service.MemberAccountService;
5+
import org.capstone.maru.security.service.CustomOAuth2UserService;
96
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
107
import org.springframework.boot.autoconfigure.security.servlet.PathRequest;
118
import org.springframework.context.annotation.Bean;
129
import org.springframework.context.annotation.Configuration;
1310
import org.springframework.http.HttpMethod;
1411
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
1512
import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;
16-
import org.springframework.security.crypto.factory.PasswordEncoderFactories;
17-
import org.springframework.security.crypto.password.PasswordEncoder;
18-
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;
19-
import org.springframework.security.oauth2.client.userinfo.OAuth2UserRequest;
20-
import org.springframework.security.oauth2.client.userinfo.OAuth2UserService;
21-
import org.springframework.security.oauth2.core.user.OAuth2User;
2213
import org.springframework.security.web.SecurityFilterChain;
2314

2415
@Slf4j
@@ -29,7 +20,7 @@ public class SecurityConfig {
2920
@ConditionalOnProperty(name = "spring.h2.console.enabled", havingValue = "true")
3021
public WebSecurityCustomizer configureH2ConsoleEnable() {
3122
return web -> web.ignoring()
32-
.requestMatchers(PathRequest.toH2Console());
23+
.requestMatchers(PathRequest.toH2Console());
3324
}
3425

3526
@Bean
@@ -58,43 +49,4 @@ public SecurityFilterChain securityFilterChain(
5849
)
5950
.build();
6051
}
61-
62-
@Bean
63-
public OAuth2UserService<OAuth2UserRequest, OAuth2User> oAuth2UserService(
64-
MemberAccountService memberAccountService,
65-
PasswordEncoder passwordEncoder
66-
) {
67-
final DefaultOAuth2UserService delegate = new DefaultOAuth2UserService();
68-
69-
return userRequest -> {
70-
OAuth2User oAuth2User = delegate.loadUser(userRequest);
71-
72-
KakaoOAuth2Response kakaoOAuthResponse = KakaoOAuth2Response.from(
73-
oAuth2User.getAttributes());
74-
75-
String registrationId = userRequest.getClientRegistration()
76-
.getRegistrationId(); // "kakao"
77-
78-
String providerId = String.valueOf(kakaoOAuthResponse.id());
79-
String memberId = registrationId + "_" + providerId;
80-
81-
return memberAccountService
82-
.searchMember(memberId)
83-
.map(SharedPostPrincipal::from)
84-
.orElseGet(() ->
85-
SharedPostPrincipal.from(
86-
memberAccountService.saveUser(
87-
memberId,
88-
kakaoOAuthResponse.email(),
89-
kakaoOAuthResponse.nickname()
90-
)
91-
)
92-
);
93-
};
94-
}
95-
96-
@Bean
97-
public PasswordEncoder passwordEncoder() {
98-
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
99-
}
10052
}

src/main/java/org/capstone/maru/controller/MainController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.capstone.maru.controller;
22

3-
import org.capstone.maru.security.SharedPostPrincipal;
3+
import org.capstone.maru.security.principal.SharedPostPrincipal;
44
import org.springframework.security.core.annotation.AuthenticationPrincipal;
55
import org.springframework.web.bind.annotation.GetMapping;
66
import org.springframework.web.bind.annotation.RestController;
@@ -10,7 +10,7 @@ public class MainController {
1010

1111
@GetMapping("/")
1212
public String root() {
13-
return "home";
13+
return "health check";
1414
}
1515

1616
@GetMapping("/test")

src/main/java/org/capstone/maru/security/constant/SocialType.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,11 @@ public enum SocialType {
1212
private final String key;
1313

1414
public static SocialType of(String registrationId) {
15-
switch (registrationId) {
16-
case "kakao":
17-
return SocialType.KAKAO;
18-
case "naver":
19-
return SocialType.NAVER;
20-
default:
21-
throw new IllegalArgumentException(
22-
"Unsupported social registrationId: " + registrationId);
23-
}
15+
return switch (registrationId) {
16+
case "kakao" -> SocialType.KAKAO;
17+
case "naver" -> SocialType.NAVER;
18+
default -> throw new IllegalArgumentException(
19+
"Unsupported social registrationId: " + registrationId);
20+
};
2421
}
2522
}

src/main/java/org/capstone/maru/security/principal/SharedPostPrincipal.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.capstone.maru.security;
1+
package org.capstone.maru.security.principal;
22

33
import java.util.Collection;
44
import java.util.Map;

src/main/java/org/capstone/maru/security/response/KakaoOAuth2Response.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.capstone.maru.security;
1+
package org.capstone.maru.security.response;
22

33
import java.time.LocalDateTime;
44
import java.time.ZoneId;

src/main/java/org/capstone/maru/security/response/NaverOAuth2Response.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.capstone.maru.security;
1+
package org.capstone.maru.security.response;
22

33
import java.util.Map;
44
import lombok.Getter;

src/main/java/org/capstone/maru/security/response/OAuth2Response.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.capstone.maru.security;
1+
package org.capstone.maru.security.response;
22

33
import java.util.Map;
44
import lombok.Getter;
@@ -11,7 +11,7 @@ public abstract class OAuth2Response {
1111
/**
1212
* SocialType에 맞는 메소드 호출하여 OAuthAttributes 객체 반환 파라미터 : userNameAttributeName -> OAuth2 로그인 시
1313
* 키(PK)가 되는 값 / attributes : OAuth 서비스의 유저 정보들 소셜별 of 메소드(ofGoogle, ofKaKao, ofNaver)들은 각각 소셜
14-
* 로그인 API에서 제공하는 회원의 식별값(id), attributes, nameAttributeKey를 저장 후 build
14+
* 로그인 API에서 제공하는 회원의 식별값(id), attributes, nameAttributeKey를 저장 후 build 필드가 들어갈 수 있을거 같은데
1515
*/
1616
public static OAuth2Response of(
1717
SocialType socialType,

src/main/java/org/capstone/maru/security/service/CustomOAuth2UserService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package org.capstone.maru.security;
1+
package org.capstone.maru.security.service;
22

33
import lombok.RequiredArgsConstructor;
4+
import org.capstone.maru.security.response.OAuth2Response;
5+
import org.capstone.maru.security.principal.SharedPostPrincipal;
46
import org.capstone.maru.security.constant.SocialType;
57
import org.capstone.maru.service.MemberAccountService;
68
import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService;

0 commit comments

Comments
 (0)