From 6223dd1cdbcded2fc804c017b3633c5fedbdcf16 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Wed, 20 Nov 2024 12:44:01 +0900 Subject: [PATCH 01/22] =?UTF-8?q?=EC=9D=B8=EC=A6=9D=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=ED=8C=A8=ED=82=A4=EC=A7=80=ED=99=94=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/cert/ip/service/CertIpService.java | 2 + .../let/cert/ip/service/impl/CertIpDAO.java | 21 +-- .../ip/service/impl/CertIpServiceImpl.java | 11 ++ .../itn/let/cert/ip/web/CertIpController.java | 52 +---- .../cert/phone/service/CertPhoneService.java | 35 ++++ .../phone}/service/MberCertPhoneVO.java | 12 +- .../cert/phone/service/impl/CertPhoneDAO.java | 37 ++++ .../service/impl/CertPhoneServiceImpl.java | 68 +++++++ .../cert/phone/web/CertPhoneController.java | 178 ++++++++++++++++++ .../msgdata/service/MjonMsgDataService.java | 13 -- .../msgdata/service/impl/MjonMsgDataDAO.java | 31 --- .../service/impl/MjonMsgDataServiceImpl.java | 45 ----- .../let/uat/uia/web/EgovLoginController.java | 10 +- .../uss/umt/web/EgovUserManageController.java | 82 +------- .../mysql/sql-map-config-mysql-cert.xml | 1 + .../sqlmap/let/cert/MjonCertIp_SQL_mysql.xml | 42 ++++- .../let/cert/MjonCertPhone_SQL_mysql.xml | 119 ++++++++++++ .../sqlmap/let/msg/MjonMsgData_SQL_mysql.xml | 105 ----------- .../cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp | 44 +---- .../WEB-INF/jsp/web/user/mberInfoIndex.jsp | 123 +++++++----- 20 files changed, 605 insertions(+), 426 deletions(-) create mode 100644 src/main/java/itn/let/cert/phone/service/CertPhoneService.java rename src/main/java/itn/let/{uat/uia => cert/phone}/service/MberCertPhoneVO.java (82%) create mode 100644 src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java create mode 100644 src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java create mode 100644 src/main/java/itn/let/cert/phone/web/CertPhoneController.java create mode 100644 src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml diff --git a/src/main/java/itn/let/cert/ip/service/CertIpService.java b/src/main/java/itn/let/cert/ip/service/CertIpService.java index 1562df7d..d5317c2f 100644 --- a/src/main/java/itn/let/cert/ip/service/CertIpService.java +++ b/src/main/java/itn/let/cert/ip/service/CertIpService.java @@ -29,6 +29,8 @@ public interface CertIpService { public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO); + public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO); + } 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 index 904a3318..e1e2278c 100644 --- a/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java @@ -6,27 +6,26 @@ 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 List selectMberCertIpList(MberCertIpVO mberCertIpVO) { + return (List) list("MberCertIpVO.selectMberCertIpList", mberCertIpVO); } public void insertCertIp(MberCertIpVO mberCertIpVO) { insert("MberCertIpVO.insertCertIp", mberCertIpVO); } + + public void deleteCertIp(MberCertIpVO mberCertIpVO) { + insert("MberCertIpVO.deleteCertIp", mberCertIpVO); + } + + public MberCertIpVO findByMberCertIpList(MberCertIpVO mberCertIpVO) { + return (MberCertIpVO) select("MberCertIpVO.findByMberCertIpList", 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 index f44dcdb4..023efcc4 100644 --- a/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java @@ -29,8 +29,19 @@ public class CertIpServiceImpl extends EgovAbstractServiceImpl implements CertIp @Override public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO) { + MberCertIpVO mberCertIpListVO = certIpDAO.findByMberCertIpList(mberCertIpVO); + if(mberCertIpListVO != null) { + return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now()); + } certIpDAO.insertCertIp(mberCertIpVO); return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now()); } + + + @Override + public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO) { + certIpDAO.deleteCertIp(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 index 9cbe129a..8dfb6947 100644 --- a/src/main/java/itn/let/cert/ip/web/CertIpController.java +++ b/src/main/java/itn/let/cert/ip/web/CertIpController.java @@ -44,7 +44,6 @@ public class CertIpController { @RequestMapping(value = {"/cert/ip/selectMberCertIpList.do"}) public ResponseEntity selectMberCertIpList(MberCertIpVO mberCertPhoneVO) throws Exception { - System.out.println("????????????????????????????"); ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); @@ -79,10 +78,9 @@ public class CertIpController { return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO)); } - /* - @RequestMapping(value = {"/cert/ip/findByCertIp.do"}) - public ResponseEntity findByCertIp(MberCertIpVO mberCertPhoneVO) throws Exception { + @RequestMapping(value = {"/cert/ip/deleteCertIp.do"}) + public ResponseEntity deleteCertIp(MberCertIpVO mberCertIpVO) throws Exception { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); @@ -94,47 +92,11 @@ public class CertIpController { 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)); + mberCertIpVO.setLastUpdusrId(userId); + mberCertIpVO.setMberId(userId); + + + return ResponseEntity.ok().body(certIpService.deleteCertIp(mberCertIpVO)); } - - @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/java/itn/let/cert/phone/service/CertPhoneService.java b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java new file mode 100644 index 00000000..53b89485 --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java @@ -0,0 +1,35 @@ +package itn.let.cert.phone.service; + +import java.util.List; + +import itn.let.mail.service.StatusResponse; + +public interface CertPhoneService { + +// 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 selectMberCertPhoneList(MberCertPhoneVO mberCertPhoneVO); + + public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO); + + public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO); + + public List selectMberCertPhoneList(String userId); + + public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO); + + + + + +} diff --git a/src/main/java/itn/let/uat/uia/service/MberCertPhoneVO.java b/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java similarity index 82% rename from src/main/java/itn/let/uat/uia/service/MberCertPhoneVO.java rename to src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java index b9945ef0..2eda23e9 100644 --- a/src/main/java/itn/let/uat/uia/service/MberCertPhoneVO.java +++ b/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java @@ -1,4 +1,4 @@ -package itn.let.uat.uia.service; +package itn.let.cert.phone.service; import itn.let.uss.umt.service.UserDefaultVO; @@ -7,7 +7,7 @@ import itn.let.uss.umt.service.UserDefaultVO; * @author : 이호영 * @fileName : MberCertPhoneVO.java * @date : 2024.11.18 - * @description : 발신번호 lettngnrlmber_cert_phone 관련 vo + * @description : 발신번호 lettngnrlmber_cert_ip 관련 vo * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- * @@ -16,6 +16,7 @@ import itn.let.uss.umt.service.UserDefaultVO; * * */ + public class MberCertPhoneVO extends UserDefaultVO{ @@ -30,7 +31,6 @@ public class MberCertPhoneVO extends UserDefaultVO{ private String certAlias; private String certMemo; private String certUseYn; - private String certMbtlnum; @@ -66,12 +66,6 @@ public class MberCertPhoneVO extends UserDefaultVO{ 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/phone/service/impl/CertPhoneDAO.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java new file mode 100644 index 00000000..d2a7931e --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java @@ -0,0 +1,37 @@ +package itn.let.cert.phone.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import itn.let.cert.phone.service.MberCertPhoneVO; + +@Repository("CertPhoneDAO") +public class CertPhoneDAO extends EgovAbstractDAO { + + public List selectMberCertPhoneList(String userId) { + return (List) list("mberCertPhoneVO.selectMberCertPhoneList", userId); + } + + public void insertCertPhone(MberCertPhoneVO mberCertPhoneVO) { + insert("mberCertPhoneVO.insertCertPhone", mberCertPhoneVO); + } + + public void deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) { + insert("mberCertPhoneVO.deleteCertPhone", mberCertPhoneVO); + } + + public MberCertPhoneVO findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { + return (MberCertPhoneVO) select("mberCertPhoneVO.findByCertPhoneInfo", mberCertPhoneVO); + } + + public void updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) { + insert("mberCertPhoneVO.updateMberCertPhone", mberCertPhoneVO); + + } + + public List selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) { + return (List) list("mberCertPhoneVO.selectMberCertPhoneListVO", mberCertPhoneVO); + } +} diff --git a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java new file mode 100644 index 00000000..4f59bc91 --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java @@ -0,0 +1,68 @@ +package itn.let.cert.phone.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.phone.service.CertPhoneService; +import itn.let.cert.phone.service.MberCertPhoneVO; +import itn.let.mail.service.StatusResponse; + +@Service("CertPhoneService") +public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements CertPhoneService { + + @Resource(name = "CertPhoneDAO") + private CertPhoneDAO certPhoneDAO; + + + @Override + public StatusResponse selectMberCertPhoneList(MberCertPhoneVO mberCertPhoneVO) { + List mberCertIpListVO = certPhoneDAO.selectMberCertPhoneListVO(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); + } + + + @Override + public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO) { + MberCertPhoneVO mberCertIpListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); + if(mberCertIpListVO != null) { + return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now()); + } + certPhoneDAO.insertCertPhone(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now()); + } + + + @Override + public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) { + certPhoneDAO.deleteCertPhone(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now()); + } + + + @Override + public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { + MberCertPhoneVO mberCertIpListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); + } + + + @Override + public List selectMberCertPhoneList(String userId) { + return certPhoneDAO.selectMberCertPhoneList(userId); + + } + + + @Override + public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) { + certPhoneDAO.updateMberCertPhone(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, "수정 하였습니다.", LocalDateTime.now()); + } + +} diff --git a/src/main/java/itn/let/cert/phone/web/CertPhoneController.java b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java new file mode 100644 index 00000000..3dff2eee --- /dev/null +++ b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java @@ -0,0 +1,178 @@ +package itn.let.cert.phone.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.phone.service.MberCertPhoneVO; +import itn.let.cert.phone.service.CertPhoneService; +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 CertPhoneController { + + + /* certPhoneService */ + @Resource(name = "CertPhoneService") + private CertPhoneService certPhoneService; + + + + + @RequestMapping(value = {"/cert/phone/findByCertPhoneInfo.do"}) + public ResponseEntity findByCertPhoneInfo(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())); + } + return ResponseEntity.ok().body(certPhoneService.findByCertPhoneInfo(mberCertPhoneVO)); + } + + @RequestMapping(value = {"/cert/phone/insertCertPhone.do"}) + public ResponseEntity insertCertPhone(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(certPhoneService.insertCertPhone(mberCertPhoneVO)); + } + + @RequestMapping(value = {"/cert/phone/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(certPhoneService.updateMberCertPhone(mberCertPhoneVO)); + } + + @RequestMapping(value = {"/cert/phone/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(certPhoneService.deleteCertPhone(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(certPhoneService.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(certPhoneService.deleteCertPhoneInfo(mberCertPhoneVO)); + } + */ + +} \ No newline at end of file diff --git a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java index d7028706..7bb6990a 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java +++ b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java @@ -3,11 +3,9 @@ package itn.let.mjo.msgdata.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; @@ -179,17 +177,6 @@ public interface MjonMsgDataService { //팩스 거래명세서 합산 정보 public List selectPayUserSumFaxList(MjonMsgVO mjonMsgVO) throws Exception; - 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); diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java index 243c046d..1ea11837 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java @@ -6,12 +6,10 @@ import org.springframework.stereotype.Repository; import egovframework.rte.psl.dataaccess.EgovAbstractDAO; 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; @@ -369,33 +367,4 @@ public class MjonMsgDataDAO extends EgovAbstractDAO { } - public List selectMberCertPhoneList(String userId) { - - return (List) list("mjonMsgDataDAO.selectMberCertPhoneList", userId); - } - - - public void insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - insert("mjonMsgDataDAO.insertMberCertPhoneInfo", mberCertPhoneVO); - } - - public void updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - update("mjonMsgDataDAO.updateMberCertPhoneInfo", mberCertPhoneVO); - } - - - public void deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - update("mjonMsgDataDAO.deleteCertPhoneInfo", mberCertPhoneVO); - } - - - public List selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) { - return (List) list("mjonMsgDataDAO.selectMberCertPhoneListVO", mberCertPhoneVO); - } - - - public MberCertPhoneVO findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - return (MberCertPhoneVO) select("mjonMsgDataDAO.findByCertPhoneInfo", mberCertPhoneVO); - } - } diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java index 950116b9..91a619ab 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java @@ -1,7 +1,6 @@ package itn.let.mjo.msgdata.service.impl; import java.text.SimpleDateFormat; -import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -9,7 +8,6 @@ import java.util.List; import javax.annotation.Resource; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; @@ -18,7 +16,6 @@ import egovframework.rte.psl.dataaccess.util.EgovMap; import itn.com.cmm.util.MJUtil; import itn.com.cmm.util.StringUtil; import itn.let.lett.service.LetterVO; -import itn.let.mail.service.StatusResponse; import itn.let.mjo.addr.service.AddrVO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; @@ -40,7 +37,6 @@ import itn.let.mjo.pay.service.MjonPayVO; import itn.let.mjo.pay.service.impl.MjonPayDAO; import itn.let.sym.site.service.JoinSettingVO; import itn.let.sym.site.service.impl.SiteManagerDAO; -import itn.let.uat.uia.service.MberCertPhoneVO; import itn.let.uat.uia.web.SendLogVO; import itn.let.uss.umt.service.MberManageVO; @@ -3160,46 +3156,5 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M return mjonMsgDataDAO.selectPayUserSumFaxList(mjonMsgVO); } - @Override - public List selectMberCertPhoneList(String userId) { - return mjonMsgDataDAO.selectMberCertPhoneList(userId); - } - - @Override - public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - MberCertPhoneVO mberCertPhoneReturnVO = mjonMsgDataDAO.findByCertPhoneInfo(mberCertPhoneVO); - if(mberCertPhoneReturnVO != null) { - return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now()); - } - - - mjonMsgDataDAO.insertMberCertPhoneInfo(mberCertPhoneVO); - - return new StatusResponse(HttpStatus.OK, "등록하였습니다.", LocalDateTime.now()); - } - - @Override - public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - mjonMsgDataDAO.updateMberCertPhoneInfo(mberCertPhoneVO); - return new StatusResponse(HttpStatus.OK, "수정하였습니다.", LocalDateTime.now()); - } - - - @Override - public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - mjonMsgDataDAO.deleteCertPhoneInfo(mberCertPhoneVO); - return new StatusResponse(HttpStatus.OK, "삭제하였습니다.", LocalDateTime.now()); - } - - @Override - public List selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) { - return mjonMsgDataDAO.selectMberCertPhoneListVO(mberCertPhoneVO); - } - - @Override - public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - MberCertPhoneVO mberCertPhoneReturnVO = mjonMsgDataDAO.findByCertPhoneInfo(mberCertPhoneVO); - return new StatusResponse(HttpStatus.OK, mberCertPhoneReturnVO, LocalDateTime.now()); - } } diff --git a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java index f1016408..23ea14b5 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java @@ -83,6 +83,8 @@ import itn.com.cmm.util.StringUtil; import itn.com.cmm.util.WebUtil; import itn.com.uss.olh.hpc.service.HackIpService; import itn.com.uss.olh.hpc.service.HackIpVO; +import itn.let.cert.phone.service.CertPhoneService; +import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.cop.bbs.service.BoardVO; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; @@ -109,7 +111,6 @@ import itn.let.uat.uap.service.EgovLoginPolicyService; import itn.let.uat.uap.service.LoginPolicyVO; import itn.let.uat.uia.service.AuthCertVO; import itn.let.uat.uia.service.EgovLoginService; -import itn.let.uat.uia.service.MberCertPhoneVO; import itn.let.uss.umt.service.EgovMberManageService; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageConfigVO; @@ -237,6 +238,9 @@ public class EgovLoginController { @Resource(name = "mberGrdService") MberGrdService mberGrdService; + + @Resource(name = "CertPhoneService") + private CertPhoneService certPhoneService; private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class); @@ -2054,7 +2058,7 @@ public class EgovLoginController { */ - List mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneList(resultVO.getId()); + List mberCertPhoneList = certPhoneService.selectMberCertPhoneList(resultVO.getId()); modelAndView.addObject("status", "success"); @@ -3633,7 +3637,7 @@ public class EgovLoginController { mberCertPhoneVO.setMberId(mjonMsgVO.getUserId()); - List mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneListVO(mberCertPhoneVO); + List mberCertPhoneList = certPhoneService.selectMberCertPhoneList(mjonMsgVO.getUserId()); diff --git a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java index 96b00346..b6334e4a 100644 --- a/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java +++ b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java @@ -79,6 +79,8 @@ import itn.com.cmm.util.MJUtil; import itn.com.cmm.util.RedirectUrlMaker; import itn.com.cmm.util.StringUtil; import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.cert.phone.service.CertPhoneService; +import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.cop.bbs.service.BoardVO; import itn.let.fax.user.service.FaxGroupDataVO; import itn.let.fax.user.service.FaxService; @@ -131,7 +133,6 @@ import itn.let.sym.site.service.EgovSiteManagerService; import itn.let.sym.site.service.JoinSettingVO; import itn.let.sym.site.service.SiteManagerVO; import itn.let.uat.uia.service.EgovLoginService; -import itn.let.uat.uia.service.MberCertPhoneVO; import itn.let.uat.uia.web.EmailVO; import itn.let.uat.uia.web.SendLogVO; import itn.let.uat.uia.web.SendMail; @@ -281,6 +282,10 @@ public class EgovUserManageController { @Resource(name = "MjonReservMsgService") private MjonReservMsgService mjonReservMsgService; + + @Resource(name = "CertPhoneService") + private CertPhoneService certPhoneService; + @Autowired KakaoApiTemplate kakaoApiTemplate; @@ -1102,7 +1107,7 @@ public class EgovUserManageController { - List mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneList(userId); + List mberCertPhoneList = certPhoneService.selectMberCertPhoneList(userId); model.addAttribute("mberCertPhoneList", mberCertPhoneList); //문자발송 단가 조회하기 @@ -1657,79 +1662,6 @@ public class EgovUserManageController { return modelAndView; } - @RequestMapping(value = {"/uss/umt/user/findByCertPhoneInfo.do"}) - public ResponseEntity findByCertPhoneInfo(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())); - } - return ResponseEntity.ok().body(mjonMsgDataService.findByCertPhoneInfo(mberCertPhoneVO)); - } - - @RequestMapping(value = {"/uss/umt/user/insertCertPhone.do"}) - public ResponseEntity insertCertPhone(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(mjonMsgDataService.insertMberCertPhoneInfo(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(mjonMsgDataService.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(mjonMsgDataService.deleteCertPhoneInfo(mberCertPhoneVO)); - } /** * 회원정보 팝업 이벤트 정보 신규 추가 기능 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 index 1ffaebc8..081c2f5f 100644 --- 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 @@ -4,4 +4,5 @@ + 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 index 2b947f9c..cb7b6da6 100644 --- a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml @@ -8,6 +8,7 @@ + + + /*MberCertIpVO.insertCertIp*/ INSERT INTO LETTNGNRLMBER_CERT_IP ( MBER_ID , CERT_IP , CERT_MEMO - , LAST_UPDT_PNTTM + , FRST_REGIST_PNTTM , FRST_REGISTER_ID ) VALUES @@ -45,5 +68,22 @@ + + /*MberCertIpVO.deleteCertIp*/ + + + UPDATE LETTNGNRLMBER_CERT_IP + SET + CERT_USE_YN = 'N' + , LAST_UPDT_PNTTM = now() + , LAST_UPDUSR_ID = #lastUpdusrId# + WHERE + MBER_ID = #mberId# + AND CERT_IP = #certIp# + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml new file mode 100644 index 00000000..6add6b57 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + /* mberCertPhoneVO.insertCertIp */ + INSERT + INTO LETTNGNRLMBER_CERT_PHONE + ( + MBER_ID + , MBTLNUM + , CERT_ALIAS + , CERT_MEMO + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + ) + VALUES + ( + #mberId# + , #mbtlnum# + , #certAlias# + , #certMemo# + , now() + , #frstRegisterId# + ) + + + + + + UPDATE LETTNGNRLMBER_CERT_PHONE + SET CERT_USE_YN = 'N' + , LAST_UPDUSR_ID = #lastUpdusrId# + WHERE + MBER_ID = #mberId# + AND MBTLNUM = #mbtlnum# + + + + + + + + UPDATE LETTNGNRLMBER_CERT_PHONE + SET + LAST_UPDUSR_ID = #lastUpdusrId# + , CERT_MEMO = #certMemo# + , CERT_ALIAS = #certAlias# + WHERE + MBER_ID = #mberId# + AND MBTLNUM = #mbtlnum# + + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index 140ea866..eeb9130a 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml @@ -21,7 +21,6 @@ - @@ -3757,110 +3756,6 @@ - - - - - - - - - - INSERT - INTO LETTNGNRLMBER_CERT_PHONE - ( - MBER_ID - , MBTLNUM - , CERT_ALIAS - , CERT_MEMO - , FRST_REGIST_PNTTM - , FRST_REGISTER_ID - ) - VALUES - ( - #mberId# - , #mbtlnum# - , #certAlias# - , #certMemo# - , now() - , #frstRegisterId# - ) - - - - - UPDATE LETTNGNRLMBER_CERT_PHONE - SET CERT_USE_YN = 'N' - , LAST_UPDUSR_ID = #lastUpdusrId# - WHERE - MBER_ID = #mberId# - AND MBTLNUM = #mbtlnum# - - - - - - - UPDATE LETTNGNRLMBER_CERT_PHONE - SET - LAST_UPDUSR_ID = #lastUpdusrId# - , CERT_MEMO = #certMemo# - , CERT_ALIAS = #certAlias# - WHERE - MBER_ID = #mberId# - AND MBTLNUM = #mbtlnum# - - - - + - @@ -92,6 +93,7 @@ $(document).ready(function(){ }); + // IP 등록버튼 $(document).on('click', '#ipRegBtn', function () { // 현재 클릭된 버튼의 부모 tr 요소 const $currentRow = $(this).closest('tr'); @@ -106,16 +108,19 @@ $(document).ready(function(){ $currentRow.find('td:eq(0) input').focus(); return; } - - // 추가 동작 (예: 서버 전송) -// alert(`입력된 IP: ${ipValue}, 메모: ${memoValue}`); + + const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; + + if (!ipRegex.test(ipValue)) { + alert("유효하지 않은 IP 주소입니다."); + return false; + } var params = { "certIp" : ipValue , "certMemo" : memoValue } - console.log('params : ', params); if(!confirm("IP를 등록 하시겠습니까?")){ return false; @@ -128,35 +133,18 @@ $(document).ready(function(){ 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); - + findAllCertIp(); + }else if(returnData.status == 'CONFLICT'){ + alert(returnData.message); + return false; } else { - alert("오류가 발생하였습니다."); + alert("오류가 발생하였습니다."); } }, error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } }); - }); @@ -166,8 +154,6 @@ $(document).ready(function(){ function findAllCertIp(){ - console.log('findAllCertIp : ', findAllCertIp); - $.ajax({ type: "POST", url: "/cert/ip/selectMberCertIpList.do", @@ -177,22 +163,37 @@ function findAllCertIp(){ success: function (returnData) { if (returnData.status === "OK") { const objects = returnData.object; // 배열 데이터 - let rows = ""; // 추가할 행들 - objects.forEach((obj) => { - rows += ` - - ${obj.certIp || "-"} - ${obj.certMemo || "-"} - ${obj.lastUpdtPnttm || "-"} - - - - - `; - }); + + // tbody의 기존 내용 삭제 + const $tbody = $(".ip_table tbody"); + $tbody.empty(); - // 생성된 rows를 tbody에 삽입 - $(".ip_table tbody").html(rows); + // 배열 데이터를 기반으로 tr 생성 후 tbody에 추가 + $.each(objects, function(index, obj) { + const $tr = $(""); // tr 요소 생성 + + // 각 td 요소 생성 + const $certIp = $("").text(obj.certIp || ""); + const $certMemo = $("").text(obj.certMemo || ""); + const $frstRegistPnttm = $("").text(obj.frstRegistPnttm || "등록되지 않음"); + const $deleteBtn = $("") + .addClass("btnType btn_text btn_lightgray fill btn_28") + .text("삭제") + .attr("type", "button") + .attr("id", "ipDelBtn") + .on("click", function() { + deleteRow(obj.certIp); // 삭제 버튼 클릭 시 실행 + }); + + // 관리 버튼을 감쌀 td 생성 + const $deleteTd = $("").append($deleteBtn); + + // tr에 td 추가 + $tr.append($certIp, $certMemo, $frstRegistPnttm, $deleteTd); + + // tbody에 tr 추가 + $tbody.append($tr); + }); } else { alert("데이터를 불러오는 데 실패했습니다."); } @@ -201,6 +202,33 @@ function findAllCertIp(){ }); } +// IP 삭제 +function deleteRow(p_ip){ + + var params = { + "certIp" : p_ip + } + if(!confirm("IP를 삭제 하시겠습니까?")){ + return false; + } + $.ajax({ + type: "POST", + url: "/cert/ip/deleteCertIp.do", + data: params, + dataType:'json', + async: false, + success: function (returnData) { + if(returnData.status == 'OK'){ + findAllCertIp(); + } + else + { + alert("오류가 발생하였습니다."); + } + }, + error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } + }); +} //기간 요일 지정 @@ -672,7 +700,7 @@ function getMberGrdChk() {

접속 IP를 미리 등록할 경우 2차 로그인 인증 없이 접속이 가능합니다.
(공용 PC는 보안상의 이유로 등록을 권장하지 않습니다.)

- +
@@ -693,10 +721,7 @@ function getMberGrdChk() { - 192.168.0.0 - dadfadfjadkfjalkdjfajflajdlfjaldjflajd - 2024-11-11 11:11 - + 등록된 IP 주소가 없습니다. From 35a65bfe3ab5088d2b038933b6f3ec9a82c50356 Mon Sep 17 00:00:00 2001 From: kmg Date: Wed, 20 Nov 2024 13:51:17 +0900 Subject: [PATCH 02/22] =?UTF-8?q?2024/11/20=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/publish/guide_2022.html | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/webapp/publish/guide_2022.html b/src/main/webapp/publish/guide_2022.html index 23422bba..7f5c2ccc 100644 --- a/src/main/webapp/publish/guide_2022.html +++ b/src/main/webapp/publish/guide_2022.html @@ -18,6 +18,7 @@ +
+ From 57e2f874d6bebf9ab244b9247969398b79759455 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 09:16:37 +0900 Subject: [PATCH 06/22] =?UTF-8?q?=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EB=B3=B4=EC=95=88=EC=84=A4=EC=A0=95=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cert/phone/service/CertPhoneService.java | 4 + .../cert/phone/service/MberCertPhoneVO.java | 8 + .../cert/phone/service/impl/CertPhoneDAO.java | 4 + .../service/impl/CertPhoneServiceImpl.java | 17 ++ .../cert/phone/web/CertPhoneController.java | 122 +++++++---- .../msgdata/service/MjonMsgDataService.java | 2 + .../service/impl/MjonMsgDataServiceImpl.java | 82 +++++++ .../let/uat/uia/web/EgovLoginController.java | 97 +-------- .../let/cert/MjonCertPhone_SQL_mysql.xml | 15 ++ .../sqlmap/let/msg/MjonMsgData_SQL_mysql.xml | 1 + .../WEB-INF/jsp/web/user/mberInfoIndex.jsp | 200 +++++++++++++++++- 11 files changed, 428 insertions(+), 124 deletions(-) diff --git a/src/main/java/itn/let/cert/phone/service/CertPhoneService.java b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java index 53b89485..db97802c 100644 --- a/src/main/java/itn/let/cert/phone/service/CertPhoneService.java +++ b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java @@ -3,6 +3,7 @@ package itn.let.cert.phone.service; import java.util.List; import itn.let.mail.service.StatusResponse; +import itn.let.uat.uia.web.SendLogVO; public interface CertPhoneService { @@ -28,6 +29,9 @@ public interface CertPhoneService { public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO); + public StatusResponse selectSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO); + + diff --git a/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java b/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java index 2eda23e9..81eb9ae2 100644 --- a/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java +++ b/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java @@ -32,6 +32,8 @@ public class MberCertPhoneVO extends UserDefaultVO{ private String certMemo; private String certUseYn; + private String checkNo; + @@ -66,6 +68,12 @@ public class MberCertPhoneVO extends UserDefaultVO{ public void setCertUseYn(String certUseYn) { this.certUseYn = certUseYn; } + public String getCheckNo() { + return checkNo; + } + public void setCheckNo(String checkNo) { + this.checkNo = checkNo; + } diff --git a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java index d2a7931e..da5e107a 100644 --- a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java @@ -34,4 +34,8 @@ public class CertPhoneDAO extends EgovAbstractDAO { public List selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) { return (List) list("mberCertPhoneVO.selectMberCertPhoneListVO", mberCertPhoneVO); } + + public int countSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO) { + return (int) select("mberCertPhoneVO.countSysMsgLogCheck", mberCertPhoneVO); + } } diff --git a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java index 4f59bc91..c2faf188 100644 --- a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java @@ -64,5 +64,22 @@ public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements Cer certPhoneDAO.updateMberCertPhone(mberCertPhoneVO); return new StatusResponse(HttpStatus.OK, "수정 하였습니다.", LocalDateTime.now()); } + + + @Override + public StatusResponse selectSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO) { + // TODO Auto-generated method stub + + int certCnt = 0; + certCnt = certPhoneDAO.countSysMsgLogCheck(mberCertPhoneVO); + + if(certCnt < 1) { + return new StatusResponse(HttpStatus.BAD_REQUEST, "[인증번호 불일치] 입력하신 정보를 재확인 해주세요.", LocalDateTime.now()); + } + + return new StatusResponse(HttpStatus.OK, "", LocalDateTime.now()); + } + + } diff --git a/src/main/java/itn/let/cert/phone/web/CertPhoneController.java b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java index 3dff2eee..497102e3 100644 --- a/src/main/java/itn/let/cert/phone/web/CertPhoneController.java +++ b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java @@ -1,6 +1,8 @@ package itn.let.cert.phone.web; import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; import javax.annotation.Resource; @@ -14,9 +16,13 @@ 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.phone.service.MberCertPhoneVO; import itn.let.cert.phone.service.CertPhoneService; +import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.mail.service.StatusResponse; +import itn.let.mjo.msg.service.MjonMsgVO; +import itn.let.mjo.msgdata.service.MjonMsgDataService; +import itn.let.mjo.msgdata.service.MjonMsgReturnVO; +import itn.let.uat.uia.web.SendLogVO; /** * @@ -40,8 +46,28 @@ public class CertPhoneController { @Resource(name = "CertPhoneService") private CertPhoneService certPhoneService; + @Resource(name = "MjonMsgDataService") + private MjonMsgDataService mjonMsgDataService; + + @RequestMapping(value = {"/cert/phone/selectMberCertPhoneList"}) + public ResponseEntity selectMberCertPhoneList(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.setMberId(userId); + + return ResponseEntity.ok().body(certPhoneService.selectMberCertPhoneList(mberCertPhoneVO)); + } @RequestMapping(value = {"/cert/phone/findByCertPhoneInfo.do"}) public ResponseEntity findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) throws Exception { @@ -73,6 +99,7 @@ public class CertPhoneController { if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); } mberCertPhoneVO.setFrstRegisterId(userId); + mberCertPhoneVO.setMberId(userId); return ResponseEntity.ok().body(certPhoneService.insertCertPhone(mberCertPhoneVO)); @@ -121,25 +148,8 @@ public class CertPhoneController { - - - - - - - - - - - - - /* - - @RequestMapping(value = {"/uss/umt/user/updateCertPhone.do"}) - public ResponseEntity updateCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); + @RequestMapping(value = {"/cert/phone/sendSysMsgDataAjax.do"}) + public ResponseEntity sendSysMsgDataAjax(MberCertPhoneVO mberCertPhoneVO) throws Exception { //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; @@ -148,31 +158,69 @@ public class CertPhoneController { if(userId == null) { if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); } - mberCertPhoneVO.setFrstRegisterId(userId); + mberCertPhoneVO.setMberId(userId); + + - return ResponseEntity.ok().body(certPhoneService.updateMberCertPhoneInfo(mberCertPhoneVO)); + + MjonMsgVO mjonMsgVO = new MjonMsgVO(); + mjonMsgVO.setCallTo(mberCertPhoneVO.getMbtlnum()); + MjonMsgReturnVO returnVO = mjonMsgDataService.sendSysMsgData(mjonMsgVO); + + + String resultSts = returnVO.getSendMsgCnt(); + String resultBlockSts = returnVO.getSendMsgBlockCnt(); + + String msg= ""; + Map returnMap = new HashMap<>(); + HttpStatus httpStatus = null; + if (!resultSts.equals("0")) { + + httpStatus = HttpStatus.OK; + returnMap.put("msg", "문자 전송이 완료되었습니다."); + returnMap.put("resultSts", resultSts); + returnMap.put("resultBlockSts", resultBlockSts); + + } else { + + httpStatus = HttpStatus.BAD_REQUEST; + returnMap.put("msg", "문자 전송에 오류가 발생하였습니다."); + returnMap.put("resultSts", "0"); + returnMap.put("resultBlockSts", "0"); + + } + return ResponseEntity.ok().body(new StatusResponse(httpStatus, returnMap, LocalDateTime.now())); + } - @RequestMapping(value = {"/uss/umt/user/deleteCertPhone.do"}) - public ResponseEntity deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception { - - ModelAndView modelAndView = new ModelAndView(); - modelAndView.setViewName("jsonView"); - + + + @RequestMapping(value = {"/cert/phone/selectSysMsgLogCheck.do"}) + public ResponseEntity selectSysMsgLogCheck(MberCertPhoneVO mberCertPhoneVO) throws Exception { + //로그인 권한정보 불러오기 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(certPhoneService.deleteCertPhoneInfo(mberCertPhoneVO)); - } - */ - + mberCertPhoneVO.setMberId(userId); +// + return ResponseEntity.ok().body(certPhoneService.selectSysMsgLogCheck(mberCertPhoneVO)); + + } + + + + + + + + + + + + } \ No newline at end of file diff --git a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java index 7bb6990a..9b50c130 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java +++ b/src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java @@ -177,6 +177,8 @@ public interface MjonMsgDataService { //팩스 거래명세서 합산 정보 public List selectPayUserSumFaxList(MjonMsgVO mjonMsgVO) throws Exception; + public MjonMsgReturnVO sendSysMsgData(MjonMsgVO mjonMsgVO) throws Exception; + diff --git a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java index 91a619ab..46cb334c 100644 --- a/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java +++ b/src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.Random; import javax.annotation.Resource; @@ -3156,5 +3157,86 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M return mjonMsgDataDAO.selectPayUserSumFaxList(mjonMsgVO); } + @Override + public MjonMsgReturnVO sendSysMsgData(MjonMsgVO mjonMsgVO) throws Exception { + + + + // 비밀번호 찾기 문자내용 + String contents = "[문자온] 인증번호 : %code%"; + String code = ""; + long seed = System.currentTimeMillis(); + Random random = new Random(seed); + // code = Integer.toString(random.nextInt(4)); + StringBuffer randomCode = new StringBuffer(); + for (int i = 0; i < 6; i++) { + code = randomCode.append(Integer.toString(random.nextInt(10))).toString(); + } + contents = contents.replace("%code%", code); + System.out.println("contents : "+ contents); + System.out.println("contents : "+ contents); + System.out.println("contents : "+ contents); + System.out.println("contents : "+ contents); + System.out.println("contents : "+ contents); + + mjonMsgVO.setSmsTxt(contents); + mjonMsgVO.setReserveYn("N"); + // 시스템 문자발송 번호 + mjonMsgVO.setCallFrom("15518011"); + + mjonMsgVO.setUserId("system"); + + String msgType = "4"; + + // 전송사 전송 배분 + MjonMsgVO pramVO = new MjonMsgVO(); + List sendRateList = mjonMsgDAO.selectTodayAgentSendCntList(pramVO); // 전송사 전송 배분률 및 현재 전송건수 + // 조회 + for (MjonMsgVO tmpVO : sendRateList) { + float cnt = Float.parseFloat(tmpVO.getMsgGroupCnt()); + float totCnt = tmpVO.getTotCnt(); + tmpVO.setSendRateInfo(Float.parseFloat(tmpVO.getSendRate()) - (cnt / totCnt * 100)); // 배분률 - 현재전송 비율 + } + + String sendAgent = sendRateList.get(0).getAgentCode(); + float maxRate = sendRateList.get(0).getSendRateInfo(); + for (MjonMsgVO tmpVO : sendRateList) { // 배분률 대비 현재전송 비율이 가장 적은거 찾기 + if (maxRate < tmpVO.getSendRateInfo()) { + maxRate = tmpVO.getSendRateInfo(); + sendAgent = tmpVO.getAgentCode(); + } + } + + mjonMsgVO.setMsgDiv("S"); // 단문 + + // 문자타입별 대표전송사 정보 + MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); + mjonMsgVO2 = mjonMsgDAO.selectRepMsgAgetnInfo(mjonMsgVO); + // 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술 + mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택 + // 전송금액 + mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 + mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 + + mjonMsgVO.setMsgType("4"); + + MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO); + + + // 시스템 발송 로그 + SendLogVO sendLogVO = new SendLogVO(); + // SendType 1:문자로 발송 2:이메일로 발송 + sendLogVO.setSendId(returnVO.getMsgGroupId()); + sendLogVO.setSendType("1"); + sendLogVO.setFrstSendInfo(mjonMsgVO.getCallFrom()); + sendLogVO.setReceive(mjonMsgVO.getCallTo()); + sendLogVO.setCheckNo(code); + sendLogVO.setContents(contents); + + mjonMsgDataService.insertSysMsgLog(sendLogVO); + + return returnVO; + } + } diff --git a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java index 23ea14b5..e5eda7b6 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java @@ -3588,27 +3588,6 @@ public class EgovLoginController { String resultSts = "0"; String resultBlockSts = "0"; - // 비밀번호 찾기 문자내용 - String contents = "[문자온] 인증번호 : %code%"; - String code = ""; - long seed = System.currentTimeMillis(); - Random random = new Random(seed); - // code = Integer.toString(random.nextInt(4)); - StringBuffer randomCode = new StringBuffer(); - for (int i = 0; i < 6; i++) { - code = randomCode.append(Integer.toString(random.nextInt(10))).toString(); - } - contents = contents.replace("%code%", code); - System.out.println("contents : "+ contents); - System.out.println("contents : "+ contents); - System.out.println("contents : "+ contents); - System.out.println("contents : "+ contents); - System.out.println("contents : "+ contents); - - mjonMsgVO.setSmsTxt(contents); - mjonMsgVO.setReserveYn("N"); - // 시스템 문자발송 번호 - mjonMsgVO.setCallFrom("15518011"); // 문자 수신 번호 jsp에서 받아와야함! /* mjonMsgVO.setCallTo(callTo); */ @@ -3619,22 +3598,6 @@ public class EgovLoginController { // 사용자 유효성 검사 // id, hp, nm try { - UserManageVO userManageVO = new UserManageVO(); - - userManageVO.setEmplyrId(mjonMsgVO.getUserId()); - userManageVO.setEmplyrNm(mjonMsgVO.getSearchNm()); - userManageVO.setMoblphonNo(mjonMsgVO.getCallTo()); - - - - - - - - - MberCertPhoneVO mberCertPhoneVO = new MberCertPhoneVO(); - mberCertPhoneVO.setMbtlnum(mjonMsgVO.getCallTo()); - mberCertPhoneVO.setMberId(mjonMsgVO.getUserId()); List mberCertPhoneList = certPhoneService.selectMberCertPhoneList(mjonMsgVO.getUserId()); @@ -3655,7 +3618,13 @@ public class EgovLoginController { return modelAndView; } - + + UserManageVO userManageVO = new UserManageVO(); + + userManageVO.setEmplyrId(mjonMsgVO.getUserId()); + userManageVO.setEmplyrNm(mjonMsgVO.getSearchNm()); + userManageVO.setMoblphonNo(mjonMsgVO.getCallTo()); + List usedNmList = userManageService.selectUserIdAjax2(userManageVO); if(!usedNmList.get(0).getMberSttus().equals("Y")) { @@ -3685,59 +3654,15 @@ public class EgovLoginController { } try { - - mjonMsgVO.setUserId("system"); - - String msgType = "4"; - - // 전송사 전송 배분 - MjonMsgVO pramVO = new MjonMsgVO(); - List sendRateList = mjonMsgService.selectTodayAgentSendCntList(pramVO); // 전송사 전송 배분률 및 현재 전송건수 - // 조회 - for (MjonMsgVO tmpVO : sendRateList) { - float cnt = Float.parseFloat(tmpVO.getMsgGroupCnt()); - float totCnt = tmpVO.getTotCnt(); - tmpVO.setSendRateInfo(Float.parseFloat(tmpVO.getSendRate()) - (cnt / totCnt * 100)); // 배분률 - 현재전송 비율 - } - - String sendAgent = sendRateList.get(0).getAgentCode(); - float maxRate = sendRateList.get(0).getSendRateInfo(); - for (MjonMsgVO tmpVO : sendRateList) { // 배분률 대비 현재전송 비율이 가장 적은거 찾기 - if (maxRate < tmpVO.getSendRateInfo()) { - maxRate = tmpVO.getSendRateInfo(); - sendAgent = tmpVO.getAgentCode(); - } - } - - mjonMsgVO.setMsgDiv("S"); // 단문 - // 문자타입별 대표전송사 정보 - MjonMsgVO mjonMsgVO2 = new MjonMsgVO(); - mjonMsgVO2 = mjonMsgService.selectRepMsgAgetnInfo(mjonMsgVO); - // 전송사 구분 코드 - 01 : 아이하트, 02 : 현대 퓨쳐넷, 03 : 아이엠오, 04 : 다우기술 - mjonMsgVO.setAgentCode(mjonMsgVO2.getAgentCode()); //전송사 선택 - // 전송금액 - mjonMsgVO.setTotPrice(mjonMsgVO2.getAgentPrice().toString()); //총금액 - mjonMsgVO.setEachPrice(mjonMsgVO2.getAgentPrice().toString()); //한건 금액 - - mjonMsgVO.setMsgType("4"); - - MjonMsgReturnVO returnVO = mjonMsgDataService.insertSysMsgDataInfo(mjonMsgVO); + + + + MjonMsgReturnVO returnVO = mjonMsgDataService.sendSysMsgData(mjonMsgVO); resultSts = returnVO.getSendMsgCnt(); resultBlockSts = returnVO.getSendMsgBlockCnt(); - // 시스템 발송 로그 - SendLogVO sendLogVO = new SendLogVO(); - // SendType 1:문자로 발송 2:이메일로 발송 - sendLogVO.setSendId(returnVO.getMsgGroupId()); - sendLogVO.setSendType("1"); - sendLogVO.setFrstSendInfo(mjonMsgVO.getCallFrom()); - sendLogVO.setReceive(mjonMsgVO.getCallTo()); - sendLogVO.setCheckNo(code); - sendLogVO.setContents(contents); - - mjonMsgDataService.insertSysMsgLog(sendLogVO); } catch (Exception e) { diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml index 6add6b57..a5e5ed0c 100644 --- a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml @@ -115,5 +115,20 @@ + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index eeb9130a..1c4cd0c4 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml @@ -3724,6 +3724,7 @@ + + + + + 인증번호 + + + + + + + + + + + + + + + + + + + + +
@@ -775,7 +973,7 @@ function callTo() {

인증에 사용할 휴대폰번호를 추가로 등록하여 관리할 수 있습니다.
(등록 및 삭제 시 휴대폰 본인인증 필요)

- +
From 9741b0e43ad12e9547261b72734347172470ef42 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 09:59:42 +0900 Subject: [PATCH 07/22] =?UTF-8?q?=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20>=20=EB=B3=B4=EC=95=88=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=20<=20=ED=8D=BC=EB=B8=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/uat/uia/web/EgovMypageController.java | 17 + .../WEB-INF/jsp/web/user/mberInfoIndex.jsp | 317 --------- .../WEB-INF/jsp/web/user/mberSecureLogin.jsp | 645 ++++++++++++++++++ .../WEB-INF/jsp/web/user/mypageHeader.jsp | 5 +- 4 files changed, 665 insertions(+), 319 deletions(-) create mode 100644 src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index 2fa0f583..6277da30 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -2942,6 +2942,23 @@ public class EgovMypageController { return "web/user/mberSecession"; } + /** + * 회원탈퇴 본인인증 화면 + */ + @RequestMapping(value="/web/user/mberSecureLogin.do") + public String secureLogin(@ModelAttribute MberManageVO mberManageVO + , ModelMap model, HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception { + + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + if(loginVO == null) { + //redirectAttributes.addFlashAttribute("message", "문자온 서비스는 로그인 후 이용 가능합니다."); + return "redirect:/web/user/login/login.do"; + } + + model.addAttribute("pageTab", "mberSecureLogin"); + return "web/user/mberSecureLogin"; + } + /** * 회원탈퇴 상세정보 화면 */ 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 11a59870..78b4db94 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp @@ -56,323 +56,6 @@ $(document).ready(function(){ }); -// 보안 로그인 -$(document).ready(function(){ - - // 인증번호 발송 버튼 - $('#certReqBtn').on('click', function(){ - var certReqPhone = $('#certReqPhone').val(); - - if (certReqPhone==''){ - alert("핸드폰번호를 입력해주세요."); - return; - } - var params = {"mbtlnum" : certReqPhone } - $.ajax({ - type: "POST", - url : "", - data: params, - dataType:'json', - async: false, - success: function (returnData) { - console.log('returnData : ', returnData); - if(returnData.status == 'OK'){ - alert(returnData.object.msg); - $("#certReqPhone").prop("disabled", true); - } - else - { - alert("오류가 발생하였습니다."); - } - }, - error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } - }); - }); - - // 인증 버튼 - $('#certConfirmBtn').on('click', function(){ - var certReqPhone = $('#certReqPhone').val(); - var certNumber = $('#certNumber').val(); - - if (certNumber==''){ - alert("인증번호를 입력해주세요."); - return; - } - var params = {"mbtlnum" : certReqPhone, "checkNo" : certNumber } - $.ajax({ - type: "POST", - url : "", - data: params, - dataType:'json', - async: false, - success: function (returnData) { - console.log('returnData : ', returnData); - if(returnData.status == 'OK'){ -// alert(returnData.object.msg); - regCertPhone(params); - } - else if(returnData.status == 'BAD_REQUEST'){ - alert(returnData.message); - } - else - { - alert("오류가 발생하였습니다."); - } - }, - error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } - }); - }); - - - - $('#showLoginBtn').on('click', function() { - if ($('#securityLogin').is(':visible')) { - $('#securityLogin').hide(); - } else { - $('#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("이미 추가된 항목이 있습니다."); - } - }); - - - // IP 등록버튼 - $(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; - } - - - const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; - - if (!ipRegex.test(ipValue)) { - alert("유효하지 않은 IP 주소입니다."); - return false; - } - - var params = { - "certIp" : ipValue - , "certMemo" : memoValue - } - - 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'){ - findAllCertIp(); - }else if(returnData.status == 'CONFLICT'){ - alert(returnData.message); - return false; - } - else - { - alert("오류가 발생하였습니다."); - } - }, - error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } - }); - }); - - - findAllCertIp(); -}); - - -function regCertPhone(params){ - - $.ajax({ - type: "POST", - url: "/cert/phone/insertCertPhone.do", - data: params, - dataType:'json', - async: false, - success: function (returnData) { - if(returnData.status == 'OK'){ - findAllCertIp(); - }else if(returnData.status == 'CONFLICT'){ - alert(returnData.message); - return false; - } - else - { - alert("오류가 발생하였습니다."); - } - }, - error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } - }); - - -} - -function 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; // 배열 데이터 - - // tbody의 기존 내용 삭제 - const $tbody = $(".ip_table tbody"); - $tbody.empty(); - - // 배열 데이터를 기반으로 tr 생성 후 tbody에 추가 - $.each(objects, function(index, obj) { - const $tr = $(""); // tr 요소 생성 - - // 각 td 요소 생성 - const $certIp = $("").text(obj.certIp || ""); - const $certMemo = $("").text(obj.certMemo || ""); - const $frstRegistPnttm = $("").text(obj.frstRegistPnttm || "등록되지 않음"); - const $deleteBtn = $("") - .addClass("btnType btn_text btn_lightgray fill btn_28") - .text("삭제") - .attr("type", "button") - .attr("id", "ipDelBtn") - .on("click", function() { - deleteRow(obj.certIp); // 삭제 버튼 클릭 시 실행 - }); - - // 관리 버튼을 감쌀 td 생성 - const $deleteTd = $("").append($deleteBtn); - - // tr에 td 추가 - $tr.append($certIp, $certMemo, $frstRegistPnttm, $deleteTd); - - // tbody에 tr 추가 - $tbody.append($tr); - }); - } else { - alert("데이터를 불러오는 데 실패했습니다."); - } - }, - error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } - }); -} - -function findAllCertPhone(){ - - $.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; // 배열 데이터 - - // tbody의 기존 내용 삭제 - const $tbody = $(".ip_table tbody"); - $tbody.empty(); - - // 배열 데이터를 기반으로 tr 생성 후 tbody에 추가 - $.each(objects, function(index, obj) { - const $tr = $(""); // tr 요소 생성 - - // 각 td 요소 생성 - const $certIp = $("").text(obj.certIp || ""); - const $certMemo = $("").text(obj.certMemo || ""); - const $frstRegistPnttm = $("").text(obj.frstRegistPnttm || "등록되지 않음"); - const $deleteBtn = $("") - .addClass("btnType btn_text btn_lightgray fill btn_28") - .text("삭제") - .attr("type", "button") - .attr("id", "ipDelBtn") - .on("click", function() { - deleteRow(obj.certIp); // 삭제 버튼 클릭 시 실행 - }); - - // 관리 버튼을 감쌀 td 생성 - const $deleteTd = $("").append($deleteBtn); - - // tr에 td 추가 - $tr.append($certIp, $certMemo, $frstRegistPnttm, $deleteTd); - - // tbody에 tr 추가 - $tbody.append($tr); - }); - } else { - alert("데이터를 불러오는 데 실패했습니다."); - } - }, - error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } - }); -} - -// IP 삭제 -function deleteRow(p_ip){ - - var params = { - "certIp" : p_ip - } - if(!confirm("IP를 삭제 하시겠습니까?")){ - return false; - } - $.ajax({ - type: "POST", - url: "/cert/ip/deleteCertIp.do", - data: params, - dataType:'json', - async: false, - success: function (returnData) { - if(returnData.status == 'OK'){ - findAllCertIp(); - } - else - { - alert("오류가 발생하였습니다."); - } - }, - error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } - }); -} - - //기간 요일 지정 function setCalVal(val,targetObj){ $('input[name='+targetObj+']').val(val) ; diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp new file mode 100644 index 00000000..5ad88a44 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp @@ -0,0 +1,645 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> + + + +
+ + +
+ +
+ + +
+ +
+ + <%@include file="/WEB-INF/jsp/web/user/mypageHeader.jsp"%> + + +
+
+

보안로그인

+
+
+ + + + +
+
+ +
+ +
+ diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mypageHeader.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mypageHeader.jsp index 9bd85797..fa8237bf 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mypageHeader.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mypageHeader.jsp @@ -36,8 +36,9 @@ $(document).ready(function(){
  • -
  • - +
  • + +
  • \ No newline at end of file From 1f46dca39aed7d95b51128dc7fcbbe546b2d8f57 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 10:01:39 +0900 Subject: [PATCH 08/22] =?UTF-8?q?=EC=98=A4=EB=A5=98=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/itn/let/cert/ip/service/CertIpService.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/main/java/itn/let/cert/ip/service/CertIpService.java b/src/main/java/itn/let/cert/ip/service/CertIpService.java index d5317c2f..b4b58285 100644 --- a/src/main/java/itn/let/cert/ip/service/CertIpService.java +++ b/src/main/java/itn/let/cert/ip/service/CertIpService.java @@ -1,15 +1,6 @@ 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 { From d090114d3f85f6518025e69032204714eba47b4a Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 10:01:39 +0900 Subject: [PATCH 09/22] =?UTF-8?q?=EC=98=A4=EB=A5=98=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/itn/let/cert/ip/service/CertIpService.java | 9 --------- .../java/itn/let/uat/uia/web/EgovMypageController.java | 1 - 2 files changed, 10 deletions(-) diff --git a/src/main/java/itn/let/cert/ip/service/CertIpService.java b/src/main/java/itn/let/cert/ip/service/CertIpService.java index d5317c2f..b4b58285 100644 --- a/src/main/java/itn/let/cert/ip/service/CertIpService.java +++ b/src/main/java/itn/let/cert/ip/service/CertIpService.java @@ -1,15 +1,6 @@ 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 { diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index 6277da30..764ffb77 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -2951,7 +2951,6 @@ public class EgovMypageController { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; if(loginVO == null) { - //redirectAttributes.addFlashAttribute("message", "문자온 서비스는 로그인 후 이용 가능합니다."); return "redirect:/web/user/login/login.do"; } From 2e7852a002482b1c738e5939d432cb6c7832aad7 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 15:25:23 +0900 Subject: [PATCH 10/22] =?UTF-8?q?=EB=A7=88=EC=9D=B4=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20>=20=EB=B3=B4=EC=95=88=EB=A1=9C=EA=B7=B8=EC=9D=B8?= =?UTF-8?q?=20:=20=EC=9D=B8=EC=A6=9D=EB=B2=88=ED=98=B8=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cert/phone/service/CertPhoneService.java | 6 +- .../service/impl/CertPhoneServiceImpl.java | 18 +- .../cert/phone/web/CertPhoneController.java | 19 +- .../let/uat/uia/web/EgovMypageController.java | 39 +-- .../WEB-INF/jsp/web/user/mberInfoIndex.jsp | 120 +-------- .../WEB-INF/jsp/web/user/mberSecureLogin.jsp | 236 +++++++++++++++--- 6 files changed, 253 insertions(+), 185 deletions(-) diff --git a/src/main/java/itn/let/cert/phone/service/CertPhoneService.java b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java index db97802c..42b80989 100644 --- a/src/main/java/itn/let/cert/phone/service/CertPhoneService.java +++ b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java @@ -7,6 +7,7 @@ import itn.let.uat.uia.web.SendLogVO; public interface CertPhoneService { + // public List selectMberCertPhoneList(String userId); // // public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); @@ -21,11 +22,13 @@ public interface CertPhoneService { public StatusResponse selectMberCertPhoneList(MberCertPhoneVO mberCertPhoneVO); - public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO); + public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO, String moblphonNo); public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO); public List selectMberCertPhoneList(String userId); + + public StatusResponse selectMberCertPhoneListWhereUserId(String userId); public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO); @@ -34,6 +37,7 @@ public interface CertPhoneService { + } diff --git a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java index c2faf188..bf9296bf 100644 --- a/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java @@ -28,10 +28,10 @@ public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements Cer @Override - public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO) { - MberCertPhoneVO mberCertIpListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); - if(mberCertIpListVO != null) { - return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now()); + public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO, String moblphonNo) { + MberCertPhoneVO mberCertPhoneListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); + if(mberCertPhoneListVO != null || mberCertPhoneListVO.getMbtlnum().equals(moblphonNo) ) { + return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now()); } certPhoneDAO.insertCertPhone(mberCertPhoneVO); return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now()); @@ -59,6 +59,14 @@ public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements Cer } + @Override + public StatusResponse selectMberCertPhoneListWhereUserId(String userId) { + return new StatusResponse(HttpStatus.OK, certPhoneDAO.selectMberCertPhoneList(userId), LocalDateTime.now()); + } + + + + @Override public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) { certPhoneDAO.updateMberCertPhone(mberCertPhoneVO); @@ -79,7 +87,7 @@ public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements Cer return new StatusResponse(HttpStatus.OK, "", LocalDateTime.now()); } - + } diff --git a/src/main/java/itn/let/cert/phone/web/CertPhoneController.java b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java index 497102e3..aaabf8c8 100644 --- a/src/main/java/itn/let/cert/phone/web/CertPhoneController.java +++ b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java @@ -65,8 +65,8 @@ public class CertPhoneController { if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); } mberCertPhoneVO.setMberId(userId); - - return ResponseEntity.ok().body(certPhoneService.selectMberCertPhoneList(mberCertPhoneVO)); + + return ResponseEntity.ok().body(certPhoneService.selectMberCertPhoneListWhereUserId(userId)); } @RequestMapping(value = {"/cert/phone/findByCertPhoneInfo.do"}) @@ -100,9 +100,9 @@ public class CertPhoneController { } mberCertPhoneVO.setFrstRegisterId(userId); mberCertPhoneVO.setMberId(userId); + - - return ResponseEntity.ok().body(certPhoneService.insertCertPhone(mberCertPhoneVO)); + return ResponseEntity.ok().body(certPhoneService.insertCertPhone(mberCertPhoneVO, loginVO.getMoblphonNo())); } @RequestMapping(value = {"/cert/phone/updateCertPhone.do"}) @@ -119,6 +119,7 @@ public class CertPhoneController { if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); } mberCertPhoneVO.setFrstRegisterId(userId); + mberCertPhoneVO.setMberId(userId); return ResponseEntity.ok().body(certPhoneService.updateMberCertPhone(mberCertPhoneVO)); @@ -138,6 +139,7 @@ public class CertPhoneController { if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); } mberCertPhoneVO.setLastUpdusrId(userId); + mberCertPhoneVO.setMberId(userId); @@ -160,15 +162,16 @@ public class CertPhoneController { } mberCertPhoneVO.setMberId(userId); + // 번호 중복 확인 + MberCertPhoneVO mberCertIpListVO = (MberCertPhoneVO) certPhoneService.findByCertPhoneInfo(mberCertPhoneVO).getObject(); + if(mberCertIpListVO != null || loginVO.getMoblphonNo().equals(mberCertPhoneVO.getMbtlnum()) ) { + return ResponseEntity.ok().body(new StatusResponse(HttpStatus.CONFLICT, "등록된 번호입니다.", LocalDateTime.now())); + } - - - MjonMsgVO mjonMsgVO = new MjonMsgVO(); mjonMsgVO.setCallTo(mberCertPhoneVO.getMbtlnum()); MjonMsgReturnVO returnVO = mjonMsgDataService.sendSysMsgData(mjonMsgVO); - String resultSts = returnVO.getSendMsgCnt(); String resultBlockSts = returnVO.getSendMsgBlockCnt(); diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index 764ffb77..89320850 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -450,25 +450,6 @@ public class EgovMypageController { } - { - /** - * 보안인증 본인인증 기능추가 - * 20241120 원영현 과장 추가 - * */ - KmcCertChecker kmcCertCheck = new KmcCertChecker(); - - //kmc 본인인증 실/개발 서버 구분 - String serverNm = ""; - if(request.getServerName().contains("192.168.0.60") || request.getServerName().contains("localhost")) { - serverNm = request.getScheme() + "://192.168.0.60:8085"; - }else{ - serverNm = request.getScheme() + "://www.munjaon.co.kr"; - } - - AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); - model.addAttribute("certVO", certVO); - } - return "web/user/mberInfoIndex"; } @@ -2953,6 +2934,26 @@ public class EgovMypageController { if(loginVO == null) { return "redirect:/web/user/login/login.do"; } + + + { + /** + * 보안인증 본인인증 기능추가 + * 20241120 원영현 과장 추가 + * */ + KmcCertChecker kmcCertCheck = new KmcCertChecker(); + + //kmc 본인인증 실/개발 서버 구분 + String serverNm = ""; + if(request.getServerName().contains("192.168.0.60") || request.getServerName().contains("localhost")) { + serverNm = request.getScheme() + "://192.168.0.60:8085"; + }else{ + serverNm = request.getScheme() + "://www.munjaon.co.kr"; + } + + AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); + model.addAttribute("certVO", certVO); + } model.addAttribute("pageTab", "mberSecureLogin"); return "web/user/mberSecureLogin"; 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 78b4db94..b20ca1fd 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberInfoIndex.jsp @@ -476,10 +476,9 @@ function callTo() { 회원님 반갑습니다

    -<%-- --%> - - -<%-- --%> + + +
    나의
    단가
    @@ -582,119 +581,6 @@ function callTo() {
    - - - - - - - - - - - - -

    이용내역

    diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp index 5ad88a44..b718be59 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp @@ -3,6 +3,7 @@ <%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +
    @@ -425,6 +590,7 @@ function deleteRow(p_ip){

    최근 변경일시 : 2024-11-01 12:49

    + ON OFF
    @@ -433,23 +599,23 @@ function deleteRow(p_ip){ -
    -
    -

    보안로그인

    -
    - 현재 접속중인 IP : 000.000.000.00 [허용 IP] -
    -
    + + + + + + + -
    -

    최근 변경일시 : 2024-11-01 12:49

    + + -
    - ON - OFF -
    -
    -
    + + + + + + @@ -463,13 +629,13 @@ function deleteRow(p_ip){
    -
    +
    - + - + @@ -544,7 +710,7 @@ function deleteRow(p_ip){
    -

    로그인 내역 로그인 내역은 최대 90일까지만 보관됩니다.

    +

    로그인 내역 로그인 내역은 최대 3개월까지만 보관됩니다.

    From b7411be08ad3a886c617dd8b2ec8ae366740682d Mon Sep 17 00:00:00 2001 From: subsub Date: Thu, 21 Nov 2024 16:42:56 +0900 Subject: [PATCH 11/22] =?UTF-8?q?2024/11/21=20=EB=B3=B4=EC=95=88=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20on/off=20=EC=88=98=EC=A0=95,=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=9D=B8=20=EC=A0=95=EB=B3=B4=EC=B0=BD=20=EB=B3=B4?= =?UTF-8?q?=EC=95=88=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/publish/css/common.css | 8 ++ src/main/webapp/publish/images/icon_lock.png | Bin 0 -> 2036 bytes src/main/webapp/publish/js/content.js | 2 +- .../webapp/publish/mypage_index_2024.html | 104 ++++++++++++++---- 4 files changed, 90 insertions(+), 24 deletions(-) create mode 100644 src/main/webapp/publish/images/icon_lock.png diff --git a/src/main/webapp/publish/css/common.css b/src/main/webapp/publish/css/common.css index cb9d574c..c983fc56 100644 --- a/src/main/webapp/publish/css/common.css +++ b/src/main/webapp/publish/css/common.css @@ -151,6 +151,14 @@ caption, .label {position: absolute;width: 1px;height: 1px;margin: -1px;border: .login2 .check_money, .login2 .point, .login2 .event {white-space:nowrap;} + +/* 보안로그인 */ +.security_box{display:inline-flex;height:36px;font-weight:500;background:#fff;padding:0 11px;margin:0 0 0 10px;vertical-align:middle;border-radius:5px;align-items:center;} +.login2 .login_info .security_box i.icon_lock{display:inline-block;width:20px;height:18px;background:url(/publish/images/icon_lock.png) no-repeat center center;background-size:auto 100%;vertical-align:top;} +.security_box .state{font-size:13px;font-weight:600;padding:5px 10px;margin:0 0 0 5px;border-radius:5px;} +.security_box .state.on{border:1px solid #18bb59;background:#e7f8ee;color:#18bb59;} +.security_box .state.off{border:1px solid #e62c2c;background:#fce9e9;color:#e62c2c;} + /* //header */ diff --git a/src/main/webapp/publish/images/icon_lock.png b/src/main/webapp/publish/images/icon_lock.png new file mode 100644 index 0000000000000000000000000000000000000000..83d9630e9c33fe7baf64adb6d1f835ea5aa6bb18 GIT binary patch literal 2036 zcmbVN3v3f*94{#B!DEu~7#p(N5n)p5QSlheZ-PUdq z2@nX&Bxrb4&CpClNHD`fBno5*dn8i+e06KsQZMar7f~EXvS&F*mOlVvH1*r zh+0O|S8cg|TBjRuqQGHyS=Mhob*O6Ooaf@MA74CwPSMY!>Nig;o}BuMz3^m0YFfjZ zGr}bMz%6$MZ5h0&thskvLj1X%eRc=F>W!53i5XK$@)NT!CanGD($T|vuKwP&9NcW( zYQE8P_U*de-OE04m8EwU=Ed#)qa~x+Ltypl7fSu1*Plr_yrU(w zL`qF+U6`@yLi+KvM)%Q+$CtP7zkT#zD6@O`ofCN<9k_5T?MBbIj^>i|!()ES9C2&> z?ISBjR(&wo(~&*%&#n&>_kP+`u-C9A7|8tR*66-1*oNV+#l6?i+c7k`w_#&RI<{-! zNsIFoomI0V_%&FRsBf!pPdXiH$he$Wl}bvs!2b408(-d2IxjfltNgqxp6fHuH13?U z_=j=}amg+@L1E+Mzm6=-D(G48=GA@MKMuY>W$&;nwI%V*YXTQi97E@CUpe~Vg3F77 z>}O+Vk6rTJ5^3!IP)=!9{peBGs#~XQTetK}itO3>H$CR;k1P5%sGeWk&ko!gIM%%K z=7L?{o?D-1Irr1A^8#zThA!Qnc4OqeBXVmO@Ui)7z$erbAnNhat EU%3v)yZ`_I literal 0 HcmV?d00001 diff --git a/src/main/webapp/publish/js/content.js b/src/main/webapp/publish/js/content.js index 7cd4c197..62871e5b 100644 --- a/src/main/webapp/publish/js/content.js +++ b/src/main/webapp/publish/js/content.js @@ -70,7 +70,7 @@ $(document).ready(function () { }); /* 문자샘플 탭 선택 시 활성화 */ - $(".tab_depth1 a").click(function () { + $(".tab_depth1:not(.security_tab) a").click(function () { var tabText = $(this).text(); var tabPosi = $(this).position().left; tabPosi -= 1; diff --git a/src/main/webapp/publish/mypage_index_2024.html b/src/main/webapp/publish/mypage_index_2024.html index fffc111a..3736f21e 100644 --- a/src/main/webapp/publish/mypage_index_2024.html +++ b/src/main/webapp/publish/mypage_index_2024.html @@ -24,11 +24,26 @@ $(function () { // on/off 시 confirm 창 노출 - $('.security_set .tab_depth1 a').click(function () { - if ($(this).text().trim() == "ON") { - confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다"); - } else { - confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다."); + $('.security_tab a').click(function (e) { + console.log($(this).hasClass("on")) + if ($(this).hasClass("on") == false) { + if ($(this).text().trim() == "ON") { + if (!confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다")) { + $(this).removeClass("on"); + $(this).siblings("a").addClass("on"); + } else { + $(this).addClass("on"); + $(this).siblings("a").removeClass("on"); + } + } else { + if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.")) { + $(this).removeClass("on"); + $(this).siblings("a").addClass("on"); + } else { + $(this).addClass("on"); + $(this).siblings("a").removeClass("on"); + } + } } }); @@ -198,15 +213,52 @@
    - - + @@ -308,17 +360,23 @@ + - + - + - +
    010-0000-0000 메모 내용 2024-11-04 11:54
    010-0000-0000메모내용 2024-11-04 11:54
    @@ -376,7 +434,7 @@

    로그인 내역 로그인 내역은 최대 90일까지만 보관됩니다.

    -
    +
    From 4675554266504f133120628edf73968904cc6354 Mon Sep 17 00:00:00 2001 From: Eunjipark Date: Thu, 21 Nov 2024 17:14:26 +0900 Subject: [PATCH 12/22] =?UTF-8?q?2024/11/21=20=EB=B6=88=EB=B2=95=EC=8A=A4?= =?UTF-8?q?=ED=8C=B8=EB=B0=A9=EC=A7=80=EC=A0=95=EC=B1=85=20=EC=88=98?= =?UTF-8?q?=EC=A0=952?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/publish/service3_spam_2024.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/publish/service3_spam_2024.html b/src/main/webapp/publish/service3_spam_2024.html index 5d09e217..d669274a 100644 --- a/src/main/webapp/publish/service3_spam_2024.html +++ b/src/main/webapp/publish/service3_spam_2024.html @@ -235,7 +235,7 @@ KISA 불법 스팸방지를 위한 정보통신망법 안내서
    - 주식회사 아이티앤(이하 "회사”라 한다)은 편리한 서비스 이용과 스팸, 불법스팸으로 인한 폐해를 방지하기 위해 스팸방지정책을 수립하여 운영하고 있습니다. 회사가 제공하는 인터넷 + 주식회사 아이티앤(이하 “회사”라 한다)은 편리한 서비스 이용과 스팸, 불법스팸으로 인한 폐해를 방지하기 위해 스팸방지정책을 수립하여 운영하고 있습니다. 회사가 제공하는 인터넷 서비스 문자온(www.munjaon.co.kr, 이하 “서비스”)을 이용함에 있어, 아래와 같이 불법스팸(문자, 팩스, 음성, 메일)을 발송한 이용자에 대해서는 이용정지 및 해지, 형사고발 등의 조치를 취하겠습니다.
    From 265e29a513a2bcfcfcb8822de490deaeb88f7dd4 Mon Sep 17 00:00:00 2001 From: subsub Date: Thu, 21 Nov 2024 17:47:39 +0900 Subject: [PATCH 13/22] =?UTF-8?q?2024/11/21=20css=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/publish/css/content.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/webapp/publish/css/content.css b/src/main/webapp/publish/css/content.css index 77a9b6b3..87ee1125 100644 --- a/src/main/webapp/publish/css/content.css +++ b/src/main/webapp/publish/css/content.css @@ -1750,7 +1750,7 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px .fax_content .file_add.upload_table_wrap .file_upload_table tbody tr td p{display: inline-block; max-width: 83%; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; font-size: 15px; font-weight:400; color: #444; vertical-align: sub;} .fax_content .file_add.upload_table_wrap .file_upload_table tbody tr td .btn_file_del{width: 24px; height: 24px;} .fax_content .file_add.upload_table_wrap .file_upload_table tbody tr td img{margin-right: 0;} -.fax_content .file_right{display: inline-block; width: 150px; margin: 0 0 0 8px;} +.fax_content .file_right{display: inline-block; width: 149px; margin: 0 0 0 8px;} .fax_content .file_right button{width: 100%; max-width: 100%; margin: 0 0 4px 0;} .fax_content .file_right p{width: 100%; text-align: right; margin: 20px 0 0 0;} .fax_content .receipt_num_input{width: calc(100% - 300px); max-width: 340px;} From 2f58db34b1643925ec75d25266f282866ef88eaa Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 17:51:37 +0900 Subject: [PATCH 14/22] =?UTF-8?q?=EB=B3=B4=EC=95=88=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cert/ip/service/CertLoginLogService.java | 14 +++ .../cert/ip/service/MberCertLoginLogVO.java | 68 ++++++++++++ .../cert/ip/service/impl/CertLoginLogDAO.java | 41 +++++++ .../service/impl/CertLoginLogServiceImpl.java | 78 ++++++++++++++ .../cert/ip/web/CertLoginLogController.java | 102 ++++++++++++++++++ .../let/uat/uia/web/EgovLoginController.java | 13 +++ .../spring/com/context-idgen.xml | 19 ++++ .../mysql/sql-map-config-mysql-cert.xml | 5 +- .../let/cert/MjonCertLoginLog_SQL_mysql.xml | 45 ++++++++ .../WEB-INF/jsp/web/user/mberSecureLogin.jsp | 6 +- 10 files changed, 385 insertions(+), 6 deletions(-) create mode 100644 src/main/java/itn/let/cert/ip/service/CertLoginLogService.java create mode 100644 src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java create mode 100644 src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java create mode 100644 src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java create mode 100644 src/main/java/itn/let/cert/ip/web/CertLoginLogController.java create mode 100644 src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml diff --git a/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java b/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java new file mode 100644 index 00000000..3af77334 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java @@ -0,0 +1,14 @@ +package itn.let.cert.ip.service; + +import javax.servlet.http.HttpServletRequest; + +import egovframework.rte.fdl.cmmn.exception.FdlException; + +public interface CertLoginLogService { + + + public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO, HttpServletRequest request) throws FdlException; + + + +} diff --git a/src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java b/src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java new file mode 100644 index 00000000..b261e90f --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java @@ -0,0 +1,68 @@ +package itn.let.cert.ip.service; + +import itn.let.uss.umt.service.UserDefaultVO; +/** + * + * @author : 이호영 + * @fileName : MberCertLoginLogVO.java + * @date : 2024.11.21 + * @description : 로그인 이력관리 92동안만 관리하고 삭제 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.11.21 이호영 최초 생성 + * + * + * + */ +public class MberCertLoginLogVO extends UserDefaultVO{ + + + /** + * @description : + */ + private static final long serialVersionUID = 1L; + + + private String certLoginId; + private String loginId; + private String loginIp; + private String loginDevice; + private String loginDt; + + + public String getCertLoginId() { + return certLoginId; + } + public void setCertLoginId(String certLoginId) { + this.certLoginId = certLoginId; + } + public String getLoginId() { + return loginId; + } + public void setLoginId(String loginId) { + this.loginId = loginId; + } + public String getLoginIp() { + return loginIp; + } + public void setLoginIp(String loginIp) { + this.loginIp = loginIp; + } + public String getLoginDevice() { + return loginDevice; + } + public void setLoginDevice(String loginDevice) { + this.loginDevice = loginDevice; + } + public String getLoginDt() { + return loginDt; + } + public void setLoginDt(String loginDt) { + this.loginDt = loginDt; + } + + + + +} diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java new file mode 100644 index 00000000..5f81c14a --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java @@ -0,0 +1,41 @@ +package itn.let.cert.ip.service.impl; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import itn.let.cert.ip.service.MberCertLoginLogVO; + +@Repository("CertLoginLogDAO") +public class CertLoginLogDAO extends EgovAbstractDAO { + + +/* + public List selectMberCertIpList(MberCertIpVO mberCertIpVO) { + return (List) list("MberCertIpVO.selectMberCertIpList", mberCertIpVO); + } + + public void insertCertIp(MberCertIpVO mberCertIpVO) { + insert("MberCertIpVO.insertCertIp", mberCertIpVO); + } + + public void deleteCertIp(MberCertIpVO mberCertIpVO) { + insert("MberCertIpVO.deleteCertIp", mberCertIpVO); + } + + public MberCertIpVO findByMberCertIpList(MberCertIpVO mberCertIpVO) { + return (MberCertIpVO) select("MberCertIpVO.findByMberCertIpList", mberCertIpVO); + } +*/ + public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO) { + insert("MberCertLoginLogVO.insertCertLoginLog", mberCertLoginLogVO); + } + + public int checkLoginIpExists(MberCertLoginLogVO mberCertLoginLogVO) { + return (int) select("MberCertLoginLogVO.checkLoginIpExists", mberCertLoginLogVO); + } + + public void updateCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO) { + insert("MberCertLoginLogVO.updateCertLoginLog", mberCertLoginLogVO); + } + +} diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java new file mode 100644 index 00000000..bd256583 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java @@ -0,0 +1,78 @@ +package itn.let.cert.ip.service.impl; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import egovframework.rte.fdl.cmmn.exception.FdlException; +import egovframework.rte.fdl.idgnr.EgovIdGnrService; +import itn.let.cert.ip.service.CertLoginLogService; +import itn.let.cert.ip.service.MberCertLoginLogVO; + +@Service("CertLoginLogService") +public class CertLoginLogServiceImpl extends EgovAbstractServiceImpl implements CertLoginLogService { + + @Resource(name = "CertLoginLogDAO") + private CertLoginLogDAO certLoginLogDAO; + + @Resource(name = "egovMjonCertLoginLogIdGnrService") + private EgovIdGnrService certLoginLogIdGnrService; +/* + @Override + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO) { + List mberCertIpListVO = certLoginLogDAO.selectMberCertIpList(mberCertPhoneVO); + return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); + } + + + @Override + public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO) { + MberCertIpVO mberCertIpListVO = certLoginLogDAO.findByMberCertIpList(mberCertIpVO); + if(mberCertIpListVO != null) { + return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now()); + } + certLoginLogDAO.insertCertIp(mberCertIpVO); + return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now()); + } + + + @Override + public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO) { + certLoginLogDAO.deleteCertIp(mberCertIpVO); + return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now()); + } +*/ + + @Override + public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO, HttpServletRequest request) throws FdlException { + + + int count = certLoginLogDAO.checkLoginIpExists(mberCertLoginLogVO); + + if (count > 0) { + // 이미 존재하면 UPDATE + certLoginLogDAO.updateCertLoginLog(mberCertLoginLogVO); + } else { + + mberCertLoginLogVO.setCertLoginId(certLoginLogIdGnrService.getNextStringId()); + mberCertLoginLogVO.setLoginDevice(getDevice(request)); + certLoginLogDAO.insertCertLoginLog(mberCertLoginLogVO); + + } + } + + private String getDevice(HttpServletRequest request) { + String userAgent = request.getHeader("User-Agent").toLowerCase(); + + if (userAgent.contains("mobile") || userAgent.contains("android") || userAgent.contains("iphone")) { + return "M"; + } else if (userAgent.contains("tablet") || userAgent.contains("ipad")) { + return "T"; + } else { + return "D"; + } + } + +} diff --git a/src/main/java/itn/let/cert/ip/web/CertLoginLogController.java b/src/main/java/itn/let/cert/ip/web/CertLoginLogController.java new file mode 100644 index 00000000..0118a704 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/web/CertLoginLogController.java @@ -0,0 +1,102 @@ +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.CertLoginLogService; +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 CertLoginLogController { + + + /* CertLoginLogService */ + @Resource(name = "CertLoginLogService") + private CertLoginLogService certLoginLogService; + + /* + @RequestMapping(value = {"/cert/ip/selectMberCertIpList.do"}) + public ResponseEntity selectMberCertIpList(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())); + } + mberCertPhoneVO.setMberId(userId); + return ResponseEntity.ok().body(certLoginLogService.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(certLoginLogService.insertCertIp(mberCertIpVO)); + } + + @RequestMapping(value = {"/cert/ip/deleteCertIp.do"}) + public ResponseEntity deleteCertIp(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.setLastUpdusrId(userId); + mberCertIpVO.setMberId(userId); + + + return ResponseEntity.ok().body(certLoginLogService.deleteCertIp(mberCertIpVO)); + } + */ +} \ No newline at end of file diff --git a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java index e5eda7b6..f22c7e3c 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovLoginController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovLoginController.java @@ -83,6 +83,8 @@ import itn.com.cmm.util.StringUtil; import itn.com.cmm.util.WebUtil; import itn.com.uss.olh.hpc.service.HackIpService; import itn.com.uss.olh.hpc.service.HackIpVO; +import itn.let.cert.ip.service.CertLoginLogService; +import itn.let.cert.ip.service.MberCertLoginLogVO; import itn.let.cert.phone.service.CertPhoneService; import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.cop.bbs.service.BoardVO; @@ -242,6 +244,9 @@ public class EgovLoginController { @Resource(name = "CertPhoneService") private CertPhoneService certPhoneService; + @Resource(name = "CertLoginLogService") + private CertLoginLogService certLoginLogService; + private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class); /* 문자온 사용자 로그인 시작 */ @@ -1111,6 +1116,7 @@ public class EgovLoginController { // 공인 IP 구하기 String userIp = EgovClntInfo.getClntIP(request); + System.out.println("userIp :: "+userIp); // java.util.Scanner s = new java.util.Scanner(new // java.net.URL("https://api.ipify.org").openStream(), // "UTF-8").useDelimiter("\\A"); @@ -2664,7 +2670,14 @@ public class EgovLoginController { loginVO.getIp(); loginVO.setMessage("로그인 성공되었습니다."); loginVO.setLoginYn("Y"); + loginService.insertActionLoginLog(loginVO); + // 인증 로그인 이력을 위한 insert + + MberCertLoginLogVO mberCertLoginLogVO = new MberCertLoginLogVO(); + mberCertLoginLogVO.setLoginId(loginVO.getId()); + mberCertLoginLogVO.setLoginIp(loginVO.getIp()); + certLoginLogService.insertCertLoginLog(mberCertLoginLogVO, request); } // 등급제 Start diff --git a/src/main/resources/egovframework/spring/com/context-idgen.xml b/src/main/resources/egovframework/spring/com/context-idgen.xml index 4b5c4923..727e2847 100644 --- a/src/main/resources/egovframework/spring/com/context-idgen.xml +++ b/src/main/resources/egovframework/spring/com/context-idgen.xml @@ -2849,5 +2849,24 @@ + + + + + + + + + + + + + + + + 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 index 081c2f5f..98a25d13 100644 --- 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 @@ -3,6 +3,7 @@ - - + + + diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml new file mode 100644 index 00000000..55517b16 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml @@ -0,0 +1,45 @@ + + + + + + + + + + INSERT INTO LETTNGNRLMBER_CERT_LOGIN_LOG_IP + ( + CERT_LOGIN_ID, + LOGIN_ID, + LOGIN_IP, + LOGIN_DEVICE, + LOGIN_DT + ) + VALUES + ( + #certLoginId#, + #loginId#, + #loginIp#, + #loginDevice#, + NOW() + ) + + + + + UPDATE LETTNGNRLMBER_CERT_LOGIN_LOG_IP + SET LOGIN_DT = NOW() + WHERE LOGIN_IP = #loginIp# + AND LOGIN_ID = #loginId# + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp index b718be59..d4879c9a 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp @@ -20,10 +20,8 @@ $(document).ready(function(){ // on/off 시 confirm 창 노출 $('.security_set .tab_depth1 a').click(function () { if ($(this).text().trim() == "ON") { - if(!confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다")){ - console.log('???'); - return false; - } + confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다"); + } else { confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다."); openKMCISWindow(); From 9b3a4a3362605a97652e05a777cfb358f142496b Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 20:11:38 +0900 Subject: [PATCH 15/22] =?UTF-8?q?=EB=B3=B4=EC=95=88=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=A7=84=ED=96=89=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/cert/ip/service/CertIpService.java | 7 ++ .../cert/ip/service/CertLoginLogService.java | 5 ++ .../let/cert/ip/service/impl/CertIpDAO.java | 8 ++ .../ip/service/impl/CertIpServiceImpl.java | 25 +++++- .../cert/ip/service/impl/CertLoginLogDAO.java | 6 ++ .../service/impl/CertLoginLogServiceImpl.java | 9 +++ .../let/uat/uia/web/EgovMypageController.java | 71 ++++++++++++++++- .../sqlmap/let/cert/MjonCertIp_SQL_mysql.xml | 29 +++++++ .../let/cert/MjonCertLoginLog_SQL_mysql.xml | 30 +++++++ .../WEB-INF/jsp/web/user/mberSecureLogin.jsp | 79 ++++++------------- 10 files changed, 211 insertions(+), 58 deletions(-) diff --git a/src/main/java/itn/let/cert/ip/service/CertIpService.java b/src/main/java/itn/let/cert/ip/service/CertIpService.java index b4b58285..49fd964c 100644 --- a/src/main/java/itn/let/cert/ip/service/CertIpService.java +++ b/src/main/java/itn/let/cert/ip/service/CertIpService.java @@ -1,5 +1,7 @@ package itn.let.cert.ip.service; +import java.util.List; + import itn.let.mail.service.StatusResponse; public interface CertIpService { @@ -22,6 +24,11 @@ public interface CertIpService { public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO); + public Boolean checkCertIp(MberCertIpVO mberCertIpVO); + + public Boolean checkRegCertIp(MberCertIpVO mberCertIpVO); + + } diff --git a/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java b/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java index 3af77334..c0bb6484 100644 --- a/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java +++ b/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java @@ -1,5 +1,7 @@ package itn.let.cert.ip.service; +import java.util.List; + import javax.servlet.http.HttpServletRequest; import egovframework.rte.fdl.cmmn.exception.FdlException; @@ -9,6 +11,9 @@ public interface CertLoginLogService { public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO, HttpServletRequest request) throws FdlException; + public List findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO); + + } 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 index e1e2278c..f76ba664 100644 --- a/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java @@ -27,5 +27,13 @@ public class CertIpDAO extends EgovAbstractDAO { public MberCertIpVO findByMberCertIpList(MberCertIpVO mberCertIpVO) { return (MberCertIpVO) select("MberCertIpVO.findByMberCertIpList", mberCertIpVO); } + + public List checkCertIp(MberCertIpVO mberCertIpVO) { + return (List) list("MberCertIpVO.checkCertIp", mberCertIpVO); + } + + public List checkRegCertIp(MberCertIpVO mberCertIpVO) { + return (List) list("MberCertIpVO.checkRegCertIp", 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 index 023efcc4..31e4e6e6 100644 --- a/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java @@ -21,8 +21,8 @@ public class CertIpServiceImpl extends EgovAbstractServiceImpl implements CertIp @Override - public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO) { - List mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertPhoneVO); + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertIpVO) { + List mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertIpVO); return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); } @@ -43,5 +43,26 @@ public class CertIpServiceImpl extends EgovAbstractServiceImpl implements CertIp certIpDAO.deleteCertIp(mberCertIpVO); return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now()); } + + + @Override + public Boolean checkCertIp(MberCertIpVO mberCertIpVO) { + List mberCertIpListVO = certIpDAO.checkCertIp(mberCertIpVO); + if(mberCertIpListVO.size()>0) { + return true; + }else { + return false; + } + } + + @Override + public Boolean checkRegCertIp(MberCertIpVO mberCertIpVO) { + List mberCertIpListVO = certIpDAO.checkRegCertIp(mberCertIpVO); + if(mberCertIpListVO.size()>0) { + return true; + }else { + return false; + } + } } diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java index 5f81c14a..8bc7b868 100644 --- a/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java +++ b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java @@ -1,5 +1,7 @@ package itn.let.cert.ip.service.impl; +import java.util.List; + import org.springframework.stereotype.Repository; import egovframework.rte.psl.dataaccess.EgovAbstractDAO; @@ -37,5 +39,9 @@ public class CertLoginLogDAO extends EgovAbstractDAO { public void updateCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO) { insert("MberCertLoginLogVO.updateCertLoginLog", mberCertLoginLogVO); } + + public List findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO) { + return (List) list("MberCertLoginLogVO.findAllCertLoginLogVO", mberCertLoginLogVO); + } } diff --git a/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java index bd256583..d052ce9b 100644 --- a/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java +++ b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java @@ -1,5 +1,7 @@ package itn.let.cert.ip.service.impl; +import java.util.List; + import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -75,4 +77,11 @@ public class CertLoginLogServiceImpl extends EgovAbstractServiceImpl implements } } + @Override + public List findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO) { + // TODO Auto-generated method stub + return certLoginLogDAO.findAllCertLoginLogVO(mberCertLoginLogVO); + + } + } diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index 89320850..5e707225 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -41,6 +41,10 @@ import itn.com.cmm.util.MJUtil; import itn.com.cmm.util.RedirectUrlMaker; import itn.com.cmm.util.StringUtil; import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.cert.ip.service.CertIpService; +import itn.let.cert.ip.service.CertLoginLogService; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.cert.ip.service.MberCertLoginLogVO; import itn.let.fax.user.service.FaxGroupDataVO; import itn.let.fax.user.service.FaxService; import itn.let.kakao.user.sent.service.KakaoSentService; @@ -70,6 +74,7 @@ import itn.let.uss.umt.service.EgovMberManageService; import itn.let.uss.umt.service.EgovUserManageService; import itn.let.uss.umt.service.MberManageVO; import itn.let.uss.umt.service.UserManageVO; +import itn.let.utl.sim.service.EgovClntInfo; import itn.let.utl.user.service.MjonNoticeSendUtil; /** @@ -164,6 +169,14 @@ public class EgovMypageController { /** 등급제 관리 서비스 */ @Resource(name = "mberGrdService") MberGrdService mberGrdService; + +// /* CertLoginLogService */ + @Resource(name = "CertLoginLogService") + private CertLoginLogService certLoginLogService; + +// /* CertLoginLogService */ + @Resource(name = "CertIpService") + private CertIpService certIpService; /** * 마이페이지 비밀번호 변경 탭 @@ -2927,13 +2940,58 @@ public class EgovMypageController { * 회원탈퇴 본인인증 화면 */ @RequestMapping(value="/web/user/mberSecureLogin.do") - public String secureLogin(@ModelAttribute MberManageVO mberManageVO + public String secureLogin(@ModelAttribute("mberCertLoginLogVO") MberCertLoginLogVO mberCertLoginLogVO , ModelMap model, HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception { LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; if(loginVO == null) { return "redirect:/web/user/login/login.do"; } + + //로그인 권한정보 불러오기 + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + + mberCertLoginLogVO.setLoginId(userId); + /** pageing */ + PaginationInfo paginationInfo = new PaginationInfo(); + paginationInfo.setCurrentPageNo(mberCertLoginLogVO.getPageIndex()); + paginationInfo.setRecordCountPerPage(mberCertLoginLogVO.getPageUnit()); + paginationInfo.setPageSize(mberCertLoginLogVO.getPageSize()); + + mberCertLoginLogVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); + mberCertLoginLogVO.setLastIndex(paginationInfo.getLastRecordIndex()); + mberCertLoginLogVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); + if("".equals(mberCertLoginLogVO.getSearchSortCnd())){ //최초조회시 최신것 조회List + mberCertLoginLogVO.setSearchSortCnd("LOGIN_DT"); + mberCertLoginLogVO.setSearchSortOrd("asc"); + } + + + //전체 발송 리스트 불러오기 + List resultList = certLoginLogService.findAllCertLoginLogVO(mberCertLoginLogVO); + model.addAttribute("resultList", resultList); + model.addAttribute("resultListCnt", resultList.size()); + + + paginationInfo.setTotalRecordCount( resultList.size()> 0 ? resultList.get(0).getTotCnt() : 0); + model.addAttribute("paginationInfo", paginationInfo); + + + + + // 접속 IP + String cennectIP = EgovClntInfo.getClntIP(request); + model.addAttribute("cennectIP", cennectIP); + + // 접속 IP가 등록되어있는지 확인 + MberCertIpVO mberCertIpVO = new MberCertIpVO(); + mberCertIpVO.setCertIp(cennectIP); + mberCertIpVO.setMberId(userId); + model.addAttribute("chkcertRegIP", certIpService.checkRegCertIp(mberCertIpVO)); + + + { @@ -2954,6 +3012,8 @@ public class EgovMypageController { AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); model.addAttribute("certVO", certVO); } + + model.addAttribute("pageTab", "mberSecureLogin"); return "web/user/mberSecureLogin"; @@ -3773,12 +3833,17 @@ public class EgovMypageController { certVO.setCertNation(kmcVO.getNation()); certVO.setCertName(kmcVO.getName()); certVO.setCertResult(kmcVO.getResult()); - certVO.setCertType("KMC_회원정보 변경"); + certVO.setCertType("dddddddddddddddddddddd"); certVO.setCertIpaddr(kmcVO.getIp()); certVO.setBirthDay(kmcVO.getBirthDay()); certVO.setSexdstnCode(kmcVO.getGender()); - model.addAttribute("kmcVO", kmcVO); + + //디비 테이블에 저장하기 + mberManageService.insertCertInfoLog(certVO); + + + return "web/user/securityAuthnPage"; } 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 index cb7b6da6..09b820a2 100644 --- a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml @@ -86,4 +86,33 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml index 55517b16..afc29c29 100644 --- a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml @@ -8,6 +8,36 @@ + + + + + + +
    @@ -579,8 +588,10 @@ function callTo() {

    보안로그인

    - 현재 접속중인 IP : 000.000.000.00 - + 현재 접속중인 IP : [허용 IP] + + +
    @@ -726,62 +737,19 @@ function callTo() {
    + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + +
    2024-11-20 13:57:12119.193.215.98PC
    2024-11-20 13:57:12119.193.215.98모바일
    2024-11-20 13:57:12119.193.215.98PC
    2024-11-20 13:57:12119.193.215.98모바일
    2024-11-20 13:57:12119.193.215.98PC
    2024-11-20 13:57:12119.193.215.98모바일
    2024-11-20 13:57:12119.193.215.98PC
    2024-11-20 13:57:12119.193.215.98모바일
    2024-11-20 13:57:12119.193.215.98PC
    2024-11-20 13:57:12119.193.215.98모바일
    -
      + - +
    pagination + --> + +
      + +
    +
    From 3dceedeabc414f774a2ddfa743a9d89de720001d Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 20:29:12 +0900 Subject: [PATCH 16/22] =?UTF-8?q?=ED=97=88=EC=9A=A9IP=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../itn/let/cert/ip/web/CertIpController.java | 25 +++++++++++++++++++ .../WEB-INF/jsp/web/user/mberSecureLogin.jsp | 21 +++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/main/java/itn/let/cert/ip/web/CertIpController.java b/src/main/java/itn/let/cert/ip/web/CertIpController.java index 8dfb6947..425106eb 100644 --- a/src/main/java/itn/let/cert/ip/web/CertIpController.java +++ b/src/main/java/itn/let/cert/ip/web/CertIpController.java @@ -3,6 +3,7 @@ package itn.let.cert.ip.web; import java.time.LocalDateTime; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.springframework.http.HttpStatus; @@ -17,6 +18,7 @@ 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; +import itn.let.utl.sim.service.EgovClntInfo; /** * @@ -79,6 +81,29 @@ public class CertIpController { return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO)); } + + @RequestMapping(value = {"/cert/ip/insertCennetCertIp.do"}) + public ResponseEntity insertCennetCertIp(MberCertIpVO mberCertIpVO,HttpServletRequest request) 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); + + mberCertIpVO.setCertIp(EgovClntInfo.getClntIP(request)); + mberCertIpVO.setCertMemo("허용 IP 등록"); + + return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO)); + } + @RequestMapping(value = {"/cert/ip/deleteCertIp.do"}) public ResponseEntity deleteCertIp(MberCertIpVO mberCertIpVO) throws Exception { diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp index 67b26981..3b58cfe0 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp @@ -13,7 +13,26 @@ $(document).ready(function(){ // 허용 IP 등록 $(".btn_allow_ip_add").click(function () { if (confirm("현재 접속중인 IP를 접속 허용 IP로 등록하시겠습니까?")) { - alert("접속 허용 IP 등록이 완료되었습니다."); + + $.ajax({ + type: "POST", + url: "/cert/ip/insertCennetCertIp.do", + data: null, + dataType:'json', + async: false, + success: function (returnData) { + if(returnData.status == 'OK'){ + alert("접속 허용 IP 등록이 완료되었습니다."); + location.reload(); + } + else + { + alert("오류가 발생하였습니다."); + } + }, + error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } + }); + } else {} }); From 2ef22663d8a9b189905d1a6da8cfdd739a0426a4 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 20:54:38 +0900 Subject: [PATCH 17/22] =?UTF-8?q?=EB=B3=B4=EC=95=88=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=ED=86=A0=EA=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../let/uat/uia/web/EgovMypageController.java | 4 +- .../WEB-INF/jsp/web/user/mberSecureLogin.jsp | 40 ++++++++++++++----- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index 5e707225..7733e9f8 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -2952,7 +2952,6 @@ public class EgovMypageController { String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); - mberCertLoginLogVO.setLoginId(userId); /** pageing */ PaginationInfo paginationInfo = new PaginationInfo(); paginationInfo.setCurrentPageNo(mberCertLoginLogVO.getPageIndex()); @@ -2967,7 +2966,8 @@ public class EgovMypageController { mberCertLoginLogVO.setSearchSortOrd("asc"); } - + + mberCertLoginLogVO.setLoginId(userId); //전체 발송 리스트 불러오기 List resultList = certLoginLogService.findAllCertLoginLogVO(mberCertLoginLogVO); model.addAttribute("resultList", resultList); diff --git a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp index 3b58cfe0..f97d3832 100644 --- a/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp @@ -37,14 +37,37 @@ $(document).ready(function(){ }); // on/off 시 confirm 창 노출 - $('.security_set .tab_depth1 a').click(function () { - if ($(this).text().trim() == "ON") { - confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다"); - - } else { - confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다."); - openKMCISWindow(); + $('.security_tab a').click(function (e) { + + + console.log($(this).hasClass("on")) + if ($(this).hasClass("on") == false) { + if ($(this).text().trim() == "ON") { + if (!confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다")) { + $(this).removeClass("on"); + $(this).siblings("a").addClass("on"); + } else { + $(this).addClass("on"); + $(this).siblings("a").removeClass("on"); + } + } else { + if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.")) { + $(this).removeClass("on"); + $(this).siblings("a").addClass("on"); + } else { + $(this).addClass("on"); + $(this).siblings("a").removeClass("on"); + openKMCISWindow(); + } + } } + + + + + + + }); // 인증번호 발송 버튼 @@ -617,8 +640,7 @@ function linkPage(pageNo){

    최근 변경일시 : 2024-11-01 12:49

    -
    - + From 7a38574459f5349bd058006ace4ee18780696196 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 20:57:16 +0900 Subject: [PATCH 18/22] =?UTF-8?q?=EB=B3=B4=EC=95=88=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20top?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp | 5 +++++ src/main/webapp/publish/mypage_index_2024.html | 1 + 2 files changed, 6 insertions(+) diff --git a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp index 7ec061a8..e7bab983 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp @@ -1645,6 +1645,11 @@ function actionLogin() {
    +
    +

    보안로그인

    + ON + +