From 2f58db34b1643925ec75d25266f282866ef88eaa Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Thu, 21 Nov 2024 17:51:37 +0900 Subject: [PATCH 01/18] =?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 02/18] =?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:12 - 119.193.215.98 - PC - - - 2024-11-20 13:57:12 - 119.193.215.98 - 모바일 - - - 2024-11-20 13:57:12 - 119.193.215.98 - PC - - - 2024-11-20 13:57:12 - 119.193.215.98 - 모바일 - - - 2024-11-20 13:57:12 - 119.193.215.98 - PC - - - 2024-11-20 13:57:12 - 119.193.215.98 - 모바일 - - - 2024-11-20 13:57:12 - 119.193.215.98 - PC - - - 2024-11-20 13:57:12 - 119.193.215.98 - 모바일 - - - 2024-11-20 13:57:12 - 119.193.215.98 - PC - - - 2024-11-20 13:57:12 - 119.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 03/18] =?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 04/18] =?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 05/18] =?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 + +