이준호 전자조정시스템고도화 커밋
- OTP인증 개발 완료
This commit is contained in:
parent
cd26194a66
commit
df4fb63720
@ -255,7 +255,7 @@ public class AdjReqMgrVO extends ComDefaultVO implements Serializable{
|
|||||||
private String phone; // 수신번호
|
private String phone; // 수신번호
|
||||||
private String userId;
|
private String userId;
|
||||||
private String smsSendTypeCd; // 발송유형 - CC052
|
private String smsSendTypeCd; // 발송유형 - CC052
|
||||||
private String certNum;
|
private String certNum; // 인증번호
|
||||||
|
|
||||||
public AdjReqMgrVO getAdrVO() {
|
public AdjReqMgrVO getAdrVO() {
|
||||||
return adrVO;
|
return adrVO;
|
||||||
|
|||||||
@ -41,4 +41,6 @@ public interface SMSOracleService {
|
|||||||
|
|
||||||
// SMS OTP 인증번호 발송(저작위 SMS서버 DB등록)
|
// SMS OTP 인증번호 발송(저작위 SMS서버 DB등록)
|
||||||
public String insertSmsOtpCertNumSend(AdjReqMgrVO adjReqMgrVO) throws Exception;
|
public String insertSmsOtpCertNumSend(AdjReqMgrVO adjReqMgrVO) throws Exception;
|
||||||
|
|
||||||
|
public String selectAdrOtpCertNumSmsLog(AdjReqMgrVO adjReqMgrVO) throws Exception;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -731,7 +731,10 @@ public class SMSOracleServiceImpl extends EgovAbstractServiceImpl implements SM
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String selectAdrOtpCertNumSmsLog(AdjReqMgrVO adjReqMgrVO) throws Exception{
|
||||||
|
|
||||||
|
return msgMgrDAO.selectAdrOtpCertNumSmsLog(adjReqMgrVO);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,23 @@
|
|||||||
package kcc.kccadr.kccadrCom.web;
|
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 org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import kcc.com.cmm.LoginVO;
|
import kcc.com.cmm.LoginVO;
|
||||||
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
import kcc.kccadr.adjreqmgr.service.AdjReqMgrVO;
|
||||||
|
import kcc.kccadr.cmm.service.SMSOracleService;
|
||||||
|
|
||||||
@Component("OtpCertUtil")
|
@Component("OtpCertUtil")
|
||||||
public class OtpCertUtil {
|
public class OtpCertUtil {
|
||||||
|
|
||||||
|
@Resource(name = "SMSOracleService")
|
||||||
|
private SMSOracleService sMSOracleService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Method Name : otpCert
|
* @Method Name : otpCert
|
||||||
* @작성일 : 2022. 10. 12.
|
* @작성일 : 2022. 10. 12.
|
||||||
@ -32,41 +42,32 @@ public class OtpCertUtil {
|
|||||||
adjReqMgrVO.setCertNum(loginVO_P.getCertNum());
|
adjReqMgrVO.setCertNum(loginVO_P.getCertNum());
|
||||||
adjReqMgrVO.setPhone(loginVO_P.getPhone());
|
adjReqMgrVO.setPhone(loginVO_P.getPhone());
|
||||||
adjReqMgrVO.setFrstRegisterId(loginVO_R.getUniqId());
|
adjReqMgrVO.setFrstRegisterId(loginVO_R.getUniqId());
|
||||||
adjReqMgrVO.setSmsSendTypeCd("001");
|
|
||||||
|
|
||||||
|
String frstRegistPnttm = "";
|
||||||
|
frstRegistPnttm = sMSOracleService.selectAdrOtpCertNumSmsLog(adjReqMgrVO);
|
||||||
|
|
||||||
|
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();
|
||||||
// sendLogVO = mjonMsgDataService.selectSysMsgLog(sendLogVO);
|
cal.setTime(nowdate);
|
||||||
// if (sendLogVO == null) {
|
// 5분 추가
|
||||||
// return "empty";
|
cal.add(Calendar.MINUTE, +5);
|
||||||
// } else {
|
|
||||||
// // 시간 비교
|
nowdate = cal.getTime();
|
||||||
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
||||||
// Date nowdate = new Date();
|
// 인증번호을 발송한지 5분 이내일때
|
||||||
// Date compareDate = format.parse(sendLogVO.getFrstSendPnttm());
|
if (compareDate.before(nowdate)) {
|
||||||
//
|
return "success";
|
||||||
// Calendar cal = Calendar.getInstance();
|
} else {
|
||||||
// cal.setTime(compareDate);
|
return "timeOut";
|
||||||
// // 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 "";
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return "exception";
|
return "exception";
|
||||||
|
|||||||
@ -79,4 +79,10 @@ public class MsgMgrDAO extends EgovAbstractDAO {
|
|||||||
|
|
||||||
insert("MsgMgrDAO.insertAdrOtpCertNumSmsLog", adjReqMgrVO);
|
insert("MsgMgrDAO.insertAdrOtpCertNumSmsLog", adjReqMgrVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String selectAdrOtpCertNumSmsLog(AdjReqMgrVO adjReqMgrVO) throws Exception{
|
||||||
|
|
||||||
|
return (String) select("MsgMgrDAO.selectAdrOtpCertNumSmsLog", adjReqMgrVO);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -207,6 +207,7 @@ public class EgovLoginController {
|
|||||||
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
|
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
|
||||||
if (isAuthenticated)
|
if (isAuthenticated)
|
||||||
return "redirect:/cmm/main/mainPage.do";
|
return "redirect:/cmm/main/mainPage.do";
|
||||||
|
|
||||||
// initRsa(request);
|
// initRsa(request);
|
||||||
|
|
||||||
//로그인 페이지 접근시 IP체크 제거_로그인 버튼 클릭 시 로그인 유형에 따라 체크로 변경_221011_이준호
|
//로그인 페이지 접근시 IP체크 제거_로그인 버튼 클릭 시 로그인 유형에 따라 체크로 변경_221011_이준호
|
||||||
@ -582,14 +583,14 @@ public class EgovLoginController {
|
|||||||
* */
|
* */
|
||||||
String result = otpCertUtil.otpCert(loginVO, resultVO);
|
String result = otpCertUtil.otpCert(loginVO, resultVO);
|
||||||
|
|
||||||
// if(result.equals("empty")) {
|
if(result.equals("empty")) {
|
||||||
// loginService.updatePassMissPlus(loginVO);
|
loginService.updatePassMissPlus(loginVO);
|
||||||
// model.addAttribute("message", "인증번호 발송 내역이 없습니다. 최고관리자에게 문의하세요.");
|
model.addAttribute("message", "인증번호가 일치하지 않습니다. \\n 다시 시도해주세요.");
|
||||||
// initRsa(request);
|
return "uat/uia/EgovLoginUsr";
|
||||||
// return "uat/uia/EgovLoginUsr";
|
} else if(result.equals("success")) {
|
||||||
// } else if(result.equals("success")) {
|
otpCertFlag = true;
|
||||||
// smsCertFlag = true;
|
}
|
||||||
// } else if(result.equals("checkNoFail")) {
|
// else if(result.equals("checkNoFail")) {
|
||||||
// loginService.updatePassMissPlus(loginVO);
|
// loginService.updatePassMissPlus(loginVO);
|
||||||
// model.addAttribute("message", "인증번호를 확인해 주세요");
|
// model.addAttribute("message", "인증번호를 확인해 주세요");
|
||||||
// model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n등록 된 휴대폰 번호로 발송된 인증번호를 입력해주세요.");
|
// model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n등록 된 휴대폰 번호로 발송된 인증번호를 입력해주세요.");
|
||||||
@ -602,31 +603,23 @@ public class EgovLoginController {
|
|||||||
//
|
//
|
||||||
// initRsa(request);
|
// initRsa(request);
|
||||||
// return "uat/uia/EgovLoginUsr";
|
// return "uat/uia/EgovLoginUsr";
|
||||||
// } else if(result.equals("timeOut")) {
|
else if(result.equals("timeOut")) {
|
||||||
// model.addAttribute("message", "인증번호 시간이 초과되었습니다. \\n 인증번호를 다시 발송합니다.");
|
model.addAttribute("message", "인증번호 시간이 초과되었습니다.");
|
||||||
// model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n등록 된 휴대폰 번호로 발송된 인증번호를 입력해주세요.");
|
model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n 인증번호 받기를 다시 시도해주세요.");
|
||||||
// model.addAttribute("mode", "본인인증");
|
model.addAttribute("mode", "OTP");
|
||||||
// model.addAttribute("id", resultVO.getId());
|
model.addAttribute("id", resultVO.getId());
|
||||||
// model.addAttribute("password", authSelfPw);
|
model.addAttribute("password", authSelfPw);
|
||||||
//
|
|
||||||
// //인증문자 발송
|
return "uat/uia/EgovLoginUsr";
|
||||||
// mjonSmsCertSendUtil.mjonSmsCertSend(callTo);
|
} else if(result.equals("Exception")) {
|
||||||
//
|
model.addAttribute("message", "에러가 발생하였습니다. 다시 시도해 주세요. \\\\n 에러가 지속될 시 최고관리자에게 문의하세요.");
|
||||||
// initRsa(request);
|
model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n 인증번호 받기를 다시 시도해주세요.");
|
||||||
// return "uat/uia/EgovLoginUsr";
|
model.addAttribute("mode", "OTP");
|
||||||
// } else if(result.equals("Exception")) {
|
model.addAttribute("id", resultVO.getId());
|
||||||
// model.addAttribute("message", "에러가 발생하였습니다. 다시 시도해 주세요. \\\\n 에러가 지속될 시 최고관리자에게 문의하세요.");
|
model.addAttribute("password", authSelfPw);
|
||||||
// model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n등록 된 휴대폰 번호로 발송된 인증번호를 입력해주세요.");
|
|
||||||
// model.addAttribute("mode", "본인인증");
|
return "uat/uia/EgovLoginUsr";
|
||||||
// model.addAttribute("id", resultVO.getId());
|
}
|
||||||
// model.addAttribute("password", authSelfPw);
|
|
||||||
//
|
|
||||||
// //인증문자 발송
|
|
||||||
// mjonSmsCertSendUtil.mjonSmsCertSend(callTo);
|
|
||||||
//
|
|
||||||
// initRsa(request);
|
|
||||||
// return "uat/uia/EgovLoginUsr";
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loginService.getUserAuth(resultVO) != null) {
|
if (loginService.getUserAuth(resultVO) != null) {
|
||||||
@ -698,7 +691,7 @@ public class EgovLoginController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
// OTP 로그인
|
// 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");
|
model.addAttribute("mode","OTP");
|
||||||
|
|
||||||
|
|||||||
@ -225,34 +225,41 @@
|
|||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<insert id="MsgMgrDAO.insertAdrOtpCertNumSmsLog" parameterClass="AdjReqMgrVO">
|
<insert id="MsgMgrDAO.insertAdrOtpCertNumSmsLog" parameterClass="AdjReqMgrVO">
|
||||||
|
|
||||||
INSERT
|
INSERT
|
||||||
INTO adr_sms_send_mgr
|
INTO adr_sms_send_mgr
|
||||||
(
|
(
|
||||||
sms_send_seq,
|
sms_send_seq,
|
||||||
sms_send_type_cd,
|
sms_send_type_cd,
|
||||||
phone,
|
phone,
|
||||||
call_from,
|
call_from,
|
||||||
cn,
|
cn,
|
||||||
cert_num,
|
cert_num,
|
||||||
frst_regist_pnttm,
|
frst_regist_pnttm,
|
||||||
frst_register_id
|
frst_register_id
|
||||||
)
|
)
|
||||||
VALUES
|
VALUES
|
||||||
(
|
(
|
||||||
#smsSendSeq#,
|
#smsSendSeq#,
|
||||||
#smsSendTypeCd#,
|
#smsSendTypeCd#,
|
||||||
#trPhone#,
|
#trPhone#,
|
||||||
#sendTelNo#,
|
#sendTelNo#,
|
||||||
#sendMsg#,
|
#sendMsg#,
|
||||||
#certNum#,
|
#certNum#,
|
||||||
now(),
|
now(),
|
||||||
#frstRegisterId#
|
#frstRegisterId#
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<select id="MsgMgrDAO.selectAdrOtpCertNumSmsLog" parameterClass="AdjReqMgrVO" resultClass="String">
|
||||||
|
|
||||||
|
SELECT a.frst_regist_pnttm AS frstRegistPnttm
|
||||||
|
FROM adr_sms_send_mgr a
|
||||||
|
WHERE a.phone = #phone#
|
||||||
|
AND a.frst_register_id = #frstRegisterId#
|
||||||
|
AND a.sms_send_type_cd = '001'
|
||||||
|
AND a.cert_num = #certNum#
|
||||||
|
ORDER BY frst_regist_pnttm DESC LIMIT 1
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
</sqlMap>
|
</sqlMap>
|
||||||
@ -79,7 +79,7 @@ function actionLogin() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
<c:if test="${mode == 'OTP'}">
|
<c:if test="${mode == 'OTP'}">
|
||||||
else if (document.loginForm.checkNo.value ==""){
|
else if (document.loginForm.certNum.value ==""){
|
||||||
alert("인증번호를 입력하세요.");
|
alert("인증번호를 입력하세요.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -169,6 +169,7 @@ function optCertNumSms(){
|
|||||||
success: function (returnData, status) {
|
success: function (returnData, status) {
|
||||||
console.log(returnData.result);
|
console.log(returnData.result);
|
||||||
if(returnData.result == 'SUCCESS'){
|
if(returnData.result == 'SUCCESS'){
|
||||||
|
alert("인증번호가 발송되었습니다. \n 발송된 인증번호를 입력해주세요.");
|
||||||
}else{
|
}else{
|
||||||
alert(returnData.message);
|
alert(returnData.message);
|
||||||
}
|
}
|
||||||
@ -176,6 +177,10 @@ function optCertNumSms(){
|
|||||||
error: function (e) { alert("요청에 실패하였습니다."); console.log("ERROR : ", e); }
|
error: function (e) { alert("요청에 실패하였습니다."); console.log("ERROR : ", e); }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onlyNumber(thisObj) {
|
||||||
|
thisObj.value = thisObj.value.replace(/[^0-9]/gi, "");
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
@ -196,19 +201,21 @@ function optCertNumSms(){
|
|||||||
</div>
|
</div>
|
||||||
<div class="login_right_box login_right_otp_box">
|
<div class="login_right_box login_right_otp_box">
|
||||||
<p class="login_tit">로그인</p>
|
<p class="login_tit">로그인</p>
|
||||||
<kc:profile value="local">
|
<c:if test="${mode ne 'OTP'}">
|
||||||
아이디 선택 : <select id="devIdSelect" style="width: 400px; height: 30px;" onchange="login()">
|
<kc:profile value="local">
|
||||||
<option value="">로그인할 아이디를 선택해주세요.</option>
|
아이디 선택 : <select id="devIdSelect" style="width: 400px; height: 30px;" onchange="login()">
|
||||||
<option value="admin">관리자1 </option>
|
<option value="">로그인할 아이디를 선택해주세요.</option>
|
||||||
<option value="admin1">관리자2 </option>
|
<option value="admin">관리자1 </option>
|
||||||
|
<option value="admin1">관리자2 </option>
|
||||||
|
|
||||||
<option value="adradmin1">저작권위원회 관리자1(기본담당자)</option>
|
<option value="adradmin1">저작권위원회 관리자1(기본담당자)</option>
|
||||||
<option value="adradmin2">저작권위원회 관리자2(팀장)</option>
|
<option value="adradmin2">저작권위원회 관리자2(팀장)</option>
|
||||||
<option value="adradmin3">저작권위원회 관리자3(부서장)</option>
|
<option value="adradmin3">저작권위원회 관리자3(부서장)</option>
|
||||||
<option value="adradmin4">저작권위원회 관리자4(위원장)</option>
|
<option value="adradmin4">저작권위원회 관리자4(위원장)</option>
|
||||||
</select>
|
</select>
|
||||||
<br></br>
|
<br></br>
|
||||||
</kc:profile>
|
</kc:profile>
|
||||||
|
</c:if>
|
||||||
<div class="id_box">
|
<div class="id_box">
|
||||||
<p>ID</p>
|
<p>ID</p>
|
||||||
<label for="id_text"></label>
|
<label for="id_text"></label>
|
||||||
@ -223,7 +230,7 @@ function optCertNumSms(){
|
|||||||
<div class="id_box otp_phone_box">
|
<div class="id_box otp_phone_box">
|
||||||
<p>휴대폰번호</p>
|
<p>휴대폰번호</p>
|
||||||
<label for="phone"></label>
|
<label for="phone"></label>
|
||||||
<input type="text" name="phone" id="phone" placeholder="휴대폰번호를 입력해주세요." />
|
<input type="text" name="phone" id="phone" onkeyup="onlyNumber(this)" placeholder="휴대폰번호를 입력해주세요." />
|
||||||
<button type="button" class="otp_phone_btn" onclick="optCertNumSms();">인증번호받기</button>
|
<button type="button" class="otp_phone_btn" onclick="optCertNumSms();">인증번호받기</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="id_box otp_phone_box">
|
<div class="id_box otp_phone_box">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user