diff --git a/WebContent/jsp/common/screen/emergency.jsp b/WebContent/jsp/common/screen/emergency.jsp index b2eacc2..16ca022 100644 --- a/WebContent/jsp/common/screen/emergency.jsp +++ b/WebContent/jsp/common/screen/emergency.jsp @@ -65,6 +65,7 @@ // SMS 인증 관련 변수 var smsAuthTimer = null; var resendTimer = null; + var smsAuthPurpose = 'LOGIN'; // 'LOGIN' | 'PASSWORD_CHANGE' - SMS 인증 모달을 어느 흐름에서 띄웠는지 구분 function fncPreMain() { if ($("input[name=userId]").val() ==null || $("input[name=userId]").val().length == 0 ){ @@ -96,6 +97,7 @@ } else if (response.smsAuthRequired) { // SMS 인증 필요 + smsAuthPurpose = 'LOGIN'; showSmsAuthModal(response); } else if (response.success) { // 직접 로그인 성공 @@ -123,11 +125,21 @@ function showSmsAuthModal(data) { $('#smsAuthMaskedPhone').text(data.maskedPhone); $('#smsAuthCode').val(''); + updateSmsTestHint(data.smsTestHint); startExpiryTimer(data.expiresAt); startResendTimer(data.resendableAt); $('#smsAuthModal').modal('show'); } + // fixed 모드(djb.sms_auth.mode=fixed)일 때만 서버가 내려주는 테스트용 인증번호 힌트 표시 + function updateSmsTestHint(hint) { + if (hint) { + $('#smsAuthTestHint').text(hint).show(); + } else { + $('#smsAuthTestHint').text('').hide(); + } + } + // 유효시간 타이머 function startExpiryTimer(expiresAt) { clearInterval(smsAuthTimer); @@ -181,6 +193,7 @@ dataType: 'json', success: function(data) { if (data.sent) { + updateSmsTestHint(data.smsTestHint); startExpiryTimer(data.expiresAt); startResendTimer(data.resendableAt); alert('인증번호가 재발송되었습니다.'); @@ -194,7 +207,7 @@ }); } - // SMS 인증번호 확인 + // SMS 인증번호 확인 (로그인 / 비밀번호 변경 공용 - smsAuthPurpose로 분기) function verifySmsAuthCode() { var code = $('#smsAuthCode').val(); if (!code || code.length !== 6) { @@ -203,17 +216,25 @@ return; } + var isPasswordChange = (smsAuthPurpose === 'PASSWORD_CHANGE'); + var verifyUrl = isPasswordChange + ? '' + : ''; + $.ajax({ - url: '', + url: verifyUrl, type: 'POST', data: { authCode: code }, dataType: 'json', success: function(data) { if (data.success) { $('#smsAuthModal').modal('hide'); + if (isPasswordChange) { + alert(data.message); + } window.location.href = data.redirectUrl; } else { - alert(data.errorMessage || '인증에 실패했습니다.'); + alert(data.errorMessage || data.message || '인증에 실패했습니다.'); } }, error: function() { @@ -275,6 +296,13 @@ data: $('#modalLoginForm').serialize(), dataType: 'json', success: function(response) { + if (response.smsAuthRequired) { + // 비밀번호는 아직 반영되지 않음 - SMS 인증 완료 시 최종 반영됨 + smsAuthPurpose = 'PASSWORD_CHANGE'; + $('#pwdChgModal').modal('hide'); + showSmsAuthModal(response); + return; + } alert(response.message); if (response.success) { window.location.href = response.redirectUrl || ''; @@ -462,6 +490,7 @@ placeholder="인증번호 6자리" maxlength="6" onkeypress="return event.charCode >= 48 && event.charCode <= 57"> +

남은 시간: 60