diff --git a/src/main/java/itn/let/cert/ip/service/CertIpService.java b/src/main/java/itn/let/cert/ip/service/CertIpService.java new file mode 100644 index 00000000..1562df7d --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/CertIpService.java @@ -0,0 +1,34 @@ +package itn.let.cert.ip.service; + +import java.util.List; + +import itn.let.lett.service.LetterVO; +import itn.let.mail.service.StatusResponse; +import itn.let.mjo.addr.service.AddrVO; +import itn.let.mjo.msg.service.MjonMsgVO; +import itn.let.sym.site.service.JoinSettingVO; +import itn.let.uat.uia.service.MberCertPhoneVO; +import itn.let.uat.uia.web.SendLogVO; +import itn.let.uss.umt.service.MberManageVO; + +public interface CertIpService { + +// public List selectMberCertPhoneList(String userId); +// +// public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public List selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); + + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO); + + public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO); + + + +} diff --git a/src/main/java/itn/let/cert/ip/service/MberCertIpVO.java b/src/main/java/itn/let/cert/ip/service/MberCertIpVO.java new file mode 100644 index 00000000..11ebef19 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/MberCertIpVO.java @@ -0,0 +1,71 @@ +package itn.let.cert.ip.service; + +import itn.let.uss.umt.service.UserDefaultVO; + +/** + * + * @author : 이호영 + * @fileName : MberCertPhoneVO.java + * @date : 2024.11.18 + * @description : 발신번호 lettngnrlmber_cert_ip 관련 vo + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.11.18 이호영 최초 생성 + * + * + * + */ +public class MberCertIpVO extends UserDefaultVO{ + + + /** + * @description : + */ + private static final long serialVersionUID = 1L; + + + private String mberId; + private String certIp; + private String certMemo; + private String certUseYn; + private String certMbtlnum; + + + + + + public String getMberId() { + return mberId; + } + public void setMberId(String mberId) { + this.mberId = mberId; + } + public String getCertIp() { + return certIp; + } + public void setCertIp(String certIp) { + this.certIp = certIp; + } + public String getCertMemo() { + return certMemo; + } + public void setCertMemo(String certMemo) { + this.certMemo = certMemo; + } + public String getCertUseYn() { + return certUseYn; + } + public void setCertUseYn(String certUseYn) { + this.certUseYn = certUseYn; + } + public String getCertMbtlnum() { + return certMbtlnum; + } + public void setCertMbtlnum(String certMbtlnum) { + this.certMbtlnum = certMbtlnum; + } + + + +} diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java b/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java new file mode 100644 index 00000000..904a3318 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java @@ -0,0 +1,32 @@ +package itn.let.cert.ip.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.lett.service.LetterVO; +import itn.let.mail.service.StatusResponse; +import itn.let.mjo.addr.service.AddrVO; +import itn.let.mjo.msg.service.MjonMsgVO; +import itn.let.mjo.msgdata.service.MjonMsgDataVO; +import itn.let.sym.site.service.JoinSettingVO; +import itn.let.uat.uia.service.MberCertPhoneVO; +import itn.let.uat.uia.web.SendLogVO; +import itn.let.uss.umt.service.MberManageVO; + +@Repository("CertIpDAO") +public class CertIpDAO extends EgovAbstractDAO { + + + + public List selectMberCertIpList(MberCertIpVO mberCertPhoneVO) { + return (List) list("MberCertIpVO.selectMberCertIpList", mberCertPhoneVO); + } + + public void insertCertIp(MberCertIpVO mberCertIpVO) { + insert("MberCertIpVO.insertCertIp", mberCertIpVO); + } + +} diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java b/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java new file mode 100644 index 00000000..f44dcdb4 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java @@ -0,0 +1,36 @@ +package itn.let.cert.ip.service.impl; + +import java.time.LocalDateTime; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import itn.let.cert.ip.service.CertIpService; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.mail.service.StatusResponse; + +@Service("CertIpService") +public class CertIpServiceImpl extends EgovAbstractServiceImpl implements CertIpService { + + @Resource(name = "CertIpDAO") + private CertIpDAO certIpDAO; + + + @Override + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO) { + List mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); + } + + + @Override + public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO) { + certIpDAO.insertCertIp(mberCertIpVO); + return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now()); + } + +} diff --git a/src/main/java/itn/let/cert/ip/web/CertIpController.java b/src/main/java/itn/let/cert/ip/web/CertIpController.java new file mode 100644 index 00000000..9cbe129a --- /dev/null +++ b/src/main/java/itn/let/cert/ip/web/CertIpController.java @@ -0,0 +1,140 @@ +package itn.let.cert.ip.web; + +import java.time.LocalDateTime; + +import javax.annotation.Resource; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import itn.com.cmm.LoginVO; +import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.cert.ip.service.CertIpService; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.mail.service.StatusResponse; + +/** + * + * @author : 이호영 + * @fileName : CertIpController.java + * @date : 2024.11.19 + * @description : 허용 IP 관련 컨트롤러 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.11.19 이호영 최초 생성 + * + * + * + */ +@Controller +public class CertIpController { + + + /* certIpService */ + @Resource(name = "CertIpService") + private CertIpService certIpService; + + + @RequestMapping(value = {"/cert/ip/selectMberCertIpList.do"}) + public ResponseEntity selectMberCertIpList(MberCertIpVO mberCertPhoneVO) throws Exception { + + System.out.println("????????????????????????????"); + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId == null) { + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); + } + mberCertPhoneVO.setMberId(userId); + return ResponseEntity.ok().body(certIpService.selectMberCertIpList(mberCertPhoneVO)); + } + + + @RequestMapping(value = {"/cert/ip/insertCertIp.do"}) + public ResponseEntity insertCertIp(MberCertIpVO mberCertIpVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId == null) { + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); + } + mberCertIpVO.setFrstRegisterId(userId); + mberCertIpVO.setMberId(userId); + + + return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO)); + } + /* + + @RequestMapping(value = {"/cert/ip/findByCertIp.do"}) + public ResponseEntity findByCertIp(MberCertIpVO mberCertPhoneVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId == null) { + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); + } + return ResponseEntity.ok().body(certIpService.findByCertPhoneInfo(mberCertPhoneVO)); + } + + @RequestMapping(value = {"/uss/umt/user/updateCertPhone.do"}) + public ResponseEntity updateCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId == null) { + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); + } + mberCertPhoneVO.setFrstRegisterId(userId); + + + return ResponseEntity.ok().body(certIpService.updateMberCertPhoneInfo(mberCertPhoneVO)); + } + + @RequestMapping(value = {"/uss/umt/user/deleteCertPhone.do"}) + public ResponseEntity deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId == null) { + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); + } + mberCertPhoneVO.setLastUpdusrId(userId); + + + + return ResponseEntity.ok().body(certIpService.deleteCertPhoneInfo(mberCertPhoneVO)); + } + */ + +} \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml b/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml new file mode 100644 index 00000000..1ffaebc8 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml new file mode 100644 index 00000000..2b947f9c --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + INSERT INTO LETTNGNRLMBER_CERT_IP + ( + MBER_ID + , CERT_IP + , CERT_MEMO + , LAST_UPDT_PNTTM + , FRST_REGISTER_ID + ) + VALUES + ( + #mberId# + , #certIp# + , #certMemo# + , now() + , #frstRegisterId# + ) + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml index 6cc2f075..900e017c 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml @@ -28,7 +28,7 @@ WHERE 1=1 - AND ( A.USER_ID LIKE CONCAT('%', #searchKeyword#, '%') + AND ( A.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')MjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xml OR CUSTOM_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%') ) diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp index 7287f758..6d3f660d 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp @@ -51,9 +51,6 @@ $(document).ready(function(){ - $('#showLoginBtn').on('click', function() { - $('.security_login').fadeIn(); // 서서히 나타나도록 설정 - }); }); @@ -64,17 +61,148 @@ $(document).ready(function(){ $('#showLoginBtn').on('click', function() { if ($('#securityLogin').is(':visible')) { - $('#securityLogin').fadeOut(); // 서서히 사라짐 - $(this).text('보안 로그인 표시'); // 버튼 텍스트 변경 + $('#securityLogin').hide(); } else { - $('#securityLogin').fadeIn(); // 서서히 나타남 - $(this).text('보안 로그인 숨기기'); // 버튼 텍스트 변경 + $('#securityLogin').show(); } }); + + // IP 추가 버튼 클릭 시 tr 추가 + $(".btn_ip_plus").click(function () { + // 추가할 HTML 구조 + const ipTr = ` + + + + - + + + + + `; + + // 이미 추가된 `.ip-row`가 있는지 확인 + if ($(".ip_table tbody .ip-new").length === 0) { + $(".ip_table tbody").prepend(ipTr); // 중복되지 않으면 추가 + } else { + alert("이미 추가된 항목이 있습니다."); + } + }); + + + $(document).on('click', '#ipRegBtn', function () { + // 현재 클릭된 버튼의 부모 tr 요소 + const $currentRow = $(this).closest('tr'); + + // 입력값 가져오기 + const ipValue = $currentRow.find('td:eq(0) input').val(); // 첫 번째 열 (IP) + const memoValue = $currentRow.find('td:eq(1) input').val(); // 두 번째 열 (메모) + + // 예외 처리 + if (!ipValue) { + alert("등록할 IP를 입력해주세요."); + $currentRow.find('td:eq(0) input').focus(); + return; + } + + // 추가 동작 (예: 서버 전송) +// alert(`입력된 IP: ${ipValue}, 메모: ${memoValue}`); + + + var params = { + "certIp" : ipValue + , "certMemo" : memoValue + } + console.log('params : ', params); + + if(!confirm("IP를 등록 하시겠습니까?")){ + return false; + } + $.ajax({ + type: "POST", + url: "/cert/ip/insertCertIp.do", + data: params, + dataType:'json', + async: false, + success: function (returnData) { + if(returnData.status == 'OK'){ + const objects = returnData.object; // 배열 데이터 + let rows = ""; // 추가할 행들 + + // 배열 데이터를 순회하며 각 행 생성 + objects.forEach((obj) => { + rows += ` + + ${obj.certIp || "-"} + ${obj.certMemo || "-"} + ${obj.lastUpdtPnttm || "-"} + + + + + `; + }); + + // 기존 tbody 비우고 새 행 추가 + $(".ip_table tbody").html(rows); + + } + else + { + alert("오류가 발생하였습니다."); + } + }, + error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } + }); + + }); + + + findAllCertIp(); }); + +function findAllCertIp(){ + + console.log('findAllCertIp : ', findAllCertIp); + + $.ajax({ + type: "POST", + url: "/cert/ip/selectMberCertIpList.do", + data: null, + dataType:'json', + async: false, + success: function (returnData) { + if (returnData.status === "OK") { + const objects = returnData.object; // 배열 데이터 + let rows = ""; // 추가할 행들 + objects.forEach((obj) => { + rows += ` + + ${obj.certIp || "-"} + ${obj.certMemo || "-"} + ${obj.lastUpdtPnttm || "-"} + + + + + `; + }); + + // 생성된 rows를 tbody에 삽입 + $(".ip_table tbody").html(rows); + } else { + alert("데이터를 불러오는 데 실패했습니다."); + } + }, + error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } + }); +} + + + //기간 요일 지정 function setCalVal(val,targetObj){ $('input[name='+targetObj+']').val(val) ; @@ -511,8 +639,8 @@ function getMberGrdChk() { - -