11package inha .gdgoc .domain .auth .service ;
22
3- import inha .gdgoc .global .config .jwt .TokenProvider ;
4- import inha .gdgoc .domain .auth .dto .request .UserLoginRequest ;
53import inha .gdgoc .domain .auth .dto .response .LoginResponse ;
64import inha .gdgoc .domain .auth .enums .LoginType ;
75import inha .gdgoc .domain .user .entity .User ;
86import inha .gdgoc .domain .user .repository .UserRepository ;
7+ import inha .gdgoc .global .config .jwt .TokenProvider ;
98import jakarta .servlet .http .HttpServletResponse ;
10- import java .security .InvalidKeyException ;
11- import java .security .NoSuchAlgorithmException ;
129import lombok .RequiredArgsConstructor ;
1310import lombok .extern .slf4j .Slf4j ;
1411import org .springframework .beans .factory .annotation .Value ;
15- import org .springframework .http .HttpEntity ;
16- import org .springframework .http .HttpHeaders ;
17- import org .springframework .http .HttpMethod ;
18- import org .springframework .http .MediaType ;
19- import org .springframework .http .ResponseCookie ;
20- import org .springframework .http .ResponseEntity ;
12+ import org .springframework .http .*;
2113import org .springframework .security .core .Authentication ;
2214import org .springframework .stereotype .Service ;
2315import org .springframework .util .LinkedMultiValueMap ;
2416import org .springframework .util .MultiValueMap ;
2517import org .springframework .web .client .RestTemplate ;
2618
19+ import java .security .InvalidKeyException ;
20+ import java .security .NoSuchAlgorithmException ;
2721import java .time .Duration ;
2822import java .util .Map ;
2923import java .util .Optional ;
3630public class AuthService {
3731
3832 private final RefreshTokenService refreshTokenService ;
33+ private final UserRepository userRepository ;
34+ private final RestTemplate restTemplate = new RestTemplate ();
35+ private final TokenProvider tokenProvider ;
3936
4037 @ Value ("${google.client-id}" )
4138 private String clientId ;
@@ -46,10 +43,6 @@ public class AuthService {
4643 @ Value ("${google.redirect-uri}" )
4744 private String redirectUri ;
4845
49- private final UserRepository userRepository ;
50- private final RestTemplate restTemplate = new RestTemplate ();
51- private final TokenProvider tokenProvider ;
52-
5346 public Map <String , Object > processOAuthLogin (String code , HttpServletResponse response ) {
5447 // 1. code → access token 요청
5548 HttpHeaders headers = new HttpHeaders ();
@@ -63,11 +56,7 @@ public Map<String, Object> processOAuthLogin(String code, HttpServletResponse re
6356 params .add ("grant_type" , "authorization_code" );
6457
6558 HttpEntity <MultiValueMap <String , String >> tokenRequest = new HttpEntity <>(params , headers );
66- ResponseEntity <Map > tokenResponse = restTemplate .postForEntity (
67- "https://oauth2.googleapis.com/token" ,
68- tokenRequest ,
69- Map .class
70- );
59+ ResponseEntity <Map > tokenResponse = restTemplate .postForEntity ("https://oauth2.googleapis.com/token" , tokenRequest , Map .class );
7160
7261 String googleAccessToken = (String ) tokenResponse .getBody ().get ("access_token" );
7362
@@ -76,12 +65,7 @@ public Map<String, Object> processOAuthLogin(String code, HttpServletResponse re
7665 userInfoHeaders .setBearerAuth (googleAccessToken );
7766 HttpEntity <Void > userInfoRequest = new HttpEntity <>(userInfoHeaders );
7867
79- ResponseEntity <Map > userInfoResponse = restTemplate .exchange (
80- "https://www.googleapis.com/oauth2/v2/userinfo" ,
81- HttpMethod .GET ,
82- userInfoRequest ,
83- Map .class
84- );
68+ ResponseEntity <Map > userInfoResponse = restTemplate .exchange ("https://www.googleapis.com/oauth2/v2/userinfo" , HttpMethod .GET , userInfoRequest , Map .class );
8569
8670 // 3. Google에서 가져온 이름, 이메일로 가입된 정보가 없으면 회원가입, 있으면 로그인
8771 Map userInfo = userInfoResponse .getBody ();
@@ -90,66 +74,54 @@ public Map<String, Object> processOAuthLogin(String code, HttpServletResponse re
9074
9175 Optional <User > foundUser = userRepository .findByEmail (email );
9276 if (foundUser .isEmpty ()) {
93- return Map .of (
94- "isExists" , false ,
95- "email" , email ,
96- "name" , name
97- );
77+ return Map .of ("isExists" , false , "email" , email , "name" , name );
9878 }
9979
10080 User user = foundUser .get ();
10181
10282 String jwtAccessToken = tokenProvider .generateGoogleLoginToken (user , Duration .ofHours (1 ));
103- String refreshToken = refreshTokenService .getOrCreateRefreshToken (user , Duration .ofDays (1 ),
104- LoginType .GOOGLE_LOGIN );
83+ String refreshToken = refreshTokenService .getOrCreateRefreshToken (user , Duration .ofDays (1 ), LoginType .GOOGLE_LOGIN );
10584
10685 ResponseCookie refreshCookie = ResponseCookie .from ("refresh_token" , refreshToken )
107- .httpOnly (true )
108- .secure (true )
109- .sameSite ("None" )
110- .domain (".gdgocinha.com" )
111- .path ("/" )
112- .maxAge (Duration .ofDays (1 ))
113- .build ();
86+ .httpOnly (true )
87+ .secure (true )
88+ .sameSite ("None" )
89+ .domain (".gdgocinha.com" )
90+ .path ("/" )
91+ .maxAge (Duration .ofDays (1 ))
92+ .build ();
11493
11594 // Set-Cookie 헤더로 추가
116- log .info ("Response Cookie에 저장된 Refresh Token: {}" , refreshCookie . toString () );
95+ log .info ("Response Cookie에 저장된 Refresh Token: {}" , refreshCookie );
11796 response .addHeader (HttpHeaders .SET_COOKIE , refreshCookie .toString ());
11897
119- return Map .of (
120- "isExists" , true ,
121- "access_token" , jwtAccessToken
122- );
98+ return Map .of ("isExists" , true , "access_token" , jwtAccessToken );
12399 }
124100
125- public LoginResponse loginWithPassword (UserLoginRequest userLoginRequest ,
126- HttpServletResponse response )
127- throws NoSuchAlgorithmException , InvalidKeyException {
128- Optional <User > user = userRepository .findByEmail (userLoginRequest .email ());
101+ public LoginResponse loginWithPassword (String email , String password , HttpServletResponse response ) throws NoSuchAlgorithmException , InvalidKeyException {
102+ Optional <User > user = userRepository .findByEmail (email );
129103 if (user .isEmpty ()) {
130104 return new LoginResponse (false , null );
131105 }
132106
133107 User foundUser = user .get ();
134- String hashedInputPassword = encrypt (userLoginRequest . password () , foundUser .getSalt ());
108+ String hashedInputPassword = encrypt (password , foundUser .getSalt ());
135109 if (!foundUser .getPassword ().equals (hashedInputPassword )) {
136110 return new LoginResponse (false , null );
137111 }
138112
139113 String accessToken = tokenProvider .generateSelfSignupToken (foundUser , Duration .ofHours (1 ));
140- String refreshToken = refreshTokenService .getOrCreateRefreshToken (foundUser ,
141- Duration .ofDays (1 ),
142- LoginType .SELF_SIGNUP );
114+ String refreshToken = refreshTokenService .getOrCreateRefreshToken (foundUser , Duration .ofDays (1 ), LoginType .SELF_SIGNUP );
143115
144116 ResponseCookie refreshCookie = ResponseCookie .from ("refresh_token" , refreshToken )
145- .httpOnly (true )
146- .secure (true )
147- .sameSite ("None" )
148- .path ("/" )
149- .maxAge (Duration .ofDays (1 ))
150- .build ();
151-
152- log .info ("Response Cookie에 저장된 Refresh Token: {}" , refreshCookie . toString () );
117+ .httpOnly (true )
118+ .secure (true )
119+ .sameSite ("None" )
120+ .path ("/" )
121+ .maxAge (Duration .ofDays (1 ))
122+ .build ();
123+
124+ log .info ("Response Cookie에 저장된 Refresh Token: {}" , refreshCookie );
153125 response .addHeader (HttpHeaders .SET_COOKIE , refreshCookie .toString ());
154126
155127 return new LoginResponse (true , accessToken );
0 commit comments