유저의 프로필을 변경한 후, 로그인을 풀고 다시 소셜 로그인을 하게 되면 소셜 로그인의 프로필 사진과 이름이 적용되어버리는 버그
🌌 발생 Controller
PATCH: api/users 및 GET: api/users/me
🧾 상황 재현
로그인을 한 상태에서 프로필을 변경한다.
로그아웃을 한 뒤 다시 로그인을 한다.
프로필을 확인한다.
💻 결과
🔥 Issue
유저의 프로필을 변경한 후, 로그인을 풀고 다시 소셜 로그인을 하게 되면 소셜 로그인의 프로필 사진과 이름이 적용되어버리는 버그
수정 전의 로직에서는 로그인 요청이 발생할 때마다 social media에서 사용자 정보를 조회하여 사용자 정보를 갱신하는 방식을 수행하였습니다.
해당 방식을 적용하면 사용자가 자신의 정보를 수정해도 새롭게 로그인할때마다 수정한 정보가 다시 기본 정보로 변경되는 문제가 발생하는 것을 확인하였습니다.
따라서 로그인 이후 사용자 정보를 갱신하는 로직을 제거하였습니다.
💻 수정 전
private User saveOrUpdateUser(SocialUserInfo socialUserInfo) {
// save or create user
User user = userRepository.findBySocialId(socialUserInfo.getSocialId())
.orElse(User.builder()
.socialId(socialUserInfo.getSocialId())
.nickname(socialUserInfo.getNickname())
.password(passwordEncoder.encode(socialUserInfo.getNickname()))
.role(UNREGISTERED)
.build());
// update user info
user.updateBySocialInfo(socialUserInfo.getNickname(), socialUserInfo.getImageUrl(), passwordEncoder.encode(socialUserInfo.getNickname()));
return userRepository.save(user);
}
💻 수정 후
private User saveOrUpdateUser(SocialUserInfo socialUserInfo) {
// save or create user
User user = userRepository.findBySocialId(socialUserInfo.getSocialId())
.orElse(User.builder()
.socialId(socialUserInfo.getSocialId())
.nickname(socialUserInfo.getNickname())
.password(passwordEncoder.encode(socialUserInfo.getNickname()))
.role(UNREGISTERED)
.build());
return userRepository.save(user);
}
✏️ 설명
유저의 프로필을 변경한 후, 로그인을 풀고 다시 소셜 로그인을 하게 되면 소셜 로그인의 프로필 사진과 이름이 적용되어버리는 버그
🌌 발생 Controller
PATCH: api/users
및GET: api/users/me
🧾 상황 재현
💻 결과
🔥 Issue
수정 전의 로직에서는 로그인 요청이 발생할 때마다 social media에서 사용자 정보를 조회하여 사용자 정보를 갱신하는 방식을 수행하였습니다.
해당 방식을 적용하면 사용자가 자신의 정보를 수정해도 새롭게 로그인할때마다 수정한 정보가 다시 기본 정보로 변경되는 문제가 발생하는 것을 확인하였습니다.
따라서 로그인 이후 사용자 정보를 갱신하는 로직을 제거하였습니다.
💻 수정 전
💻 수정 후