// 로그인 완료했을 때 작업
String username = oAuth2Response.getProvider() + " " + oAuth2Response.getProviderId();
UserDto userDto = new UserDto();
userDto.setName(oAuth2User.getName());
userDto.setUsername(username);
userDto.setRole("ROLE_USER");
return new CustomOAuth2User(userDto);
를 변경해서 유저 정보 저장할 로직 작성할 것임
private final UserRepository userRepository;
public CustomOAuth2UserService(UserRepository userRepository){
this.userRepository = userRepository;
}
// 로그인 완료했을 때 작업
String username = oAuth2Response.getProvider() + " " + oAuth2Response.getProviderId();
UserEntity existData = userRepository.findByUsername(username);
// 한번도 로그인 한 적이 없는 경우 -> 데이터를 만들어서 넣어줘야함
if(existData == null){
System.out.println("저장해야해");
UserEntity userEntity = new UserEntity();
userEntity.setRole("ROLE_USER");
userEntity.setUsername(username);
userEntity.setName(oAuth2Response.getName());
userEntity.setEmail(oAuth2Response.getEmail());
userRepository.save(userEntity);
UserDto userDto = new UserDto();
userDto.setName(oAuth2User.getName());
userDto.setUsername(username);
userDto.setRole("ROLE_USER");
return new CustomOAuth2User(userDto);
}
else {
// 소셜에서의 회원정보가 변경되었을 수 있기 때문에 로그인할 때 업데이트 해주기
existData.setEmail(oAuth2Response.getEmail());
existData.setName(oAuth2User.getName());
UserDto userDto = new UserDto();
userDto.setName(oAuth2Response.getName());
userDto.setUsername(username);
userDto.setRole("ROLE_USER");
return new CustomOAuth2User(userDto);
}