22
33import com .github .classpick .global .property .OauthProperty ;
44import com .github .classpick .global .security .jwt .TokenProvider ;
5+ import com .github .classpick .user .repository .GroupEntity ;
6+ import com .github .classpick .user .repository .GroupRepository ;
57import com .github .classpick .user .repository .Role ;
68import com .github .classpick .user .repository .UserEntity ;
79import com .github .classpick .user .repository .UserRepository ;
1315import org .springframework .stereotype .Component ;
1416
1517import java .io .IOException ;
18+ import java .util .Optional ;
1619
1720@ Component
1821@ RequiredArgsConstructor
@@ -21,6 +24,7 @@ public class OAuth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationS
2124 private static final String KOOKMIN_EMAIL_REGEX = ".*@kookmin\\ .ac\\ .kr$" ;
2225 private final OauthProperty oauthProperty ;
2326 private final UserRepository userRepository ;
27+ private final GroupRepository groupRepository ;
2428 private final TokenProvider tokenProvider ;
2529
2630 @ Override
@@ -44,10 +48,27 @@ public void onAuthenticationSuccess(
4448 }
4549
4650 UserEntity user = userRepository .findByEmail (email )
47- .orElseGet (() -> userRepository .save (UserEntity .builder ()
48- .role (Role .USER )
49- .email (oauth2User .getEmail ())
50- .build ()));
51+ .orElseGet (
52+ () -> {
53+
54+ String emailDomain = email .split ("@" )[1 ];
55+ Optional <GroupEntity > savedGroupOptional = groupRepository .findByDomain (emailDomain );
56+ GroupEntity group ;
57+ if (savedGroupOptional .isEmpty ()){
58+ GroupEntity newGroupEntity = GroupEntity .ofDB (emailDomain );
59+ newGroupEntity = groupRepository .save (newGroupEntity );
60+ group = newGroupEntity ;
61+ } else {
62+ group = savedGroupOptional .get ();
63+ }
64+
65+ return userRepository .save (UserEntity .builder ()
66+ .role (Role .USER )
67+ .email (email )
68+ .group (group )
69+ .build ());
70+ }
71+ );
5172
5273 String accessToken = tokenProvider .generateToken (user );
5374
0 commit comments