From 2b468dbdf04a57bd52dedb5676eb288c17dd9b4a Mon Sep 17 00:00:00 2001 From: Rimi Date: Sun, 17 Nov 2024 19:15:48 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B[Fix]=20=EB=B9=84=EB=B0=80=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=9E=AC=EC=84=A4=EC=A0=95=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EC=9D=B8=EC=A6=9D=EC=BD=94=EB=93=9C=20=EB=B0=9C?= =?UTF-8?q?=EC=86=A1=20=EB=B0=8F=20=EA=B2=80=EC=A6=9D,=20=EC=83=88?= =?UTF-8?q?=EB=A1=9C=EC=9A=B4=20=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8?= =?UTF-8?q?=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/member/AuthController.java | 2 +- .../controller/member/PasswordController.java | 14 ++++++++++++-- .../com/gamegoo/dto/member/MemberRequest.java | 6 ++++++ .../com/gamegoo/service/member/AuthService.java | 2 +- .../gamegoo/service/member/PasswordService.java | 16 +++++----------- 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/gamegoo/controller/member/AuthController.java b/src/main/java/com/gamegoo/controller/member/AuthController.java index e33a5ca..88d1c3f 100644 --- a/src/main/java/com/gamegoo/controller/member/AuthController.java +++ b/src/main/java/com/gamegoo/controller/member/AuthController.java @@ -78,7 +78,7 @@ public ApiResponse verifyEmail( @Valid @RequestBody MemberRequest.EmailCodeRequestDTO emailCodeRequestDTO) { String email = emailCodeRequestDTO.getEmail(); String code = emailCodeRequestDTO.getCode(); - authService.verifyEmail(email, code); + authService.verifyCode(email, code); return ApiResponse.onSuccess("인증코드 검증에 성공했습니다."); } diff --git a/src/main/java/com/gamegoo/controller/member/PasswordController.java b/src/main/java/com/gamegoo/controller/member/PasswordController.java index 707e1d5..5dd2935 100644 --- a/src/main/java/com/gamegoo/controller/member/PasswordController.java +++ b/src/main/java/com/gamegoo/controller/member/PasswordController.java @@ -4,6 +4,7 @@ import com.gamegoo.apiPayload.code.status.ErrorStatus; import com.gamegoo.apiPayload.exception.handler.MemberHandler; import com.gamegoo.dto.member.MemberRequest; +import com.gamegoo.service.member.AuthService; import com.gamegoo.service.member.PasswordService; import com.gamegoo.util.JWTUtil; import io.swagger.v3.oas.annotations.Operation; @@ -23,6 +24,7 @@ public class PasswordController { private final PasswordService passwordService; + private final AuthService authService; @PostMapping("/check") @Operation(summary = "JWT 토큰이 필요한 비밀번호 확인 API 입니다.", description = "API for checking password with JWT") @@ -45,7 +47,7 @@ public ApiResponse checkPasswordWithJWT( public ApiResponse resetPasswordWithJWT( @Valid @RequestBody MemberRequest.PasswordRequestJWTDTO passwordRequestDTO) { Long currentUserId = JWTUtil.getCurrentUserId(); - passwordService.updatePassword(currentUserId, passwordRequestDTO.getOldPassword(), passwordRequestDTO.getNewPassword()); + passwordService.updatePasswordById(currentUserId, passwordRequestDTO.getOldPassword(), passwordRequestDTO.getNewPassword()); return ApiResponse.onSuccess("비밀번호 재설정을 완료했습니다."); } @@ -54,8 +56,16 @@ public ApiResponse resetPasswordWithJWT( @Operation(summary = "비밀번호 재설정 API 입니다.", description = "API for reseting password") public ApiResponse resetPassword( @Valid @RequestBody MemberRequest.PasswordRequestDTO passwordRequestDTO) { + // dto + String email = passwordRequestDTO.getEmail(); + String verifyCode = passwordRequestDTO.getVerifyCode(); + String newPassword = passwordRequestDTO.getNewPassword(); - passwordService.updatePasswordWithEmail(passwordRequestDTO.getEmail()); + // 인증코드 검증 + authService.verifyCode(email,verifyCode); + + // 비밀번호 재설정 + passwordService.updatePasswordWithEmail(email, newPassword); return ApiResponse.onSuccess("비밀번호 재설정을 완료했습니다."); } diff --git a/src/main/java/com/gamegoo/dto/member/MemberRequest.java b/src/main/java/com/gamegoo/dto/member/MemberRequest.java index c9e77fa..b2a2fe2 100644 --- a/src/main/java/com/gamegoo/dto/member/MemberRequest.java +++ b/src/main/java/com/gamegoo/dto/member/MemberRequest.java @@ -75,6 +75,12 @@ public static class PasswordRequestDTO { @NotBlank(message = "Email은 비워둘 수 없습니다.") String email; + @NotBlank(message = "newPassword는 비워둘 수 없습니다.") + String newPassword; + + @NotBlank(message = "verifyCode는 비워둘 수 없습니다.") + String verifyCode; + } diff --git a/src/main/java/com/gamegoo/service/member/AuthService.java b/src/main/java/com/gamegoo/service/member/AuthService.java index 01adc12..4c1792c 100644 --- a/src/main/java/com/gamegoo/service/member/AuthService.java +++ b/src/main/java/com/gamegoo/service/member/AuthService.java @@ -225,7 +225,7 @@ public MemberResponse.RefreshTokenResponseDTO verifyRefreshToken(String refresh_ * @param email * @param code */ - public void verifyEmail(String email, String code) { + public void verifyCode(String email, String code) { // 이메일로 보낸 인증 코드 중 가장 최근의 데이터를 불러옴 EmailVerifyRecord emailVerifyRecord = emailVerifyRecordRepository.findByEmailOrderByUpdatedAtDesc( email, PageRequest.of(0, 1)) diff --git a/src/main/java/com/gamegoo/service/member/PasswordService.java b/src/main/java/com/gamegoo/service/member/PasswordService.java index f765672..c5895f4 100644 --- a/src/main/java/com/gamegoo/service/member/PasswordService.java +++ b/src/main/java/com/gamegoo/service/member/PasswordService.java @@ -4,7 +4,6 @@ import com.gamegoo.apiPayload.exception.handler.MemberHandler; import com.gamegoo.domain.member.Member; import com.gamegoo.repository.member.MemberRepository; -import com.gamegoo.util.CodeGeneratorUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.mail.javamail.JavaMailSender; @@ -44,7 +43,7 @@ public boolean checkPasswordById(Long userId, String password) { * @param userId * @param newPassword */ - public void updatePassword(Long userId, String oldPassword, String newPassword) { + public void updatePasswordById(Long userId, String oldPassword, String newPassword) { // jwt 토큰으로 멤버 찾기 Member member = memberRepository.findById(userId) .orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND)); @@ -66,20 +65,15 @@ public void updatePassword(Long userId, String oldPassword, String newPassword) * * @param email */ - public void updatePasswordWithEmail(String email) { + public void updatePasswordWithEmail(String email, String newPassword) { // email으로 멤버 찾기 Member member = memberRepository.findByEmail(email) .orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND)); - // 랜덤 임시 비밀번호 생성 - String tempPassword = CodeGeneratorUtil.generatePasswordRandomCode(); + // 비밀번호 재설정 + member.updatePassword(bCryptPasswordEncoder.encode(newPassword)); + memberRepository.save(member); - // 이메일 전송 - sendEmailInternal(email,tempPassword); - - // 비밀번호 재설정 - member.updatePassword(bCryptPasswordEncoder.encode(tempPassword)); - memberRepository.save(member); } /**