diff --git a/src/main/java/itn/com/cmm/LoginVO.java b/src/main/java/itn/com/cmm/LoginVO.java index 5394ae54..3c4d2dcd 100644 --- a/src/main/java/itn/com/cmm/LoginVO.java +++ b/src/main/java/itn/com/cmm/LoginVO.java @@ -114,6 +114,11 @@ public class LoginVO implements Serializable{ private String dormantYn; // 휴먼회원여부 ( N:일반회원, Y:휴먼회원) + /** + * 보안로그인 여부 + */ + private String secuLoginFlag; + public String getDormantYn() { return dormantYn; } @@ -411,5 +416,12 @@ public class LoginVO implements Serializable{ public void setOuterCertYn(String outerCertYn) { this.outerCertYn = outerCertYn; } + public String getSecuLoginFlag() { + return secuLoginFlag; + } + public void setSecuLoginFlag(String secuLoginFlag) { + this.secuLoginFlag = secuLoginFlag; + } + } 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 new file mode 100644 index 00000000..c0bb6484 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/CertLoginLogService.java @@ -0,0 +1,19 @@ +package itn.let.cert.ip.service; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import egovframework.rte.fdl.cmmn.exception.FdlException; + +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/MberCertLoginLogVO.java b/src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java new file mode 100644 index 00000000..6ad79286 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java @@ -0,0 +1,76 @@ +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; + + private String secuLoginFlag; + + + 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; + } + public String getSecuLoginFlag() { + return secuLoginFlag; + } + public void setSecuLoginFlag(String secuLoginFlag) { + this.secuLoginFlag = secuLoginFlag; + } + + + + +} 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 new file mode 100644 index 00000000..8bc7b868 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java @@ -0,0 +1,47 @@ +package itn.let.cert.ip.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import itn.let.cert.ip.service.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); + } + + 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 new file mode 100644 index 00000000..07a90c1b --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java @@ -0,0 +1,87 @@ +package itn.let.cert.ip.service.impl; + +import java.util.List; + +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"; + } + } + + @Override + public List findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO) { + // TODO Auto-generated method stub + return certLoginLogDAO.findAllCertLoginLogVO(mberCertLoginLogVO); + + } + +} 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/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/cert/phone/service/impl/CertPhoneServiceImpl.java b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java index bf9296bf..2fae49c5 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 @@ -29,11 +29,22 @@ public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements Cer @Override 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()); + System.out.println("findByCertPhoneInfo : :::: "); + try { + + MberCertPhoneVO mberCertPhoneListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); + if(mberCertPhoneListVO != null) { + if(mberCertPhoneListVO.getMbtlnum().equals(moblphonNo)) { + return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now()); + } + } + + certPhoneDAO.insertCertPhone(mberCertPhoneVO); + + } catch (Exception e) { + e.printStackTrace(); // TODO: handle exception + return new StatusResponse(HttpStatus.OK, "오류가 발생하였습니다.", LocalDateTime.now()); } - certPhoneDAO.insertCertPhone(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 index aaabf8c8..4bef193e 100644 --- a/src/main/java/itn/let/cert/phone/web/CertPhoneController.java +++ b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java @@ -91,6 +91,9 @@ public class CertPhoneController { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("jsonView"); + + System.out.println(" :: insertCertPhone :: "); + //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); @@ -119,7 +122,9 @@ public class CertPhoneController { if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); } mberCertPhoneVO.setFrstRegisterId(userId); - mberCertPhoneVO.setMberId(userId); + if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) { + mberCertPhoneVO.setMberId(userId); + } return ResponseEntity.ok().body(certPhoneService.updateMberCertPhone(mberCertPhoneVO)); @@ -139,8 +144,10 @@ public class CertPhoneController { if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); } mberCertPhoneVO.setLastUpdusrId(userId); - mberCertPhoneVO.setMberId(userId); - + + if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) { + mberCertPhoneVO.setMberId(userId); + } return ResponseEntity.ok().body(certPhoneService.deleteCertPhone(mberCertPhoneVO)); @@ -153,6 +160,7 @@ public class CertPhoneController { @RequestMapping(value = {"/cert/phone/sendSysMsgDataAjax.do"}) public ResponseEntity sendSysMsgDataAjax(MberCertPhoneVO mberCertPhoneVO) throws Exception { + //로그인 권한정보 불러오기 LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); diff --git a/src/main/java/itn/let/main/web/EgovMainController.java b/src/main/java/itn/let/main/web/EgovMainController.java index cbb14ab0..200e253b 100644 --- a/src/main/java/itn/let/main/web/EgovMainController.java +++ b/src/main/java/itn/let/main/web/EgovMainController.java @@ -825,7 +825,7 @@ public class EgovMainController { try { //0번째 부터 6개의 항목만 조회 MjonMsgVO mjonMsgVO = new MjonMsgVO(); - adminMemLoginThisMonth = mjonMsgService.selectMemLoginThisMonth(mjonMsgVO); + //adminMemLoginThisMonth = mjonMsgService.selectMemLoginThisMonth(mjonMsgVO); } catch(Exception e) { isSuccess = false; diff --git a/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java b/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java index b51976bc..8a379cdc 100644 --- a/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java +++ b/src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java @@ -604,6 +604,15 @@ public class EgovMberManageServiceImpl extends EgovAbstractServiceImpl implement return resultCnt; } + + @Override + public String getSecuLoginFlag(String id) { + // TODO Auto-generated method stub + return mberManageDAO.getSecuLoginFlag(id); + } + public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception { + mberManageDAO.updateSecureLoginFlag(mberManageVO); + } } \ No newline at end of file diff --git a/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java b/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java index 2068d743..3b215c01 100644 --- a/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java +++ b/src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java @@ -332,5 +332,13 @@ public class MberManageDAO extends EgovComAbstractDAO{ return resultCnt; } + + public String getSecuLoginFlag(String id) { + return (String)select("mberManageDAO.getSecuLoginFlag", id); + } + + public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception { + update("mberManageDAO.updateSecureLoginFlag",mberManageVO); + } } \ 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..ad7dad03 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,10 @@ 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.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.cert.phone.service.CertPhoneService; import itn.let.cert.phone.service.MberCertPhoneVO; import itn.let.cop.bbs.service.BoardVO; @@ -242,6 +246,12 @@ public class EgovLoginController { @Resource(name = "CertPhoneService") private CertPhoneService certPhoneService; + @Resource(name = "CertLoginLogService") + private CertLoginLogService certLoginLogService; + + @Resource(name = "CertIpService") + private CertIpService certIpService; + private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class); /* 문자온 사용자 로그인 시작 */ @@ -1111,6 +1121,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"); @@ -2066,6 +2077,35 @@ public class EgovLoginController { modelAndView.addObject("data", resultVO); modelAndView.addObject("mberCertPhoneList", mberCertPhoneList); + + + + /* 일시 : 2024.11.21 + * 내용 : 패스 인증 조회 + * 작업자 : 이호영 + */ + String userId = loginVO.getId(); + // lettngnrlmber TB에 secuLoginFlag 값이 Y면 인증 해야함 + String secuLoginFlag = mberManageService.getSecuLoginFlag(userId); + + String passFlag = "Y"; + if("Y".equals(secuLoginFlag)) { + // lettngnrlmber TB에 secuLoginFlag 값이 Y면 + // IP가 등록 되어 있는지 확인 + // 있으면 2차인증 안함 + // 없으면 2차인증 진행 + MberCertIpVO mberCertIpVO = new MberCertIpVO(); + mberCertIpVO.setCertIp(userIp); + mberCertIpVO.setMberId(userId); + // ip가 있으면 true + if(!certIpService.checkCertIp(mberCertIpVO)) { + passFlag = "N"; + } + } + modelAndView.addObject("passFlag", passFlag); + + + return modelAndView; @@ -2461,14 +2501,24 @@ public class EgovLoginController { sendLogVO.setSendId(id); sendLogVO.setReceive(s_hp); sendLogVO.setCheckNo(s_num); - - sendLogVO = mjonMsgDataService.selectSysMsgLogCheck(sendLogVO); - if (sendLogVO==null) { - redirectAttributes.addFlashAttribute("fail2", true); - return "redirect:/web/user/login/login.do"; - } + String passFlag = request.getParameter("passFlag"); + System.out.println("passFlag : "+ passFlag); + System.out.println("passFlag : "+ passFlag); + System.out.println("passFlag : "+ passFlag); + System.out.println("passFlag : "+ passFlag); + System.out.println("passFlag : "+ passFlag); + System.out.println("passFlag : "+ passFlag); + if("Y".equals(passFlag)) { + sendLogVO = mjonMsgDataService.selectSysMsgLogCheck(sendLogVO); + + if (sendLogVO==null) { + redirectAttributes.addFlashAttribute("fail2", true); + return "redirect:/web/user/login/login.do"; + } + + } String password = decryptRsa(privateKey, loginVO.getPassword()); loginVO.setId(id); @@ -2664,7 +2714,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/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index 89320850..bada585e 100644 --- a/src/main/java/itn/let/uat/uia/web/EgovMypageController.java +++ b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java @@ -16,9 +16,12 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; @@ -41,6 +44,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 +77,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 +172,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 +2943,62 @@ 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"; } + + // secuLoginFlag 값을 Model에 추가 + model.addAttribute("secuLoginFlag", mberCertLoginLogVO.getSecuLoginFlag()); + System.out.println(mberCertLoginLogVO.getSecuLoginFlag()); + + //로그인 권한정보 불러오기 + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + + /** 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("desc"); + } + + + mberCertLoginLogVO.setLoginId(userId); + //전체 발송 리스트 불러오기 + 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)); + + + { @@ -2951,11 +3016,20 @@ public class EgovMypageController { serverNm = request.getScheme() + "://www.munjaon.co.kr"; } + System.out.println("@@@ serverNm : " + serverNm); AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); model.addAttribute("certVO", certVO); } + + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setMberId(loginVO.getId()); + + model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO)); + + model.addAttribute("pageTab", "mberSecureLogin"); + + - model.addAttribute("pageTab", "mberSecureLogin"); return "web/user/mberSecureLogin"; } @@ -3773,14 +3847,47 @@ public class EgovMypageController { certVO.setCertNation(kmcVO.getNation()); certVO.setCertName(kmcVO.getName()); certVO.setCertResult(kmcVO.getResult()); - certVO.setCertType("KMC_회원정보 변경"); + certVO.setCertType("secureLoginOFF"); certVO.setCertIpaddr(kmcVO.getIp()); certVO.setBirthDay(kmcVO.getBirthDay()); certVO.setSexdstnCode(kmcVO.getGender()); - model.addAttribute("kmcVO", kmcVO); + + //디비 테이블에 저장하기 + mberManageService.insertCertInfoLog(certVO); + + + return "web/user/securityAuthnPage"; } + @RequestMapping(value="/web/user/mberSecureLoginAjax.do") + public ResponseEntity mberSecureLoginAjax(MberManageVO mberManageVO, @RequestBody Map params){ + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if("Y".equals(params.get("secuLoginFlag"))) { + mberManageVO.setSecuLoginFlag("N"); + }else { + mberManageVO.setSecuLoginFlag("Y"); + } + mberManageVO.setMberId(userId); + mberManageVO.setLastUpdusrId(userId); + + try { + mberManageService.updateSecureLoginFlag(mberManageVO); + + return new ResponseEntity<>("success", HttpStatus.OK); + } catch (Exception e) { + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!"); + + return new ResponseEntity<>("fail", HttpStatus.OK); + } + } + } diff --git a/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java b/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java index 80dbc8b5..3fe6f758 100644 --- a/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java +++ b/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java @@ -617,6 +617,8 @@ public class KmcCertChecker { String cpId = "MJOM1001"; // 회원사ID String urlCode = "001014"; // URL코드 //kmc 본인인증 실/개발 서버 구분 + + System.out.println("@@@@@ trUrl : " + trUrl); if(trUrl.contains("192.168.0.60") || trUrl.contains("localhost")) { urlCode = "010001"; } diff --git a/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java b/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java index e03cbeff..4a512331 100644 --- a/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java +++ b/src/main/java/itn/let/uss/umt/service/EgovMberManageService.java @@ -243,4 +243,9 @@ public interface EgovMberManageService { //기업회원 기업정보 변경신청 취소 처리 public int updateCmpUserInfoCancel(MberManageVO mberManageVO) throws Exception; + + public String getSecuLoginFlag(String id); + + public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception; + } \ No newline at end of file diff --git a/src/main/java/itn/let/uss/umt/service/MberManageVO.java b/src/main/java/itn/let/uss/umt/service/MberManageVO.java index d7d5ee45..c0364852 100644 --- a/src/main/java/itn/let/uss/umt/service/MberManageVO.java +++ b/src/main/java/itn/let/uss/umt/service/MberManageVO.java @@ -504,6 +504,12 @@ public class MberManageVO extends UserDefaultVO{ private String dormantDate; private String spamYn; + + /** + * 보안로그인 여부 + */ + private String secuLoginFlag; + public String getSpamYn() { return spamYn; } @@ -1784,5 +1790,12 @@ public class MberManageVO extends UserDefaultVO{ public void setHotlineAgentCode(String hotlineAgentCode) { this.hotlineAgentCode = hotlineAgentCode; } + public String getSecuLoginFlag() { + return secuLoginFlag; + } + public void setSecuLoginFlag(String secuLoginFlag) { + this.secuLoginFlag = secuLoginFlag; + } + } \ No newline at end of file diff --git a/src/main/java/itn/web/MainController.java b/src/main/java/itn/web/MainController.java index 5c0106bc..38de9d90 100644 --- a/src/main/java/itn/web/MainController.java +++ b/src/main/java/itn/web/MainController.java @@ -1223,6 +1223,13 @@ public class MainController { model.addAttribute("userCandidateYn", userCandidateYn); + if(loginVO != null) { + MberManageVO mberManageVO = new MberManageVO(); + mberManageVO.setMberId(loginVO.getId()); + + model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO)); + } + return "web/com/webCommonHeader"; } 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/spring/com/context-scheduling-sym-log-lgm.xml b/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml index 956c4139..b330f2b6 100644 --- a/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml +++ b/src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml @@ -127,21 +127,21 @@ - + - - + + - + - + @@ -157,7 +157,7 @@ - + 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/MjonCertIp_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml index cb7b6da6..b789c128 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 @@ -23,7 +23,7 @@ where MBER_ID = #mberId# AND CERT_USE_YN = 'Y' - order by FRST_REGIST_PNTTM desc + order by FRST_REGIST_PNTTM asc + /*MberCertIpVO.checkCertIp*/ + + select + LOGIN_IP as certIp + from lettngnrlmber_cert_login_log_ip + where LOGIN_ID = #mberId# + and LOGIN_IP = #certIp# + union all + select + CERT_IP as certIp + from lettngnrlmber_cert_ip + where MBER_ID = #mberId# + and CERT_IP = #certIp# + AND CERT_USE_YN = 'Y' + + + + + \ 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 new file mode 100644 index 00000000..6f4bd427 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + 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/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index 1c4cd0c4..229f9c1a 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 @@ -5972,6 +5972,7 @@ + + + select SECU_LOGIN_FLAG from lettngnrlmber where MBER_ID = #id# + + + + + + UPDATE LETTNGNRLMBER SET + SECU_LOGIN_FLAG = #secuLoginFlag# + ,LAST_UPDUSR_ID = #lastUpdusrId# + WHERE MBER_ID = #mberId# + + + diff --git a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml index cffb8d00..1029ce20 100644 --- a/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml @@ -1206,6 +1206,7 @@ , A.EMAIL_YN AS emailYN , A.SMS_YN AS smsYN + , A.SECU_LOGIN_FLAG AS secuLoginFlag FROM LETTNGNRLMBER A 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..4628adee 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp @@ -41,6 +41,42 @@ + +