- 23.12.28) TIL2023년 12월 28일 20시 47분 36초에 업로드 된 글입니다.작성자: oneseel
비밀번호 변경 API 구현
먼저, 로그인한 유저와 비밀번호를 변경할 유저의 유저네임이 같은지를 확인한다.
if (!loginUser.getUsername().equals(user.getUsername())) { throw new AuthenticationMismatchException(); }
새로운 비밀번호와 새로운 비밀번호 확인이 일치하는지 확인한다.
if (!updatePassword.equals(checkUpdatePassword)) { throw new PasswordConfirmationException(); }
기존의 비밀번호를 한번 더 입력해서 비밀번호가 맞는지 확인한다.
새로운 비밀번호를 encode해주고 set을 이용해 바꿔준다.
repository에 비밀번호가 바뀐 user를 저장해준다.
if (!passwordEncoder.matches(password, user.getPassword())) { throw new PasswordMismatchException(); } else { updatePassword = passwordEncoder.encode(updatePassword); user.setPassword(updatePassword); } userRepository.save(user);
전체코드
- UserController
@PatchMapping("/profile/{userId}/password") public ResponseEntity<?> updatePassword( @PathVariable Long userId, @Valid @RequestBody UserPasswordUpdateRequestDto requestDto, @AuthenticationPrincipal UserDetailsImpl userDetails) { User loginUser = userDetails.getUser(); try { userService.updatePassword(userId, requestDto, loginUser); return ResponseEntity.ok() .body(new CommonResponseDto("비밀번호 수정 성공", HttpStatus.OK.value())); } catch (BusinessException be) { return ResponseEntity.status(be.getStatus()) .body(new CommonResponseDto(be.getMessage(), be.getStatus())); } }
- UserService
@Transactional public void updatePassword( Long userId, UserPasswordUpdateRequestDto requestDto, User loginUser) { String password = requestDto.getPassword(); String updatePassword = requestDto.getUpdatePassword(); String checkUpdatePassword = requestDto.getCheckUpdatePassword(); User user = getUser(userId); if (!loginUser.getUsername().equals(user.getUsername())) { throw new AuthenticationMismatchException(); } if (!updatePassword.equals(checkUpdatePassword)) { throw new PasswordConfirmationException(); } if (!passwordEncoder.matches(password, user.getPassword())) { throw new PasswordMismatchException(); } else { updatePassword = passwordEncoder.encode(updatePassword); user.setPassword(updatePassword); } userRepository.save(user); }
포스트맨 확인
1) 비밀번호 변경 성공
2) 비밀번호 변경 실패 - 기존 비밀번호와 다른 비밀번호 입력
3) 비밀번호 변경 실패 - 새로운 비밀번호와 비밀번호 확인 불일치
'TIL' 카테고리의 다른 글
24.01.08) TIL (1) 2024.01.08 24.01.05) TIL (0) 2024.01.05 23.12.27) TIL (0) 2023.12.27 23.12.26) TIL (0) 2023.12.26 23.12.13) TIL (0) 2023.12.14 댓글