1
| UserService - changePassword |
새비밀번호 vs 기존비밀번호 확인 전에 잘못된 비밀번호인지 확인하는 로직이 나와야 할 것 같다
if 문 순서 변경 -> 처음 비밀번호가 틀렸다면 new pw 와 old pw 가 동일한지 확인하는 로직을 하는건 낭비이므로 순서를 수정했다
@Transactional
public void changePassword(long userId, UserChangePasswordRequest userChangePasswordRequest) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new InvalidRequestException("User not found"));
# 기존 비밀번호와 입력된 비밀번호가 동일한지 먼저 확인
if (!passwordEncoder.matches(userChangePasswordRequest.getOldPassword(), user.getPassword())) {
throw new InvalidRequestException("잘못된 비밀번호입니다.");
}
# 위 if 문에서 걸리지 않았다면
# 기존 비밀번호와 새 비밀번호가 동일한지 확인
if (passwordEncoder.matches(userChangePasswordRequest.getNewPassword(), user.getPassword())) {
throw new InvalidRequestException("새 비밀번호는 기존 비밀번호와 같을 수 없습니다.");
}
user.changePassword(passwordEncoder.encode(userChangePasswordRequest.getNewPassword()));
}
2
| CommentAdminService - deleteComment |
delete 할 id 가 실제로 존재하는지 아닌지 확인하는 로직이 존재하지 않음
-> 댓글이 없어도 무조건 삭제완료 200이 뜸
@Transactional
public void deleteComment(long commentId) {
# 받아온 commentId 를 통해 실제로 존재하는 comment 를 삭제하려고 하는건지 확인
Comment comment = commentRepository.findById(commentId).orElseThrow(
()-> new InvalidRequestException("Comment not found")
);
commentRepository.delete(comment);
}
사실 이 부분은 log 를 찍을 때 사용하던 부분이라 처음에는 comment 가 존재하지 않아도 오류가 발생하지 않고 로그가 찍히는지 확인할 수 있어서 좋았다 ㅎㅎ...
그래도 해당 실습 이후에는 이미 삭제되거나 없는 comment 로 404 오류를 띄워주는 게 맞는 것 같아서 해당 부분 로직을 추가했다
3
| userAdminService - changeUserRole |
이전 Role 이랑 현재 Role 이랑 다른지 체크하는 로직이 없음
-> 똑같은 역할로 변경되어도 modifiedAt 이 업데이트 되므로 불필요한 로직이 추가되게됨
public void changeUserRole(long userId, UserRoleChangeRequest userRoleChangeRequest) {
User user = userRepository.findById(userId).orElseThrow(
() -> new InvalidRequestException("User not found"));
UserRole userRole = UserRole.of(userRoleChangeRequest.getRole());
# userRole 로 변경하기 전에 기존 역할과 동일한지 확인하는 로직 추가
if (user.getUserRole() == userRole){
throw new InvalidRequestException("동일한 역할로 변경할 수 없습니다.");
}
# 동일하지 않다면 업데이트하기
user.updateRole(UserRole.of(userRoleChangeRequest.getRole()));
}
'SPARTA 과제 > SPRING' 카테고리의 다른 글
| Plus spring 필수 과제 (0) | 2026.04.03 |
|---|---|
| 심화) LV 7 Test code (1) | 2026.03.07 |
| 심화) LV 5 API 로깅 (0) | 2026.03.04 |
| 심화) LV 0~ LV 4 필수 문제풀이 과정 (0) | 2026.03.04 |
| 숙련) 일정관리앱 트러블슈팅 (4) (0) | 2026.02.13 |