[ 작업한 내용 ]
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. 나중에 비밀번호 자리수나 문자가 섞여야하는지에 대한 것을 따로 추가해야할 거 같다.
'개발 기록 > 도서관 관리 시스템' 카테고리의 다른 글
[Library Management System] 25.08.08 (23일) (0) | 2025.08.08 |
---|---|
[Library Management System] 25.08.07 (22일) (0) | 2025.08.07 |
[Library Management System] 25.08.04 (17~19일) (0) | 2025.08.04 |
[Library Management System] 25.08.01 (16일) (0) | 2025.08.01 |
[Library Management System] 25.07.31 (15일) (0) | 2025.07.31 |