오래 못 할 짓 하지 않기
[ Spring boot Security ] 5. 유저 정보 DB에 넣기 본문
728x90
우리는 들어오는 정보를 받아서 그 안에 담겨있는 유저를
String username = oAuth2Response.getProvider()+" "+oAuth2Response.getProviderId();
이런 형태로 받는다.
따라서 받을 때 저 username으로 저장되며, 그 username이 DB에 존재하는지 여부에 따라서
새로 들어오는 사람인지, 원래 있던 사람인지 판단한다.
그러기 위해서는 DB에 들어갈 유저 Entity와 Service단과 DB를 이어줄 UserRepository가 필요하다
이후 Service 단에서 해줄 것은 하나다.
DB에서
String username = oAuth2Response.getProvider()+" "+oAuth2Response.getProviderId();
이 정보를 가져오고, 그게 Null ( 로그인 한 적이 없다면 ) 새로 추가
그게 존재한다면, 변경사항 ( 유저가 네이버나 구글에서 이름이나 이메일주소를 변경했을 경우 ) 을 업데이트 해준다.
그리고 그 정보가 담긴 DTO를 유저 로그인 하는 곳에 넘겨준다.
코드 ▼
더보기
String username = oAuth2Response.getProvider()+" "+oAuth2Response.getProviderId();
//이미 등록된 유저인지
UserEntity existData = userRepository.findByUsername(username);
if(existData == null){ //등록 X
UserEntity userEntity = new UserEntity();
userEntity.setUsername(username);
userEntity.setEmail(oAuth2Response.getEmail());
userEntity.setName(oAuth2Response.getName());
userEntity.setRole("ROLE_USER");
userRepository.save(userEntity);
//이젠 DTO에 담아 로그인 진행 ( 위에서는 로그인 정보 DB에 저장 )
UserDTO userDTO = new UserDTO();
userDTO.setUsername(username);
userDTO.setName(oAuth2Response.getName());
userDTO.setRole("ROLE_USER");
return new CustomOAuth2User(userDTO);
}else{ // 등록되어있음 -> Response로 넘어온 정보들로 다시 업데이트 시킴
existData.setEmail(oAuth2Response.getEmail());
existData.setName(oAuth2Response.getName());
userRepository.save(existData);
UserDTO userDTO = new UserDTO();
userDTO.setUsername(oAuth2Response.getEmail());
userDTO.setName(oAuth2Response.getName());
userDTO.setRole(existData.getRole());
return new CustomOAuth2User(userDTO);
}
'혼자하기 > 연습 1) OAuth' 카테고리의 다른 글
[ Spring boot Security ] 7. 로그인 성공 JWT 발급 (0) | 2024.03.03 |
---|---|
[ Spring boot Security ] 6. JWT 발급 / 검증 (0) | 2024.03.02 |
[ Spring boot Security ] 4. Oauth2UserService 만들기 (0) | 2024.03.02 |
[ Spring boot Security ] 2.2 - 구글 로그인 요청 설정 (0) | 2024.03.01 |
[ Spring boot Security ] 2.1 - 네이버 로그인 요청 설정 (0) | 2024.03.01 |