diff --git a/src/main/java/com/eactive/apim/portal/apps/login/controller/AccountRecoveryController.java b/src/main/java/com/eactive/apim/portal/apps/login/controller/AccountRecoveryController.java index 447fd28..c254ed9 100644 --- a/src/main/java/com/eactive/apim/portal/apps/login/controller/AccountRecoveryController.java +++ b/src/main/java/com/eactive/apim/portal/apps/login/controller/AccountRecoveryController.java @@ -113,11 +113,20 @@ public class AccountRecoveryController { // 세션에서 인증 여부 확인 Boolean isVerified = (Boolean) session.getAttribute("isVerified"); + String sessionMobileNumber = (String) session.getAttribute("mobileNumber"); + if (isVerified == null || !isVerified) { setModelForError(redirectAttributes, "resetPassword", null, "휴대폰 번호 인증을 먼저 진행해주세요.", null, passwordReset); return "redirect:/account_recovery?tab=resetPassword"; } + // 인증된 전화번호와 입력된 전화번호 일치 여부 확인 + if (passwordReset.getMobileNumber() == null || + !passwordReset.getMobileNumber().replace("-", "").equals(sessionMobileNumber)) { + setModelForError(redirectAttributes, "resetPassword", null, "인증된 휴대폰 번호와 입력한 번호가 일치하지 않습니다.", null, passwordReset); + return "redirect:/account_recovery?tab=resetPassword"; + } + try { // 사용자 정보 확인 portalUserAuthService.resetPassword( diff --git a/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserAuthService.java b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserAuthService.java index 5b90790..f79a34f 100644 --- a/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserAuthService.java +++ b/src/main/java/com/eactive/apim/portal/apps/user/service/PortalUserAuthService.java @@ -101,11 +101,12 @@ public class PortalUserAuthService implements UserDetailsService { } public void resetPassword(String loginId, String userName, String mobileNumber) { + // 전화번호에서 - 제거하여 정규화 + String normalizedMobileNumber = mobileNumber != null ? mobileNumber.replace("-", "") : null; - PortalUser portalUser = portalUserRepository.findByLoginIdAndUserNameAndMobileNumber(loginId, userName, mobileNumber) + PortalUser portalUser = portalUserRepository.findByLoginIdAndUserNameAndMobileNumber(loginId, userName, normalizedMobileNumber) .orElseThrow(() -> new UserNotFoundException("일치하는 사용자 정보를 찾을 수 없습니다.")); -// String tempPassword = EncryptionUtil.generateNewPasswordForKjbank(loginId); String tempPassword = EncryptionUtil.generateNewPassword(); portalUser.setPasswordHash(passwordEncoder.encode(tempPassword)); if ("Y".equalsIgnoreCase(portalUser.getAccountLockYn())) { diff --git a/src/main/resources/templates/views/apps/login/resetPassword.html b/src/main/resources/templates/views/apps/login/resetPassword.html index 75549cb..e932e00 100644 --- a/src/main/resources/templates/views/apps/login/resetPassword.html +++ b/src/main/resources/templates/views/apps/login/resetPassword.html @@ -1,22 +1,20 @@ + xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/kjbank_title_layout}"> +
+
+ +

비밀번호 초기화

+
+