이전에 PrincipalOauth2UserService파일에 BCryptPasswordEncoder를 @bean 등록하여 사용했더니 순환참조 오류가 발생했습니다.
BCryptPasswordEncoder를 Application.java파일에 @Bean 등록해서 PrincipalOauth2UserService파일에 BCryptPasswordEncoder를@Autowired 하여 사용하면 문제는 해결됩니다.
oauth로그인을 한 사용자의 회원가입을 위해 로그인한 사용자의 정보를 가져오도록 코드를 작성했습니다.
그리고 oauth로그인을 한 사용자가 회원DB에 있는 회원인지 email정보를 가져와 확인합니다.
oauth로그인한 사용자가 기존 회원 DB에 없다면 회원가입을 시키기위해
회원정보를 받아와야합니다.
@Builder를 사용해서 생성자를 작성합니다.
id값은 DB에 들어가면서 AutoIncrement 되기 때문에 제외시켜 값을 세팅하겠습니다.
존재하지 않는 회원이 oauth로그인을 시도한 경우 User 클래스 생성자를 통해 값을 세팅하고
userRepository.save(userEntity) 로 세팅한 값을 DB에 저장합니다.
로그인이 완료되면 new PrincipalDerails(userEntity,oAuth2User.getAttributes())
를 리턴하게되어 authentication 에 들어가게됩니다.
이제 일반로그인과 oauth로그인을 했을 때 정보를 잘 저장하고 가져오는지 확인해보겠습니다.
일반 로그인을 했을 때 DB에 저장된 값을 정상적으로 가져오는 것을 확인했습니다.
이제 oauth로그인을 해서 값을 정상적으로 저장하고 가져오는지 인해보겠습니다.
로그인이 완료되면서 정상적으로 페이지를 불러왔고
DB에 회원정보가 정상적으로 저장되었습니다.