--- src/main/java/itn/let/cert/phone/service/CertPhoneService.java
+++ src/main/java/itn/let/cert/phone/service/CertPhoneService.java
... | ... | @@ -7,6 +7,7 @@ |
| 7 | 7 |
|
| 8 | 8 |
public interface CertPhoneService {
|
| 9 | 9 |
|
| 10 |
+ |
|
| 10 | 11 |
// public List<MberCertPhoneVO> selectMberCertPhoneList(String userId); |
| 11 | 12 |
// |
| 12 | 13 |
// public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); |
... | ... | @@ -21,11 +22,13 @@ |
| 21 | 22 |
|
| 22 | 23 |
public StatusResponse selectMberCertPhoneList(MberCertPhoneVO mberCertPhoneVO); |
| 23 | 24 |
|
| 24 |
- public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO); |
|
| 25 |
+ public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO, String moblphonNo); |
|
| 25 | 26 |
|
| 26 | 27 |
public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO); |
| 27 | 28 |
|
| 28 | 29 |
public List<MberCertPhoneVO> selectMberCertPhoneList(String userId); |
| 30 |
+ |
|
| 31 |
+ public StatusResponse selectMberCertPhoneListWhereUserId(String userId); |
|
| 29 | 32 |
|
| 30 | 33 |
public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO); |
| 31 | 34 |
|
... | ... | @@ -34,6 +37,7 @@ |
| 34 | 37 |
|
| 35 | 38 |
|
| 36 | 39 |
|
| 40 |
+ |
|
| 37 | 41 |
|
| 38 | 42 |
|
| 39 | 43 |
} |
--- src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java
+++ src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java
... | ... | @@ -28,10 +28,10 @@ |
| 28 | 28 |
|
| 29 | 29 |
|
| 30 | 30 |
@Override |
| 31 |
- public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO) {
|
|
| 32 |
- MberCertPhoneVO mberCertIpListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); |
|
| 33 |
- if(mberCertIpListVO != null) {
|
|
| 34 |
- return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now()); |
|
| 31 |
+ public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO, String moblphonNo) {
|
|
| 32 |
+ MberCertPhoneVO mberCertPhoneListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); |
|
| 33 |
+ if(mberCertPhoneListVO != null || mberCertPhoneListVO.getMbtlnum().equals(moblphonNo) ) {
|
|
| 34 |
+ return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now()); |
|
| 35 | 35 |
} |
| 36 | 36 |
certPhoneDAO.insertCertPhone(mberCertPhoneVO); |
| 37 | 37 |
return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now()); |
... | ... | @@ -60,6 +60,14 @@ |
| 60 | 60 |
|
| 61 | 61 |
|
| 62 | 62 |
@Override |
| 63 |
+ public StatusResponse selectMberCertPhoneListWhereUserId(String userId) {
|
|
| 64 |
+ return new StatusResponse(HttpStatus.OK, certPhoneDAO.selectMberCertPhoneList(userId), LocalDateTime.now()); |
|
| 65 |
+ } |
|
| 66 |
+ |
|
| 67 |
+ |
|
| 68 |
+ |
|
| 69 |
+ |
|
| 70 |
+ @Override |
|
| 63 | 71 |
public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) {
|
| 64 | 72 |
certPhoneDAO.updateMberCertPhone(mberCertPhoneVO); |
| 65 | 73 |
return new StatusResponse(HttpStatus.OK, "수정 하였습니다.", LocalDateTime.now()); |
... | ... | @@ -79,7 +87,7 @@ |
| 79 | 87 |
|
| 80 | 88 |
return new StatusResponse(HttpStatus.OK, "", LocalDateTime.now()); |
| 81 | 89 |
} |
| 82 |
- |
|
| 90 |
+ |
|
| 83 | 91 |
|
| 84 | 92 |
|
| 85 | 93 |
} |
--- src/main/java/itn/let/cert/phone/web/CertPhoneController.java
+++ src/main/java/itn/let/cert/phone/web/CertPhoneController.java
... | ... | @@ -65,8 +65,8 @@ |
| 65 | 65 |
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); |
| 66 | 66 |
} |
| 67 | 67 |
mberCertPhoneVO.setMberId(userId); |
| 68 |
- |
|
| 69 |
- return ResponseEntity.ok().body(certPhoneService.selectMberCertPhoneList(mberCertPhoneVO)); |
|
| 68 |
+ |
|
| 69 |
+ return ResponseEntity.ok().body(certPhoneService.selectMberCertPhoneListWhereUserId(userId)); |
|
| 70 | 70 |
} |
| 71 | 71 |
|
| 72 | 72 |
@RequestMapping(value = {"/cert/phone/findByCertPhoneInfo.do"})
|
... | ... | @@ -100,9 +100,9 @@ |
| 100 | 100 |
} |
| 101 | 101 |
mberCertPhoneVO.setFrstRegisterId(userId); |
| 102 | 102 |
mberCertPhoneVO.setMberId(userId); |
| 103 |
+ |
|
| 103 | 104 |
|
| 104 |
- |
|
| 105 |
- return ResponseEntity.ok().body(certPhoneService.insertCertPhone(mberCertPhoneVO)); |
|
| 105 |
+ return ResponseEntity.ok().body(certPhoneService.insertCertPhone(mberCertPhoneVO, loginVO.getMoblphonNo())); |
|
| 106 | 106 |
} |
| 107 | 107 |
|
| 108 | 108 |
@RequestMapping(value = {"/cert/phone/updateCertPhone.do"})
|
... | ... | @@ -119,6 +119,7 @@ |
| 119 | 119 |
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); |
| 120 | 120 |
} |
| 121 | 121 |
mberCertPhoneVO.setFrstRegisterId(userId); |
| 122 |
+ mberCertPhoneVO.setMberId(userId); |
|
| 122 | 123 |
|
| 123 | 124 |
|
| 124 | 125 |
return ResponseEntity.ok().body(certPhoneService.updateMberCertPhone(mberCertPhoneVO)); |
... | ... | @@ -138,6 +139,7 @@ |
| 138 | 139 |
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); |
| 139 | 140 |
} |
| 140 | 141 |
mberCertPhoneVO.setLastUpdusrId(userId); |
| 142 |
+ mberCertPhoneVO.setMberId(userId); |
|
| 141 | 143 |
|
| 142 | 144 |
|
| 143 | 145 |
|
... | ... | @@ -160,14 +162,15 @@ |
| 160 | 162 |
} |
| 161 | 163 |
mberCertPhoneVO.setMberId(userId); |
| 162 | 164 |
|
| 165 |
+ // 번호 중복 확인 |
|
| 166 |
+ MberCertPhoneVO mberCertIpListVO = (MberCertPhoneVO) certPhoneService.findByCertPhoneInfo(mberCertPhoneVO).getObject(); |
|
| 167 |
+ if(mberCertIpListVO != null || loginVO.getMoblphonNo().equals(mberCertPhoneVO.getMbtlnum()) ) {
|
|
| 168 |
+ return ResponseEntity.ok().body(new StatusResponse(HttpStatus.CONFLICT, "등록된 번호입니다.", LocalDateTime.now())); |
|
| 169 |
+ } |
|
| 163 | 170 |
|
| 164 |
- |
|
| 165 |
- |
|
| 166 |
- |
|
| 167 | 171 |
MjonMsgVO mjonMsgVO = new MjonMsgVO(); |
| 168 | 172 |
mjonMsgVO.setCallTo(mberCertPhoneVO.getMbtlnum()); |
| 169 | 173 |
MjonMsgReturnVO returnVO = mjonMsgDataService.sendSysMsgData(mjonMsgVO); |
| 170 |
- |
|
| 171 | 174 |
|
| 172 | 175 |
String resultSts = returnVO.getSendMsgCnt(); |
| 173 | 176 |
String resultBlockSts = returnVO.getSendMsgBlockCnt(); |
--- src/main/java/itn/let/uat/uia/web/EgovMypageController.java
+++ src/main/java/itn/let/uat/uia/web/EgovMypageController.java
... | ... | @@ -450,25 +450,6 @@ |
| 450 | 450 |
} |
| 451 | 451 |
|
| 452 | 452 |
|
| 453 |
- {
|
|
| 454 |
- /** |
|
| 455 |
- * 보안인증 본인인증 기능추가 |
|
| 456 |
- * 20241120 원영현 과장 추가 |
|
| 457 |
- * */ |
|
| 458 |
- KmcCertChecker kmcCertCheck = new KmcCertChecker(); |
|
| 459 |
- |
|
| 460 |
- //kmc 본인인증 실/개발 서버 구분 |
|
| 461 |
- String serverNm = ""; |
|
| 462 |
- if(request.getServerName().contains("192.168.0.60") || request.getServerName().contains("localhost")) {
|
|
| 463 |
- serverNm = request.getScheme() + "://192.168.0.60:8085"; |
|
| 464 |
- }else{
|
|
| 465 |
- serverNm = request.getScheme() + "://www.munjaon.co.kr"; |
|
| 466 |
- } |
|
| 467 |
- |
|
| 468 |
- AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); |
|
| 469 |
- model.addAttribute("certVO", certVO);
|
|
| 470 |
- } |
|
| 471 |
- |
|
| 472 | 453 |
|
| 473 | 454 |
return "web/user/mberInfoIndex"; |
| 474 | 455 |
} |
... | ... | @@ -2953,6 +2934,26 @@ |
| 2953 | 2934 |
if(loginVO == null) {
|
| 2954 | 2935 |
return "redirect:/web/user/login/login.do"; |
| 2955 | 2936 |
} |
| 2937 |
+ |
|
| 2938 |
+ |
|
| 2939 |
+ {
|
|
| 2940 |
+ /** |
|
| 2941 |
+ * 보안인증 본인인증 기능추가 |
|
| 2942 |
+ * 20241120 원영현 과장 추가 |
|
| 2943 |
+ * */ |
|
| 2944 |
+ KmcCertChecker kmcCertCheck = new KmcCertChecker(); |
|
| 2945 |
+ |
|
| 2946 |
+ //kmc 본인인증 실/개발 서버 구분 |
|
| 2947 |
+ String serverNm = ""; |
|
| 2948 |
+ if(request.getServerName().contains("192.168.0.60") || request.getServerName().contains("localhost")) {
|
|
| 2949 |
+ serverNm = request.getScheme() + "://192.168.0.60:8085"; |
|
| 2950 |
+ }else{
|
|
| 2951 |
+ serverNm = request.getScheme() + "://www.munjaon.co.kr"; |
|
| 2952 |
+ } |
|
| 2953 |
+ |
|
| 2954 |
+ AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); |
|
| 2955 |
+ model.addAttribute("certVO", certVO);
|
|
| 2956 |
+ } |
|
| 2956 | 2957 |
|
| 2957 | 2958 |
model.addAttribute("pageTab", "mberSecureLogin");
|
| 2958 | 2959 |
return "web/user/mberSecureLogin"; |
--- src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp
... | ... | @@ -476,10 +476,9 @@ |
| 476 | 476 |
<span class="user_name"><c:out value="${mberManageVO.mberNm}"/></span>
|
| 477 | 477 |
회원님 반갑습니다 |
| 478 | 478 |
</p> |
| 479 |
-<%-- <c:if test="${loginVO.dept eq 'p'}"> --%>
|
|
| 480 |
-<!-- <button type="button" class="btnType" onclick="location.href='/web/user/membershipChange.do'">기업회원전환</button> --> |
|
| 481 |
- <button type="button" class="btnType" id="showLoginBtn">보안로그인</button> |
|
| 482 |
-<%-- </c:if> --%> |
|
| 479 |
+ <c:if test="${loginVO.dept eq 'p'}">
|
|
| 480 |
+ <button type="button" class="btnType" onclick="location.href='/web/user/membershipChange.do'">기업회원전환</button> |
|
| 481 |
+ </c:if> |
|
| 483 | 482 |
</div> |
| 484 | 483 |
<div class="send_price"> |
| 485 | 484 |
<div class="price_title">나의<br />단가</div> |
... | ... | @@ -582,119 +581,6 @@ |
| 582 | 581 |
</div> |
| 583 | 582 |
</div> |
| 584 | 583 |
|
| 585 |
- <!-- 보안로그인 --> |
|
| 586 |
- <!-- 보안로그인 --> |
|
| 587 |
- <!-- 보안로그인 --> |
|
| 588 |
- <!-- 보안로그인 --> |
|
| 589 |
- <!-- 보안로그인 --> |
|
| 590 |
-<!-- <div class="security_login" id="securityLogin" style="display: none;"> --> |
|
| 591 |
- <div class="security_login" id="securityLogin"> |
|
| 592 |
- |
|
| 593 |
- <ul class="explanation_wrap box info"> |
|
| 594 |
- <li>· 사이트 부정로그인으로 인한 피해를 방지할 수 있는 2차 로그인 인증 서비스입니다. </li> |
|
| 595 |
- <li>· 인증 휴대폰번호 추가 등록 또는 IP 접속 허용을 통해 편리한 사용이 가능합니다.</li> |
|
| 596 |
- <li>· 보안로그인 기능을 사용할 경우 로그인 시 등록한 휴대폰번호로 추가 인증이 진행됩니다.</li> |
|
| 597 |
- </ul> |
|
| 598 |
- |
|
| 599 |
- |
|
| 600 |
- <!-- 보안로그인 설정 --> |
|
| 601 |
- <div class="security_set box"> |
|
| 602 |
- <p class="dashboard_title">보안로그인</p> |
|
| 603 |
- |
|
| 604 |
- <div class="set_area"> |
|
| 605 |
- <p class="lately_date">최근 변경일시 : <span>2024-11-01 12:49</span></p> |
|
| 606 |
- |
|
| 607 |
- <div class="tab_depth1"> |
|
| 608 |
- <a href="#none" class="on" onclick="openKMCISWindow()">ON</a> |
|
| 609 |
- <a href="#none">OFF</a> |
|
| 610 |
- </div> |
|
| 611 |
- </div> |
|
| 612 |
- </div> |
|
| 613 |
- <!-- //보안로그인 설정 --> |
|
| 614 |
- |
|
| 615 |
- <!-- 접속 IP관리 --> |
|
| 616 |
- <div class="title_area"> |
|
| 617 |
- <p class="dashboard_title">접속 IP 관리</p> |
|
| 618 |
- <p class="qmMark">?</p> |
|
| 619 |
- <div class="hover_cont" style="width:380px;left:160px;top:25px;"> |
|
| 620 |
- <p>접속 IP를 미리 등록할 경우 2차 로그인 인증 없이 접속이 가능합니다. <br> |
|
| 621 |
- <span>(공용 PC는 보안상의 이유로 등록을 권장하지 않습니다.)</span></p> |
|
| 622 |
- </div> |
|
| 623 |
- <button type="button" class="btn_plus btn_ip_plus"><img src="/publish/images/content/mypage_plus.png" alt="등록버튼"></button> |
|
| 624 |
- </div> |
|
| 625 |
- |
|
| 626 |
- <div class="table_wrap ip_table"> |
|
| 627 |
- <table> |
|
| 628 |
- <colgroup> |
|
| 629 |
- <col style="width: 26%;"> |
|
| 630 |
- <col style="width: auto;"> |
|
| 631 |
- <col style="width: 26%;"> |
|
| 632 |
- <col style="width: 100px;"> |
|
| 633 |
- </colgroup> |
|
| 634 |
- <thead> |
|
| 635 |
- <tr> |
|
| 636 |
- <th scope="col">허용IP</th> |
|
| 637 |
- <th scope="col">메모</th> |
|
| 638 |
- <th scope="col">등록일시</th> |
|
| 639 |
- <th scope="col">관리</th> |
|
| 640 |
- </tr> |
|
| 641 |
- </thead> |
|
| 642 |
- <tbody> |
|
| 643 |
- <tr> |
|
| 644 |
- <td colspan="4">등록된 IP 주소가 없습니다.</td> |
|
| 645 |
- </tr> |
|
| 646 |
- </tbody> |
|
| 647 |
- </table> |
|
| 648 |
- </div> |
|
| 649 |
- <!-- //접속 IP관리 --> |
|
| 650 |
- |
|
| 651 |
- <!-- 인증 휴대폰번호 관리 --> |
|
| 652 |
- <div class="title_area"> |
|
| 653 |
- <p class="dashboard_title">인증 휴대폰번호 관리</p> |
|
| 654 |
- <p class="qmMark">?</p> |
|
| 655 |
- <div class="hover_cont" style="width:330px;left:240px;top:25px;"> |
|
| 656 |
- <p>인증에 사용할 휴대폰번호를 추가로 등록하여 관리할 수 있습니다. <br> |
|
| 657 |
- (등록 및 삭제 시 휴대폰 본인인증 필요)</p> |
|
| 658 |
- </div> |
|
| 659 |
- <button type="button" data-tooltip="popup05" class="btn_plus"><img src="/publish/images/content/mypage_plus.png" alt="더보기"></button> |
|
| 660 |
- </div> |
|
| 661 |
- |
|
| 662 |
- <div class="table_wrap"> |
|
| 663 |
- <table> |
|
| 664 |
- <colgroup> |
|
| 665 |
- <col style="width: calc((100% - 100px)/2);"> |
|
| 666 |
- <col style="width: calc((100% - 100px)/2);"> |
|
| 667 |
- <col style="width: 100px;"> |
|
| 668 |
- </colgroup> |
|
| 669 |
- <thead> |
|
| 670 |
- <tr> |
|
| 671 |
- <th scope="col">휴대폰번호</th> |
|
| 672 |
- <th scope="col">등록일시</th> |
|
| 673 |
- <th scope="col">관리</th> |
|
| 674 |
- </tr> |
|
| 675 |
- </thead> |
|
| 676 |
- <tbody> |
|
| 677 |
- <tr> |
|
| 678 |
- <td>010-0000-0000</td> |
|
| 679 |
- <td>2024-11-04 11:54</td> |
|
| 680 |
- <td>-</td> |
|
| 681 |
- </tr> |
|
| 682 |
- <tr> |
|
| 683 |
- <td>192.168.0.0</td> |
|
| 684 |
- <td>dadfadfjadkfjalkdjfajflajdlfjaldjflajd</td> |
|
| 685 |
- <td><button type="button" class="btnType btn_text btn_lightgray fill btn_28">삭제</button></td> |
|
| 686 |
- </tr> |
|
| 687 |
- </tbody> |
|
| 688 |
- </table> |
|
| 689 |
- </div> |
|
| 690 |
- <!-- //인증 휴대폰번호 관리 --> |
|
| 691 |
- </div> |
|
| 692 |
- <!-- //보안로그인 --> |
|
| 693 |
- <!-- //보안로그인 --> |
|
| 694 |
- <!-- //보안로그인 --> |
|
| 695 |
- <!-- //보안로그인 --> |
|
| 696 |
- <!-- //보안로그인 --> |
|
| 697 |
- <!-- //보안로그인 --> |
|
| 698 | 584 |
|
| 699 | 585 |
<div class="my_dashboard_cont3"> |
| 700 | 586 |
<p class="dashboard_title">이용내역</p> |
--- src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp
... | ... | @@ -3,6 +3,7 @@ |
| 3 | 3 |
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> |
| 4 | 4 |
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> |
| 5 | 5 |
|
| 6 |
+ |
|
| 6 | 7 |
<script language=javascript> |
| 7 | 8 |
|
| 8 | 9 |
|
... | ... | @@ -19,9 +20,13 @@ |
| 19 | 20 |
// on/off 시 confirm 창 노출 |
| 20 | 21 |
$('.security_set .tab_depth1 a').click(function () {
|
| 21 | 22 |
if ($(this).text().trim() == "ON") {
|
| 22 |
- confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다");
|
|
| 23 |
+ if(!confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다")){
|
|
| 24 |
+ console.log('???');
|
|
| 25 |
+ return false; |
|
| 26 |
+ } |
|
| 23 | 27 |
} else {
|
| 24 | 28 |
confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.");
|
| 29 |
+ openKMCISWindow(); |
|
| 25 | 30 |
} |
| 26 | 31 |
}); |
| 27 | 32 |
|
... | ... | @@ -45,6 +50,11 @@ |
| 45 | 50 |
if(returnData.status == 'OK'){
|
| 46 | 51 |
alert(returnData.object.msg); |
| 47 | 52 |
$("#certReqPhone").prop("disabled", true);
|
| 53 |
+ } |
|
| 54 |
+ else if(returnData.status == 'CONFLICT') |
|
| 55 |
+ {
|
|
| 56 |
+ alert(returnData.message); |
|
| 57 |
+ return false; |
|
| 48 | 58 |
} |
| 49 | 59 |
else |
| 50 | 60 |
{
|
... | ... | @@ -178,10 +188,81 @@ |
| 178 | 188 |
error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
| 179 | 189 |
}); |
| 180 | 190 |
}); |
| 191 |
+ |
|
| 192 |
+ |
|
| 193 |
+ $(document).on('click', '.phoneModiBtn', function () {
|
|
| 194 |
+ // 현재 클릭된 버튼의 tr 요소를 가져옴 |
|
| 195 |
+ const $tr = $(this).closest('tr');
|
|
| 196 |
+ |
|
| 197 |
+ // 별칭과 메모 td 요소를 가져옴 |
|
| 198 |
+ const $aliasTd = $tr.find('td').eq(1); // 두 번째 컬럼(별칭)
|
|
| 199 |
+ const $memoTd = $tr.find('td').eq(2); // 세 번째 컬럼(메모)
|
|
| 200 |
+ |
|
| 201 |
+ // 기존 텍스트 값 저장 |
|
| 202 |
+ const aliasValue = $aliasTd.text().trim(); // 별칭 값 |
|
| 203 |
+ const memoValue = $memoTd.text().trim(); // 메모 값 |
|
| 204 |
+ |
|
| 205 |
+ console.log('aliasValue : ', aliasValue);
|
|
| 206 |
+ console.log('memoValue : ', memoValue);
|
|
| 207 |
+ |
|
| 208 |
+ // td 내용을 input 필드로 변경 |
|
| 209 |
+ $aliasTd.html('<input type="text" class="input_text" maxlength="12" value="' + aliasValue + '">');
|
|
| 210 |
+ $memoTd.html('<input type="text" class="input_text" value="' + memoValue + '">');
|
|
| 211 |
+ |
|
| 212 |
+ // aliasTd 내의 input 필드에 포커스 설정 |
|
| 213 |
+ const $aliasInput = $aliasTd.find('.input_text');
|
|
| 214 |
+ $aliasInput.focus().val($aliasInput.val()); // 포커스 후 커서를 맨 끝으로 이동 |
|
| 215 |
+ |
|
| 216 |
+ $(this).removeClass("phoneModiBtn").attr("onclick", "fn_phoneSave(this);").text("저장");
|
|
| 217 |
+ }); |
|
| 218 |
+ |
|
| 181 | 219 |
|
| 182 | 220 |
|
| 183 | 221 |
findAllCertIp(); |
| 222 |
+ findAllCertPhone(); |
|
| 184 | 223 |
}); |
| 224 |
+ |
|
| 225 |
+function fn_phoneSave(obj){
|
|
| 226 |
+ // 현재 클릭된 버튼의 tr 요소를 가져옴 |
|
| 227 |
+ const $tr = $(obj).closest('tr'); // 'this' 대신 전달된 'obj' 사용
|
|
| 228 |
+ |
|
| 229 |
+ // 각 td 요소에서 데이터를 추출 |
|
| 230 |
+ const mbtlnum = $tr.find('td').eq(0).text().trim(); // 첫 번째 컬럼(번호)
|
|
| 231 |
+ const certAlias = $tr.find('td').eq(1).find('input').val().trim(); // 두 번째 컬럼(별칭)
|
|
| 232 |
+ const certMemo = $tr.find('td').eq(2).find('input').val().trim(); // 세 번째 컬럼(메모)
|
|
| 233 |
+ |
|
| 234 |
+ // 콘솔 출력 |
|
| 235 |
+ console.log('mbtlnum : ', mbtlnum);
|
|
| 236 |
+ console.log('certAlias : ', certAlias);
|
|
| 237 |
+ console.log('certMemo : ', certMemo);
|
|
| 238 |
+ |
|
| 239 |
+ |
|
| 240 |
+ var params = {
|
|
| 241 |
+ "mbtlnum" : mbtlnum |
|
| 242 |
+ , "certAlias" : certAlias |
|
| 243 |
+ , "certMemo" : certMemo |
|
| 244 |
+ } |
|
| 245 |
+ |
|
| 246 |
+ $.ajax({
|
|
| 247 |
+ type: "POST", |
|
| 248 |
+ url: "/cert/phone/updateCertPhone.do", |
|
| 249 |
+ data: params, |
|
| 250 |
+ dataType:'json', |
|
| 251 |
+ async: false, |
|
| 252 |
+ success: function (returnData) {
|
|
| 253 |
+ if(returnData.status == 'OK'){
|
|
| 254 |
+ findAllCertPhone(); |
|
| 255 |
+ } |
|
| 256 |
+ else |
|
| 257 |
+ {
|
|
| 258 |
+ alert("오류가 발생하였습니다.");
|
|
| 259 |
+ } |
|
| 260 |
+ }, |
|
| 261 |
+ error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
|
| 262 |
+ }); |
|
| 263 |
+ |
|
| 264 |
+ |
|
| 265 |
+} |
|
| 185 | 266 |
|
| 186 | 267 |
|
| 187 | 268 |
function regCertPhone(params){
|
... | ... | @@ -194,7 +275,9 @@ |
| 194 | 275 |
async: false, |
| 195 | 276 |
success: function (returnData) {
|
| 196 | 277 |
if(returnData.status == 'OK'){
|
| 197 |
- findAllCertIp(); |
|
| 278 |
+ $('.tooltip-close').click()
|
|
| 279 |
+ alert(returnData.message); |
|
| 280 |
+ findAllCertPhone(); |
|
| 198 | 281 |
}else if(returnData.status == 'CONFLICT'){
|
| 199 | 282 |
alert(returnData.message); |
| 200 | 283 |
return false; |
... | ... | @@ -264,16 +347,17 @@ |
| 264 | 347 |
|
| 265 | 348 |
$.ajax({
|
| 266 | 349 |
type: "POST", |
| 267 |
- url: "/cert/ip/selectMberCertIpList.do", |
|
| 350 |
+ url: "/cert/phone/selectMberCertPhoneList.do", |
|
| 268 | 351 |
data: null, |
| 269 | 352 |
dataType:'json', |
| 270 | 353 |
async: false, |
| 271 | 354 |
success: function (returnData) {
|
| 355 |
+ console.log('returnData : ', returnData);
|
|
| 272 | 356 |
if (returnData.status === "OK") {
|
| 273 | 357 |
const objects = returnData.object; // 배열 데이터 |
| 274 | 358 |
|
| 275 | 359 |
// tbody의 기존 내용 삭제 |
| 276 |
- const $tbody = $("#ipTable tbody");
|
|
| 360 |
+ const $tbody = $("#phoneTable tbody");
|
|
| 277 | 361 |
$tbody.empty(); |
| 278 | 362 |
|
| 279 | 363 |
// 배열 데이터를 기반으로 tr 생성 후 tbody에 추가 |
... | ... | @@ -281,23 +365,39 @@ |
| 281 | 365 |
const $tr = $("<tr></tr>"); // tr 요소 생성
|
| 282 | 366 |
|
| 283 | 367 |
// 각 td 요소 생성 |
| 284 |
- const $certIp = $("<td></td>").text(obj.certIp || "");
|
|
| 285 |
- const $certMemo = $("<td></td>").text(obj.certMemo || "");
|
|
| 368 |
+ const $mbtlnum = $("<td></td>").text(obj.mbtlnum || "");
|
|
| 369 |
+ const $certAlias = $("<td></td>").text(obj.certAlias || "-");
|
|
| 370 |
+ const $certMemo = $("<td></td>").text(obj.certMemo || "-");
|
|
| 286 | 371 |
const $frstRegistPnttm = $("<td></td>").text(obj.frstRegistPnttm || "등록되지 않음");
|
| 287 |
- const $deleteBtn = $("<button></button>")
|
|
| 288 |
- .addClass("btnType btn_text btn_lightgray fill btn_28")
|
|
| 289 |
- .text("삭제")
|
|
| 290 |
- .attr("type", "button")
|
|
| 291 |
- .attr("id", "ipDelBtn")
|
|
| 292 |
- .on("click", function() {
|
|
| 293 |
- deleteRow(obj.certIp); // 삭제 버튼 클릭 시 실행 |
|
| 294 |
- }); |
|
| 372 |
+ |
|
| 295 | 373 |
|
| 374 |
+ const $buttonTd = $("<td></td>");
|
|
| 375 |
+ |
|
| 376 |
+ if (obj.frstRegistPnttm !== "-") {
|
|
| 377 |
+ const $modiBtn = $("<button></button>")
|
|
| 378 |
+ .addClass("btnType btnType5 btn_edit phoneModiBtn")
|
|
| 379 |
+ .text("수정")
|
|
| 380 |
+ .attr("type", "button")
|
|
| 381 |
+ .attr("style", "margin:0 5px 0 0;");
|
|
| 382 |
+ |
|
| 383 |
+ |
|
| 384 |
+ const $deleteBtn = $("<button></button>")
|
|
| 385 |
+ .addClass("btnType btn_text btn_lightgray fill btn_28")
|
|
| 386 |
+ .text("삭제")
|
|
| 387 |
+ .attr("type", "button")
|
|
| 388 |
+ .attr("id", "phoneDelBtn")
|
|
| 389 |
+ .on("click", function() {
|
|
| 390 |
+ fn_PDelRow(obj.mbtlnum); // 삭제 버튼 클릭 시 실행 |
|
| 391 |
+ }); |
|
| 392 |
+ $buttonTd.append($modiBtn, $deleteBtn); |
|
| 393 |
+ }else{
|
|
| 394 |
+ // 등록일시가 없으면 빈 td로 유지 |
|
| 395 |
+ $buttonTd.text("-");
|
|
| 396 |
+ } |
|
| 296 | 397 |
// 관리 버튼을 감쌀 td 생성 |
| 297 |
- const $deleteTd = $("<td></td>").append($deleteBtn);
|
|
| 298 | 398 |
|
| 299 | 399 |
// tr에 td 추가 |
| 300 |
- $tr.append($certIp, $certMemo, $frstRegistPnttm, $deleteTd); |
|
| 400 |
+ $tr.append($mbtlnum, $certAlias, $certMemo, $frstRegistPnttm, $buttonTd); |
|
| 301 | 401 |
|
| 302 | 402 |
// tbody에 tr 추가 |
| 303 | 403 |
$tbody.append($tr); |
... | ... | @@ -310,6 +410,33 @@ |
| 310 | 410 |
}); |
| 311 | 411 |
} |
| 312 | 412 |
|
| 413 |
+function fn_PDelRow(p_mbtlnum){
|
|
| 414 |
+ console.log('p_mbtlnum : ', p_mbtlnum);
|
|
| 415 |
+ var params = {
|
|
| 416 |
+ "mbtlnum" : p_mbtlnum |
|
| 417 |
+ } |
|
| 418 |
+ if(!confirm("인증 휴대폰번호를 삭제 하시겠습니까?")){
|
|
| 419 |
+ return false; |
|
| 420 |
+ } |
|
| 421 |
+ $.ajax({
|
|
| 422 |
+ type: "POST", |
|
| 423 |
+ url: "/cert/phone/deleteCertPhone.do", |
|
| 424 |
+ data: params, |
|
| 425 |
+ dataType:'json', |
|
| 426 |
+ async: false, |
|
| 427 |
+ success: function (returnData) {
|
|
| 428 |
+ if(returnData.status == 'OK'){
|
|
| 429 |
+ findAllCertPhone(); |
|
| 430 |
+ } |
|
| 431 |
+ else |
|
| 432 |
+ {
|
|
| 433 |
+ alert("오류가 발생하였습니다.");
|
|
| 434 |
+ } |
|
| 435 |
+ }, |
|
| 436 |
+ error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
|
| 437 |
+ }); |
|
| 438 |
+ |
|
| 439 |
+} |
|
| 313 | 440 |
//IP 삭제 |
| 314 | 441 |
function deleteRow(p_ip){
|
| 315 | 442 |
|
... | ... | @@ -338,6 +465,44 @@ |
| 338 | 465 |
error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
| 339 | 466 |
}); |
| 340 | 467 |
} |
| 468 |
+ |
|
| 469 |
+ |
|
| 470 |
+ |
|
| 471 |
+ |
|
| 472 |
+ |
|
| 473 |
+ |
|
| 474 |
+//휴대푠 번호 등록 [시작]-------------------------------------------------------------------------------------------- |
|
| 475 |
+window.name = "kmcis_web_sample"; |
|
| 476 |
+var KMCIS_window; |
|
| 477 |
+//휴대폰 인증팝업 열기 |
|
| 478 |
+function openKMCISWindow(){
|
|
| 479 |
+ var UserAgent = navigator.userAgent; |
|
| 480 |
+ /* 모바일 접근 체크*/ |
|
| 481 |
+ // 모바일일 경우 (변동사항 있을경우 추가 필요) |
|
| 482 |
+ if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null) {
|
|
| 483 |
+ document.reqKMCISForm.target = 'KMCISWindow'; // 모바일 |
|
| 484 |
+ } else { // 모바일이 아닐 경우
|
|
| 485 |
+ KMCIS_window = window.open('', 'KMCISWindow', 'width=425, height=550, resizable=0, scrollbars=no, status=0, titlebar=0, toolbar=0, left=435, top=250' );
|
|
| 486 |
+ |
|
| 487 |
+ if(KMCIS_window == null){
|
|
| 488 |
+ alert(" ※ 윈도우 XP SP2 또는 인터넷 익스플로러 7 사용자일 경우에는 \n 화면 상단에 있는 팝업 차단 알림줄을 클릭하여 팝업을 허용해 주시기 바랍니다. \n\n※ MSN,야후,구글 팝업 차단 툴바가 설치된 경우 팝업허용을 해주시기 바랍니다.");
|
|
| 489 |
+ } |
|
| 490 |
+ |
|
| 491 |
+ document.reqKMCISForm.target = 'KMCISWindow'; |
|
| 492 |
+ } |
|
| 493 |
+ |
|
| 494 |
+ document.reqKMCISForm.action = 'https://www.kmcert.com/kmcis/web/kmcisReq.jsp'; |
|
| 495 |
+ document.reqKMCISForm.submit(); |
|
| 496 |
+} |
|
| 497 |
+ |
|
| 498 |
+///web/user/selectSecurityAuthn.do 리다이렉트 URL |
|
| 499 |
+ |
|
| 500 |
+//자식창에서 호출 |
|
| 501 |
+function callTo() {
|
|
| 502 |
+ alert("호출입니다.");
|
|
| 503 |
+} |
|
| 504 |
+ |
|
| 505 |
+//휴대푠 번호 등록 [끝]-------------------------------------------------------------------------------------------- |
|
| 341 | 506 |
|
| 342 | 507 |
</script> |
| 343 | 508 |
|
... | ... | @@ -425,6 +590,7 @@ |
| 425 | 590 |
<p class="lately_date">최근 변경일시 : <span>2024-11-01 12:49</span></p> |
| 426 | 591 |
|
| 427 | 592 |
<div class="tab_depth1"> |
| 593 |
+<!-- <a href="#none" class="on">ON</a> --> |
|
| 428 | 594 |
<a href="#none" class="on">ON</a> |
| 429 | 595 |
<a href="#none">OFF</a> |
| 430 | 596 |
</div> |
... | ... | @@ -433,23 +599,23 @@ |
| 433 | 599 |
<!-- //보안로그인 설정(허용 IP 아닌 경우) --> |
| 434 | 600 |
|
| 435 | 601 |
<!-- 보안로그인 설정(허용 IP인 경우) --> |
| 436 |
- <div class="security_set box"> |
|
| 437 |
- <div class="title_wrap"> |
|
| 438 |
- <p class="dashboard_title">보안로그인</p> |
|
| 439 |
- <div class="title_box ip_add_wrap"> |
|
| 440 |
- <span>현재 접속중인 IP : <b>000.000.000.00 [허용 IP]</b></span> |
|
| 441 |
- </div> |
|
| 442 |
- </div> |
|
| 602 |
+<!-- <div class="security_set box"> --> |
|
| 603 |
+<!-- <div class="title_wrap"> --> |
|
| 604 |
+<!-- <p class="dashboard_title">보안로그인</p> --> |
|
| 605 |
+<!-- <div class="title_box ip_add_wrap"> --> |
|
| 606 |
+<!-- <span>현재 접속중인 IP : <b>000.000.000.00 [허용 IP]</b></span> --> |
|
| 607 |
+<!-- </div> --> |
|
| 608 |
+<!-- </div> --> |
|
| 443 | 609 |
|
| 444 |
- <div class="set_area"> |
|
| 445 |
- <p class="lately_date">최근 변경일시 : <span>2024-11-01 12:49</span></p> |
|
| 610 |
+<!-- <div class="set_area"> --> |
|
| 611 |
+<!-- <p class="lately_date">최근 변경일시 : <span>2024-11-01 12:49</span></p> --> |
|
| 446 | 612 |
|
| 447 |
- <div class="tab_depth1"> |
|
| 448 |
- <a href="#none" class="on">ON</a> |
|
| 449 |
- <a href="#none">OFF</a> |
|
| 450 |
- </div> |
|
| 451 |
- </div> |
|
| 452 |
- </div> |
|
| 613 |
+<!-- <div class="tab_depth1"> --> |
|
| 614 |
+<!-- <a href="#none" class="on">ON</a> --> |
|
| 615 |
+<!-- <a href="#none">OFF</a> --> |
|
| 616 |
+<!-- </div> --> |
|
| 617 |
+<!-- </div> --> |
|
| 618 |
+<!-- </div> --> |
|
| 453 | 619 |
<!-- //보안로그인 설정(허용 IP인 경우) --> |
| 454 | 620 |
|
| 455 | 621 |
<!-- 인증 휴대폰번호 관리 --> |
... | ... | @@ -463,13 +629,13 @@ |
| 463 | 629 |
<button type="button" data-tooltip="popup05" class="btn_plus"><img src="/publish/images/content/mypage_plus.png" alt="더보기"></button> |
| 464 | 630 |
</div> |
| 465 | 631 |
|
| 466 |
- <div class="table_wrap"> |
|
| 632 |
+ <div class="table_wrap" id="phoneTable"> |
|
| 467 | 633 |
<table> |
| 468 | 634 |
<colgroup> |
| 469 |
- <col style="width: 26%;"> |
|
| 635 |
+ <col style="width: 140px;"> |
|
| 470 | 636 |
<col style="width: auto;"> |
| 471 | 637 |
<col style="width: auto;"> |
| 472 |
- <col style="width: 26%;"> |
|
| 638 |
+ <col style="width: 160px;"> |
|
| 473 | 639 |
<col style="width: 140px;"> |
| 474 | 640 |
</colgroup> |
| 475 | 641 |
<thead> |
... | ... | @@ -544,7 +710,7 @@ |
| 544 | 710 |
|
| 545 | 711 |
<!-- 로그인 내역 --> |
| 546 | 712 |
<div class="title_area"> |
| 547 |
- <p class="dashboard_title">로그인 내역 <span class="small_text">로그인 내역은 최대 90일까지만 보관됩니다.</span></p> |
|
| 713 |
+ <p class="dashboard_title">로그인 내역 <span class="small_text">로그인 내역은 최대 3개월까지만 보관됩니다.</span></p> |
|
| 548 | 714 |
</div> |
| 549 | 715 |
|
| 550 | 716 |
<div class="table_wrap"> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?