개발 기록/도서관 관리 시스템

[Library Management System] 25.08.05 (20일)

dev.jelee 2025. 8. 5. 13:09

[ 작업한 내용 ]

1. 비밀번호 수정 기능 추가

1) UpdatePasswordDTO 생성

- password, repassword 필드 작성.

- password: 새로운 비밀번호.

- repassword: 새로운 비밀번호 다시 입력.


2) UserController

- /password api 설계.

- 파라미터에는 사용자로부터 입력받는 값은 password와 repassword이며, 이 데이터는 UpdatePasswordDTO로 묶은다. 그리고 @AuthenticationPrincipal 어노테이션 사용하여 인증 객체 가져오되 폼은 User를 사용하여 user에 담는다..

- UserService계층에 updatePassword 메서드로 user.getUsername(), updatePassword.getPassword(), updatePassword.getRepassword() 데이터를 보낸다.

- UserService계층에서 성공적으로 데이터가 DB에 업데이트되면 성공 메시지를 반환한다.


3) UserService

- 비밀번호를 업데이트하는 updatePassword를 void타입(return없는)으로 생성. 파라미터는 String username, String newPassword, String rePassword를 받는다.

- UserRepository의 findByUsername()메서드를 사용해 username으로 DB에 있는 사용자 정보 조회하여 User user 객체 생성.

- if문을 사용하여 기존 비밀번호와 새로운 비밀번호가 동일한지 여부를 확인하고 동일하면 예외를 던지기.

- if문을 사용하여 새 비밀번호와 다시 입력한 새 비밀번호가 동일한지 여부를 확인하고 동일하지 않으면 예외를 던지기.

- 위 조건을 지났으면 새로운 비밀번호를 PasswordEncoder.encode()를 통해 암호화 한 다음 user 객체에 새로운 비밀번호를 저장하고, 업데이트 된 user객체를 UserRepository.save()를 통해 DB에 저장한다.


[ 메모 ]

1. 나중에 비밀번호 자리수나 문자가 섞여야하는지에 대한 것을 따로 추가해야할 거 같다.