From df4fb637206a64df18dd37b7b9cae84da0508ba1 Mon Sep 17 00:00:00 2001 From: LJH Date: Thu, 13 Oct 2022 16:04:25 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EC=A4=80=ED=98=B8=20=EC=A0=84?= =?UTF-8?q?=EC=9E=90=EC=A1=B0=EC=A0=95=EC=8B=9C=EC=8A=A4=ED=85=9C=EA=B3=A0?= =?UTF-8?q?=EB=8F=84=ED=99=94=20=EC=BB=A4=EB=B0=8B=20=20-=20OTP=EC=9D=B8?= =?UTF-8?q?=EC=A6=9D=20=EA=B0=9C=EB=B0=9C=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kccadr/adjreqmgr/service/AdjReqMgrVO.java | 2 +- .../kccadr/cmm/service/SMSOracleService.java | 2 + .../service/impl/SMSOracleServiceImpl.java | 9 ++- .../kcc/kccadr/kccadrCom/web/OtpCertUtil.java | 67 ++++++++++--------- .../kccadr/msg/service/impl/MsgMgrDAO.java | 6 ++ .../let/uat/uia/web/EgovLoginController.java | 63 ++++++++--------- .../sqlmap/kccadr/msg/Msg_SQL_Mysql.xml | 55 ++++++++------- .../WEB-INF/jsp/uat/uia/EgovLoginUsr.jsp | 39 ++++++----- 8 files changed, 131 insertions(+), 112 deletions(-) diff --git a/src/main/java/kcc/kccadr/adjreqmgr/service/AdjReqMgrVO.java b/src/main/java/kcc/kccadr/adjreqmgr/service/AdjReqMgrVO.java index 9e28ff18..0c185060 100644 --- a/src/main/java/kcc/kccadr/adjreqmgr/service/AdjReqMgrVO.java +++ b/src/main/java/kcc/kccadr/adjreqmgr/service/AdjReqMgrVO.java @@ -255,7 +255,7 @@ public class AdjReqMgrVO extends ComDefaultVO implements Serializable{ private String phone; // 수신번호 private String userId; private String smsSendTypeCd; // 발송유형 - CC052 - private String certNum; + private String certNum; // 인증번호 public AdjReqMgrVO getAdrVO() { return adrVO; diff --git a/src/main/java/kcc/kccadr/cmm/service/SMSOracleService.java b/src/main/java/kcc/kccadr/cmm/service/SMSOracleService.java index e4af18df..12beb784 100644 --- a/src/main/java/kcc/kccadr/cmm/service/SMSOracleService.java +++ b/src/main/java/kcc/kccadr/cmm/service/SMSOracleService.java @@ -41,4 +41,6 @@ public interface SMSOracleService { // SMS OTP 인증번호 발송(저작위 SMS서버 DB등록) public String insertSmsOtpCertNumSend(AdjReqMgrVO adjReqMgrVO) throws Exception; + + public String selectAdrOtpCertNumSmsLog(AdjReqMgrVO adjReqMgrVO) throws Exception; } diff --git a/src/main/java/kcc/kccadr/cmm/service/impl/SMSOracleServiceImpl.java b/src/main/java/kcc/kccadr/cmm/service/impl/SMSOracleServiceImpl.java index bb188a00..8659e1e4 100644 --- a/src/main/java/kcc/kccadr/cmm/service/impl/SMSOracleServiceImpl.java +++ b/src/main/java/kcc/kccadr/cmm/service/impl/SMSOracleServiceImpl.java @@ -730,8 +730,11 @@ public class SMSOracleServiceImpl extends EgovAbstractServiceImpl implements SM LOGGER.debug("SMS 전송DB 등록 결과:[" + result +"]"); return result; } - - - + + @Override + public String selectAdrOtpCertNumSmsLog(AdjReqMgrVO adjReqMgrVO) throws Exception{ + + return msgMgrDAO.selectAdrOtpCertNumSmsLog(adjReqMgrVO); + } } diff --git a/src/main/java/kcc/kccadr/kccadrCom/web/OtpCertUtil.java b/src/main/java/kcc/kccadr/kccadrCom/web/OtpCertUtil.java index 1ab12ffb..dea8f9a8 100644 --- a/src/main/java/kcc/kccadr/kccadrCom/web/OtpCertUtil.java +++ b/src/main/java/kcc/kccadr/kccadrCom/web/OtpCertUtil.java @@ -1,12 +1,22 @@ package kcc.kccadr.kccadrCom.web; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +import javax.annotation.Resource; + import org.springframework.stereotype.Component; import kcc.com.cmm.LoginVO; import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO; +import kcc.kccadr.cmm.service.SMSOracleService; @Component("OtpCertUtil") public class OtpCertUtil { + + @Resource(name = "SMSOracleService") + private SMSOracleService sMSOracleService; /** * @Method Name : otpCert @@ -32,41 +42,32 @@ public class OtpCertUtil { adjReqMgrVO.setCertNum(loginVO_P.getCertNum()); adjReqMgrVO.setPhone(loginVO_P.getPhone()); adjReqMgrVO.setFrstRegisterId(loginVO_R.getUniqId()); - adjReqMgrVO.setSmsSendTypeCd("001"); + String frstRegistPnttm = ""; + frstRegistPnttm = sMSOracleService.selectAdrOtpCertNumSmsLog(adjReqMgrVO); - -// // 인증번호 가져오기 -// sendLogVO = mjonMsgDataService.selectSysMsgLog(sendLogVO); -// if (sendLogVO == null) { -// return "empty"; -// } else { -// // 시간 비교 -// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); -// Date nowdate = new Date(); -// Date compareDate = format.parse(sendLogVO.getFrstSendPnttm()); -// -// Calendar cal = Calendar.getInstance(); -// cal.setTime(compareDate); -// // 5분 추가 -// cal.add(Calendar.MINUTE, +5); -// -// compareDate = cal.getTime(); -// -// // 인증번호을 발송한지 5분 이내일때 -// if (compareDate.after(nowdate)) { -// UserManageVO checkUser = userManageService.selectAdminUserSmsCertCheck(userManageVO); -// -// if (checkUser != null) { -// return "success"; -// } else { -// return "checkNoFail"; -// } -// } else { -// return "timeOut"; -// } -// } - return ""; + if ("".equals(frstRegistPnttm) || frstRegistPnttm == null) { + return "empty"; + } else { + // 시간 비교 + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date nowdate = new Date(); + Date compareDate = format.parse(frstRegistPnttm); + + Calendar cal = Calendar.getInstance(); + cal.setTime(nowdate); + // 5분 추가 + cal.add(Calendar.MINUTE, +5); + + nowdate = cal.getTime(); + + // 인증번호을 발송한지 5분 이내일때 + if (compareDate.before(nowdate)) { + return "success"; + } else { + return "timeOut"; + } + } } catch (Exception e) { return "exception"; diff --git a/src/main/java/kcc/kccadr/msg/service/impl/MsgMgrDAO.java b/src/main/java/kcc/kccadr/msg/service/impl/MsgMgrDAO.java index 68f5daa2..224c3f10 100644 --- a/src/main/java/kcc/kccadr/msg/service/impl/MsgMgrDAO.java +++ b/src/main/java/kcc/kccadr/msg/service/impl/MsgMgrDAO.java @@ -79,4 +79,10 @@ public class MsgMgrDAO extends EgovAbstractDAO { insert("MsgMgrDAO.insertAdrOtpCertNumSmsLog", adjReqMgrVO); } + + public String selectAdrOtpCertNumSmsLog(AdjReqMgrVO adjReqMgrVO) throws Exception{ + + return (String) select("MsgMgrDAO.selectAdrOtpCertNumSmsLog", adjReqMgrVO); + } + } diff --git a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java index 35af180d..89a09573 100644 --- a/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/kcc/let/uat/uia/web/EgovLoginController.java @@ -207,6 +207,7 @@ public class EgovLoginController { Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); if (isAuthenticated) return "redirect:/cmm/main/mainPage.do"; + // initRsa(request); //로그인 페이지 접근시 IP체크 제거_로그인 버튼 클릭 시 로그인 유형에 따라 체크로 변경_221011_이준호 @@ -570,7 +571,7 @@ public class EgovLoginController { * return * empty = "인증번호 발송 내역이 없습니다. 최고관리자에게 문의하세요." * success = "5분이내 발송 내역 비교, 인증번호 비교 시 일치" - * smsCertFlag = true + * smsCertFlag = true * checkNoFail = "인증번호를 확인해 주세요" * timeOut = "인증번호 시간이 초과되었습니다. \\n 인증번호를 다시 발송합니다." * Exception = "에러가 발생하였습니다. 다시 시도해 주세요. \\n 에러가 지속될 시 최고관리자에게 문의하세요."; @@ -582,14 +583,14 @@ public class EgovLoginController { * */ String result = otpCertUtil.otpCert(loginVO, resultVO); -// if(result.equals("empty")) { -// loginService.updatePassMissPlus(loginVO); -// model.addAttribute("message", "인증번호 발송 내역이 없습니다. 최고관리자에게 문의하세요."); -// initRsa(request); -// return "uat/uia/EgovLoginUsr"; -// } else if(result.equals("success")) { -// smsCertFlag = true; -// } else if(result.equals("checkNoFail")) { + if(result.equals("empty")) { + loginService.updatePassMissPlus(loginVO); + model.addAttribute("message", "인증번호가 일치하지 않습니다. \\n 다시 시도해주세요."); + return "uat/uia/EgovLoginUsr"; + } else if(result.equals("success")) { + otpCertFlag = true; + } +// else if(result.equals("checkNoFail")) { // loginService.updatePassMissPlus(loginVO); // model.addAttribute("message", "인증번호를 확인해 주세요"); // model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n등록 된 휴대폰 번호로 발송된 인증번호를 입력해주세요."); @@ -602,31 +603,23 @@ public class EgovLoginController { // // initRsa(request); // return "uat/uia/EgovLoginUsr"; -// } else if(result.equals("timeOut")) { -// model.addAttribute("message", "인증번호 시간이 초과되었습니다. \\n 인증번호를 다시 발송합니다."); -// model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n등록 된 휴대폰 번호로 발송된 인증번호를 입력해주세요."); -// model.addAttribute("mode", "본인인증"); -// model.addAttribute("id", resultVO.getId()); -// model.addAttribute("password", authSelfPw); -// -// //인증문자 발송 -// mjonSmsCertSendUtil.mjonSmsCertSend(callTo); -// -// initRsa(request); -// return "uat/uia/EgovLoginUsr"; -// } else if(result.equals("Exception")) { -// model.addAttribute("message", "에러가 발생하였습니다. 다시 시도해 주세요. \\\\n 에러가 지속될 시 최고관리자에게 문의하세요."); -// model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n등록 된 휴대폰 번호로 발송된 인증번호를 입력해주세요."); -// model.addAttribute("mode", "본인인증"); -// model.addAttribute("id", resultVO.getId()); -// model.addAttribute("password", authSelfPw); -// -// //인증문자 발송 -// mjonSmsCertSendUtil.mjonSmsCertSend(callTo); -// -// initRsa(request); -// return "uat/uia/EgovLoginUsr"; -// } + else if(result.equals("timeOut")) { + model.addAttribute("message", "인증번호 시간이 초과되었습니다."); + model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n 인증번호 받기를 다시 시도해주세요."); + model.addAttribute("mode", "OTP"); + model.addAttribute("id", resultVO.getId()); + model.addAttribute("password", authSelfPw); + + return "uat/uia/EgovLoginUsr"; + } else if(result.equals("Exception")) { + model.addAttribute("message", "에러가 발생하였습니다. 다시 시도해 주세요. \\\\n 에러가 지속될 시 최고관리자에게 문의하세요."); + model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n 인증번호 받기를 다시 시도해주세요."); + model.addAttribute("mode", "OTP"); + model.addAttribute("id", resultVO.getId()); + model.addAttribute("password", authSelfPw); + + return "uat/uia/EgovLoginUsr"; + } } if (loginService.getUserAuth(resultVO) != null) { @@ -698,7 +691,7 @@ public class EgovLoginController { } // OTP 로그인 - else if("002".equals(resultVO.getLoginTypeCd()) && StringUtil.isEmpty(resultVO.getCertNum())){ + else if("002".equals(resultVO.getLoginTypeCd()) && StringUtil.isEmpty(loginVO.getCertNum()) && !otpCertFlag){ model.addAttribute("mode","OTP"); diff --git a/src/main/resources/egovframework/sqlmap/kccadr/msg/Msg_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/kccadr/msg/Msg_SQL_Mysql.xml index 43507ac9..ec9698ef 100644 --- a/src/main/resources/egovframework/sqlmap/kccadr/msg/Msg_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/kccadr/msg/Msg_SQL_Mysql.xml @@ -225,34 +225,41 @@ - INSERT INTO adr_sms_send_mgr - ( - sms_send_seq, - sms_send_type_cd, - phone, - call_from, - cn, - cert_num, - frst_regist_pnttm, - frst_register_id - ) - VALUES - ( - #smsSendSeq#, - #smsSendTypeCd#, - #trPhone#, - #sendTelNo#, - #sendMsg#, - #certNum#, - now(), - #frstRegisterId# - ) - - + ( + sms_send_seq, + sms_send_type_cd, + phone, + call_from, + cn, + cert_num, + frst_regist_pnttm, + frst_register_id + ) + VALUES + ( + #smsSendSeq#, + #smsSendTypeCd#, + #trPhone#, + #sendTelNo#, + #sendMsg#, + #certNum#, + now(), + #frstRegisterId# + ) + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/uat/uia/EgovLoginUsr.jsp b/src/main/webapp/WEB-INF/jsp/uat/uia/EgovLoginUsr.jsp index 14251b52..66e845a0 100644 --- a/src/main/webapp/WEB-INF/jsp/uat/uia/EgovLoginUsr.jsp +++ b/src/main/webapp/WEB-INF/jsp/uat/uia/EgovLoginUsr.jsp @@ -79,7 +79,7 @@ function actionLogin() { return false; } - else if (document.loginForm.checkNo.value ==""){ + else if (document.loginForm.certNum.value ==""){ alert("인증번호를 입력하세요."); return false; } @@ -96,7 +96,7 @@ function actionLogin() { $("#id").val(id); $("#password").val(pw); $("#password2").val(pw); - + document.loginForm.action=""; saveid(document.loginForm); document.loginForm.submit(); @@ -169,6 +169,7 @@ function optCertNumSms(){ success: function (returnData, status) { console.log(returnData.result); if(returnData.result == 'SUCCESS'){ + alert("인증번호가 발송되었습니다. \n 발송된 인증번호를 입력해주세요."); }else{ alert(returnData.message); } @@ -176,6 +177,10 @@ function optCertNumSms(){ error: function (e) { alert("요청에 실패하였습니다."); console.log("ERROR : ", e); } }); } + +function onlyNumber(thisObj) { + thisObj.value = thisObj.value.replace(/[^0-9]/gi, ""); +} @@ -196,19 +201,21 @@ function optCertNumSms(){