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 new file mode 100644 index 00000000..49fd964c --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/CertIpService.java @@ -0,0 +1,34 @@ +package itn.let.cert.ip.service; + +import java.util.List; + +import itn.let.mail.service.StatusResponse; + +public interface CertIpService { + +// public List selectMberCertPhoneList(String userId); +// +// public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public List selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); +// +// public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); + + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO); + + public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO); + + 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/uat/uia/service/MberCertPhoneVO.java b/src/main/java/itn/let/cert/ip/service/MberCertIpVO.java similarity index 68% rename from src/main/java/itn/let/uat/uia/service/MberCertPhoneVO.java rename to src/main/java/itn/let/cert/ip/service/MberCertIpVO.java index e9669486..11ebef19 100644 --- a/src/main/java/itn/let/uat/uia/service/MberCertPhoneVO.java +++ b/src/main/java/itn/let/cert/ip/service/MberCertIpVO.java @@ -1,4 +1,4 @@ -package itn.let.uat.uia.service; +package itn.let.cert.ip.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,7 +16,7 @@ import itn.let.uss.umt.service.UserDefaultVO; * * */ -public class MberCertPhoneVO extends UserDefaultVO{ +public class MberCertIpVO extends UserDefaultVO{ /** @@ -26,7 +26,8 @@ public class MberCertPhoneVO extends UserDefaultVO{ private String mberId; - private String mbtlnum; + private String certIp; + private String certMemo; private String certUseYn; private String certMbtlnum; @@ -40,13 +41,18 @@ public class MberCertPhoneVO extends UserDefaultVO{ public void setMberId(String mberId) { this.mberId = mberId; } - public String getMbtlnum() { - return mbtlnum; + public String getCertIp() { + return certIp; } - public void setMbtlnum(String mbtlnum) { - this.mbtlnum = mbtlnum; + public void setCertIp(String certIp) { + this.certIp = certIp; + } + public String getCertMemo() { + return certMemo; + } + public void setCertMemo(String certMemo) { + this.certMemo = certMemo; } - public String getCertUseYn() { return certUseYn; } 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/CertIpDAO.java b/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java new file mode 100644 index 00000000..f76ba664 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java @@ -0,0 +1,39 @@ +package itn.let.cert.ip.service.impl; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; +import itn.let.cert.ip.service.MberCertIpVO; + +@Repository("CertIpDAO") +public class CertIpDAO 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 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 new file mode 100644 index 00000000..31e4e6e6 --- /dev/null +++ b/src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java @@ -0,0 +1,68 @@ +package itn.let.cert.ip.service.impl; + +import java.time.LocalDateTime; +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import itn.let.cert.ip.service.CertIpService; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.mail.service.StatusResponse; + +@Service("CertIpService") +public class CertIpServiceImpl extends EgovAbstractServiceImpl implements CertIpService { + + @Resource(name = "CertIpDAO") + private CertIpDAO certIpDAO; + + + @Override + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertIpVO) { + List mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertIpVO); + return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); + } + + + @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()); + } + + + @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..d052ce9b --- /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 new file mode 100644 index 00000000..425106eb --- /dev/null +++ b/src/main/java/itn/let/cert/ip/web/CertIpController.java @@ -0,0 +1,127 @@ +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; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import itn.com.cmm.LoginVO; +import itn.com.utl.fcc.service.EgovStringUtil; +import itn.let.cert.ip.service.CertIpService; +import itn.let.cert.ip.service.MberCertIpVO; +import itn.let.mail.service.StatusResponse; +import itn.let.utl.sim.service.EgovClntInfo; + +/** + * + * @author : 이호영 + * @fileName : CertIpController.java + * @date : 2024.11.19 + * @description : 허용 IP 관련 컨트롤러 + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.11.19 이호영 최초 생성 + * + * + * + */ +@Controller +public class CertIpController { + + + /* certIpService */ + @Resource(name = "CertIpService") + private CertIpService certIpService; + + + @RequestMapping(value = {"/cert/ip/selectMberCertIpList.do"}) + public ResponseEntity selectMberCertIpList(MberCertIpVO mberCertPhoneVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId == null) { + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); + } + mberCertPhoneVO.setMberId(userId); + return ResponseEntity.ok().body(certIpService.selectMberCertIpList(mberCertPhoneVO)); + } + + + @RequestMapping(value = {"/cert/ip/insertCertIp.do"}) + public ResponseEntity insertCertIp(MberCertIpVO mberCertIpVO) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName("jsonView"); + + //로그인 권한정보 불러오기 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); + + if(userId == null) { + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); + } + mberCertIpVO.setFrstRegisterId(userId); + mberCertIpVO.setMberId(userId); + + + return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO)); + } + + + @RequestMapping(value = {"/cert/ip/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 { + + 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(certIpService.deleteCertIp(mberCertIpVO)); + } + +} \ No newline at end of file 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/CertPhoneService.java b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java new file mode 100644 index 00000000..42b80989 --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/CertPhoneService.java @@ -0,0 +1,43 @@ +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 { + + +// 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, String moblphonNo); + + public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO); + + public List selectMberCertPhoneList(String userId); + + public StatusResponse selectMberCertPhoneListWhereUserId(String userId); + + 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 new file mode 100644 index 00000000..81eb9ae2 --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/MberCertPhoneVO.java @@ -0,0 +1,80 @@ +package itn.let.cert.phone.service; + +import itn.let.uss.umt.service.UserDefaultVO; + +/** + * + * @author : 이호영 + * @fileName : MberCertPhoneVO.java + * @date : 2024.11.18 + * @description : 발신번호 lettngnrlmber_cert_ip 관련 vo + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- * + * 2024.11.18 이호영 최초 생성 + * + * + * + */ + +public class MberCertPhoneVO extends UserDefaultVO{ + + + /** + * @description : + */ + private static final long serialVersionUID = 1L; + + + private String mberId; + private String mbtlnum; + private String certAlias; + private String certMemo; + private String certUseYn; + + private String checkNo; + + + + + + public String getMberId() { + return mberId; + } + public void setMberId(String mberId) { + this.mberId = mberId; + } + public String getMbtlnum() { + return mbtlnum; + } + public void setMbtlnum(String mbtlnum) { + this.mbtlnum = mbtlnum; + } + public String getCertAlias() { + return certAlias; + } + public void setCertAlias(String certAlias) { + this.certAlias = certAlias; + } + public String getCertMemo() { + return certMemo; + } + public void setCertMemo(String certMemo) { + this.certMemo = certMemo; + } + public String getCertUseYn() { + return certUseYn; + } + public void setCertUseYn(String certUseYn) { + this.certUseYn = certUseYn; + } + public String 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 new file mode 100644 index 00000000..da5e107a --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneDAO.java @@ -0,0 +1,41 @@ +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); + } + + 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 new file mode 100644 index 00000000..2fae49c5 --- /dev/null +++ b/src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java @@ -0,0 +1,104 @@ +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, String moblphonNo) { + 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()); + } + 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 selectMberCertPhoneListWhereUserId(String userId) { + return new StatusResponse(HttpStatus.OK, certPhoneDAO.selectMberCertPhoneList(userId), LocalDateTime.now()); + } + + + + + @Override + public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) { + 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 new file mode 100644 index 00000000..16b7205b --- /dev/null +++ b/src/main/java/itn/let/cert/phone/web/CertPhoneController.java @@ -0,0 +1,233 @@ +package itn.let.cert.phone.web; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.Map; + +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.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; + +/** + * + * @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; + + @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.selectMberCertPhoneListWhereUserId(userId)); + } + + @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"); + + + System.out.println(" :: insertCertPhone :: "); + + //로그인 권한정보 불러오기 + 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); + mberCertPhoneVO.setMberId(userId); + + + return ResponseEntity.ok().body(certPhoneService.insertCertPhone(mberCertPhoneVO, loginVO.getMoblphonNo())); + } + + @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); + mberCertPhoneVO.setMberId(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); + mberCertPhoneVO.setMberId(userId); + + + + return ResponseEntity.ok().body(certPhoneService.deleteCertPhone(mberCertPhoneVO)); + } + + + + + + @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()); + + if(userId == null) { + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); + } + 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(); + + 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 = {"/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.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 9519ff67..9b50c130 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,13 +177,8 @@ public interface MjonMsgDataService { //팩스 거래명세서 합산 정보 public List selectPayUserSumFaxList(MjonMsgVO mjonMsgVO) throws Exception; - public List selectMberCertPhoneList(String userId); + public MjonMsgReturnVO sendSysMsgData(MjonMsgVO mjonMsgVO) throws Exception; - public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); - - public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO); - - public List selectMberCertPhoneListVO(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 8256a57e..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,24 +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 deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - update("mjonMsgDataDAO.deleteCertPhoneInfo", mberCertPhoneVO); - } - - - public List selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) { - return (List) list("mjonMsgDataDAO.selectMberCertPhoneListVO", 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 f37602a9..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 @@ -1,15 +1,14 @@ 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; import java.util.List; +import java.util.Random; import javax.annotation.Resource; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; @@ -18,7 +17,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 +38,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; @@ -3161,26 +3158,85 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M } @Override - public List selectMberCertPhoneList(String userId) { - return mjonMsgDataDAO.selectMberCertPhoneList(userId); + 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; } - @Override - public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) { - mjonMsgDataDAO.insertMberCertPhoneInfo(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); - } } 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 f1016408..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,12 @@ 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; import itn.let.mjo.event.service.MjonEventService; import itn.let.mjo.event.service.MjonEventVO; @@ -109,7 +115,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 +242,15 @@ public class EgovLoginController { @Resource(name = "mberGrdService") MberGrdService mberGrdService; + + @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); @@ -1107,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"); @@ -2054,7 +2069,7 @@ public class EgovLoginController { */ - List mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneList(resultVO.getId()); + List mberCertPhoneList = certPhoneService.selectMberCertPhoneList(resultVO.getId()); modelAndView.addObject("status", "success"); @@ -2062,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; @@ -2457,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); @@ -2660,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 @@ -3584,27 +3645,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); */ @@ -3615,25 +3655,9 @@ 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 = mjonMsgDataService.selectMberCertPhoneListVO(mberCertPhoneVO); + List mberCertPhoneList = certPhoneService.selectMberCertPhoneList(mjonMsgVO.getUserId()); @@ -3651,7 +3675,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")) { @@ -3681,59 +3711,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/java/itn/let/uat/uia/web/EgovMypageController.java b/src/main/java/itn/let/uat/uia/web/EgovMypageController.java index f0ed2d97..76972711 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; /** * 마이페이지 비밀번호 변경 탭 @@ -171,6 +187,7 @@ public class EgovMypageController { @RequestMapping(value="/web/user/mberInfoIndex.do") public String mberInfoIndex( ModelMap model + , HttpServletRequest request , RedirectAttributes redirectAttributes) throws Exception { //로그인 권한정보 불러오기 @@ -448,6 +465,8 @@ public class EgovMypageController { } + + return "web/user/mberInfoIndex"; } @@ -2920,6 +2939,93 @@ public class EgovMypageController { return "web/user/mberSecession"; } + /** + * 회원탈퇴 본인인증 화면 + */ + @RequestMapping(value="/web/user/mberSecureLogin.do") + 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()); + + + /** 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"); + } + + + 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)); + + + + + + { + /** + * 보안인증 본인인증 기능추가 + * 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"; + } + + 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"); + return "web/user/mberSecureLogin"; + } + /** * 회원탈퇴 상세정보 화면 */ @@ -3494,4 +3600,287 @@ public class EgovMypageController { } return modelAndView; } + + + /** + * 회원정보 조회 휴대폰 인증 + */ + @RequestMapping("/web/user/selectSecurityAuthn.do") + public String selectSecurityAuthn( + HttpServletRequest request, ModelMap model + , @RequestParam Map commandMap + , @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception { + + //개인회원일 시 mblDn 비교 후 본인 명의 휴대폰만 변경 가능하게끔 + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; + String mblDn = userManageService.selectUserMblDnById(loginVO.getId()); + model.addAttribute("loginVO", loginVO); + + String errMessage = ""; //에러메세지 + + String rec_cert = ""; // 결과값(암호화) + String certNum = ""; // certNum + + rec_cert = request.getParameter("rec_cert").trim(); + certNum = request.getParameter("certNum").trim(); + + kmcVO.setRecCert(rec_cert); + kmcVO.setCertNum(certNum); + // 파라미터 유효성 검증 + if( rec_cert.length() == 0 || certNum.length() == 0 ){ + errMessage = "비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + + // 변수선언 -------------------------------------------------------------------------------------------------------- + String k_certNum = ""; // 파라미터로 수신한 요청번호 + k_certNum = certNum; + String date = ""; // 요청일시 + String CI = ""; // 연계정보(CI) + String DI = ""; // 중복가입확인정보(DI) + String phoneNo = ""; // 휴대폰번호 + String phoneCorp = ""; // 이동통신사 + String birthDay = ""; // 생년월일 + String gender = ""; // 성별 + String nation = ""; // 내국인 + String name = ""; // 성명 + String M_name = ""; // 미성년자 성명 + String M_birthDay = ""; // 미성년자 생년월일 + String M_Gender = ""; // 미성년자 성별 + String M_nation = ""; // 미성년자 내외국인 + String result = ""; // 결과값 + + String certMet = ""; // 인증방법 + String ip = ""; // ip주소 + String plusInfo = ""; + + String encPara = ""; + String encMsg1 = ""; + String encMsg2 = ""; + String msgChk = ""; + + com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager(); + + //02. 1차 복호화 + //수신된 certNum를 이용하여 복호화 + rec_cert = seed.getDec(rec_cert, k_certNum); + + //03. 1차 파싱 + int inf1 = rec_cert.indexOf("/",0); + int inf2 = rec_cert.indexOf("/",inf1+1); + + encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터 + encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값 + + //04. 위변조 검증 + encMsg2 = seed.getMsg(encPara); + kmcVO.setEncMsg2(encMsg2); + if(encMsg2.equals(encMsg1)){ + msgChk="Y"; + } + + if(!"Y".equals(msgChk)) { + errMessage = "비정상접근입니다."; + return returnPage(model , errMessage , kmcVO) ; + } + + //05. 2차 복호화 + rec_cert = seed.getDec(encPara, k_certNum); + kmcVO.setRecCert(rec_cert); + //06. 2차 파싱 + int info1 = rec_cert.indexOf("/",0); + int info2 = rec_cert.indexOf("/",info1+1); + int info3 = rec_cert.indexOf("/",info2+1); + int info4 = rec_cert.indexOf("/",info3+1); + int info5 = rec_cert.indexOf("/",info4+1); + int info6 = rec_cert.indexOf("/",info5+1); + int info7 = rec_cert.indexOf("/",info6+1); + int info8 = rec_cert.indexOf("/",info7+1); + int info9 = rec_cert.indexOf("/",info8+1); + int info10 = rec_cert.indexOf("/",info9+1); + int info11 = rec_cert.indexOf("/",info10+1); + int info12 = rec_cert.indexOf("/",info11+1); + int info13 = rec_cert.indexOf("/",info12+1); + int info14 = rec_cert.indexOf("/",info13+1); + int info15 = rec_cert.indexOf("/",info14+1); + int info16 = rec_cert.indexOf("/",info15+1); + int info17 = rec_cert.indexOf("/",info16+1); + int info18 = rec_cert.indexOf("/",info17+1); + + certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum); + date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date); + CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI); + phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo); + phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp); + birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay); + gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender); + nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation); + name = rec_cert.substring(info8+1,info9); kmcVO.setName(name); + result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result); + certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet); + ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip); + M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name); + M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay); + M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender); + M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation); + plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo); + DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI); + + //07. CI, DI 복호화 + CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI); + DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI); + + if("Y".equals(result)) { + + } + + //-------------------------------------------------------------- + String regex = ""; + if( certNum.length() == 0 || certNum.length() > 40){ + errMessage = "요청번호 비정상."; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[0-9]*"; + if( date.length() != 14 || !paramChk(regex, date) ){ + errMessage = "요청일시"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[A-Z]*"; + if( certMet.length() != 1 || !paramChk(regex, certMet) ){ + errMessage = "본인인증방법 비정상" + certMet; + return returnPage(model , errMessage , kmcVO) ; + } + + + regex = "[0-9]*"; + if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){ + errMessage = "휴대폰번호 비정상" ; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[A-Z]*"; + if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){ + errMessage = "이동통신사 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[0-9]*"; + if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){ + errMessage = "생년월일 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[0-9]*"; + if( gender.length() != 1 || !paramChk(regex, gender) ){ + errMessage = "성별 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[0-9]*"; + if( nation.length() != 1 || !paramChk(regex, nation) ){ + errMessage = "내/외국인 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[\\sA-Za-z가-�R.,-]*"; + if( name.length() > 60 || !paramChk(regex, name) ){ + errMessage = "성명 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[A-Z]*"; + if( result.length() != 1 || !paramChk(regex, result) ){ + errMessage = "결과값 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + + regex = "[\\sA-Za-z가-?.,-]*"; + if( M_name.length() != 0 ){ + if( M_name.length() > 60 || !paramChk(regex, M_name) ){ + errMessage = "미성년자 성명 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + } + + regex = "[0-9]*"; + if( M_birthDay.length() != 0 ){ + if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){ + errMessage = "미성년자 생년월일 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + } + + regex = "[0-9]*"; + if( M_Gender.length() != 0 ){ + if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){ + errMessage = "미성년자 성별 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + } + + regex = "[0-9]*"; + if( M_nation.length() != 0 ){ + if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){ + errMessage = "미성년자 내/외국인 비정상"; + return returnPage(model , errMessage , kmcVO) ; + } + } + + + //KMC 본인인증 로그 + AuthCertVO certVO = new AuthCertVO(); + certVO.setMberId(kmcVO.getPlusInfo()); + certVO.setCertNum(kmcVO.getCertNum()); + certVO.setCertDate(kmcVO.getDate()); + certVO.setCertDi(kmcVO.getDI()); + certVO.setCertPhone(kmcVO.getPhoneNo()); + certVO.setCertNation(kmcVO.getNation()); + certVO.setCertName(kmcVO.getName()); + certVO.setCertResult(kmcVO.getResult()); + certVO.setCertType("secureLoginOFF"); + certVO.setCertIpaddr(kmcVO.getIp()); + certVO.setBirthDay(kmcVO.getBirthDay()); + certVO.setSexdstnCode(kmcVO.getGender()); + + + //디비 테이블에 저장하기 + 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 a70402b9..3fe6f758 100644 --- a/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java +++ b/src/main/java/itn/let/uat/uia/web/KmcCertChecker.java @@ -586,4 +586,79 @@ public class KmcCertChecker { return certVO; } + + + + // 마이페이지 보안인증 + public AuthCertVO authCertCheckNine(String trUrl, String id) { + + AuthCertVO certVO = new AuthCertVO(); + + //kmc step 01 데이터 + //날짜 생성 + Calendar today = Calendar.getInstance(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String day = sdf.format(today.getTime()); + + Random ran = new Random(); + //랜덤 문자 길이 + int numLength = 6; + String randomStr = ""; + + for (int i = 0; i < numLength; i++) { + //0 ~ 9 랜덤 숫자 생성 + randomStr += ran.nextInt(10); + } + + //reqNum은 최대 40byte 까지 사용 가능 + String reqNum = day + randomStr; //요청번호 + + String tr_cert = ""; + 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"; + } + String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) ) + String date = day; // 요청일시 + String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증 + String name = ""; // 성명 + String phoneNo = ""; // 휴대폰번호 + String phoneCorp = ""; // 이동통신사 + if(phoneCorp == null) phoneCorp = ""; + String birthDay = ""; // 생년월일 + String gender = ""; // 성별 + if(gender == null) gender = ""; + String nation = ""; // 내외국인 구분 - 0:내국인, 1:외국인 + String plusInfo = id; // 추가DATA정보 + String extendVar = "0000000000000000"; // 확장변수 + //End-tr_cert 데이터 변수 선언 --------------------------------------------------------------- + + String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL + String tr_add = "N"; // IFrame사용여부 + + //01. 한국모바일인증(주) 암호화 모듈 선언 + IcertSecuManager seed = new IcertSecuManager(); + + //02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화) + String enc_tr_cert = ""; + tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar; + enc_tr_cert = seed.getEnc(tr_cert, ""); + + //03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC) + String hmacMsg = ""; + hmacMsg = seed.getMsg(enc_tr_cert); + + //04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화) + tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, ""); + + certVO.setTr_cert(tr_cert); + certVO.setTr_url(tr_url); + certVO.setTr_add(tr_add); + + return certVO; + } } 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/let/uss/umt/web/EgovUserManageController.java b/src/main/java/itn/let/uss/umt/web/EgovUserManageController.java index 1388ce8b..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,45 +1662,6 @@ public class EgovUserManageController { return modelAndView; } - @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/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/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 new file mode 100644 index 00000000..98a25d13 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml @@ -0,0 +1,9 @@ + + + + + + + + diff --git a/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml new file mode 100644 index 00000000..c1caaa61 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + /*MberCertIpVO.insertCertIp*/ + + INSERT INTO LETTNGNRLMBER_CERT_IP + ( + MBER_ID + , CERT_IP + , CERT_MEMO + , FRST_REGIST_PNTTM + , FRST_REGISTER_ID + ) + VALUES + ( + #mberId# + , #certIp# + , #certMemo# + , now() + , #frstRegisterId# + ) + + + + + /*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/MjonCertLoginLog_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml new file mode 100644 index 00000000..afc29c29 --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + 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/cert/MjonCertPhone_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml new file mode 100644 index 00000000..a5e5ed0c --- /dev/null +++ b/src/main/resources/egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + /* 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/MjonMsgCustom_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml index 6cc2f075..900e017c 100644 --- a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml +++ b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgCustom_SQL_mysql.xml @@ -28,7 +28,7 @@ WHERE 1=1 - AND ( A.USER_ID LIKE CONCAT('%', #searchKeyword#, '%') + AND ( A.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')MjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xml OR CUSTOM_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%') ) diff --git a/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml b/src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml index dd15dce8..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 @@ -21,7 +21,6 @@ - @@ -3725,6 +3724,7 @@ - SELECT - MBTLNUM AS mbtlnum, - '-' AS frstRegistPnttm - FROM - lettngnrlmber - WHERE MBER_ID = #userId# - UNION ALL - SELECT - MBTLNUM AS mbtlnum, - FRST_REGIST_PNTTM AS frstRegistPnttm - FROM - lettngnrlmber_cert_phone - WHERE MBER_ID = #userId# - AND CERT_USE_YN = 'Y' - - - - - - - - INSERT - INTO LETTNGNRLMBER_CERT_PHONE - ( - MBER_ID - , MBTLNUM - , FRST_REGIST_PNTTM - , FRST_REGISTER_ID - ) - VALUES - ( - #mberId# - , #mbtlnum# - , now() - , #frstRegisterId# - ) - - - - - UPDATE LETTNGNRLMBER_CERT_PHONE - SET CERT_USE_YN = 'N' - , LAST_UPDUSR_ID = #lastUpdusrId# - WHERE - MBER_ID = #mberId# - AND MBTLNUM = #mbtlnum# - - - - + + + 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/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp index a96aa80a..9f403655 100644 --- a/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp +++ b/src/main/webapp/WEB-INF/jsp/cmm/uss/umt/EgovGnrlUserSelectUpdt.jsp @@ -2072,23 +2072,22 @@ function fnEventEdit(){ } -//이벤트 수정하기 +//인증번호 등록 function fn_certPhoneReg(){ var mberId = $('#cashUserId').val(); var mbtlnum = $('#pop_mbtlnum').val(); if(mbtlnum == ''){ - alert("등록할 인증번호를 입력해주세요."); return false; - } - - + var params = { "mberId" : mberId - , "mbtlnum" : mbtlnum - } + , "mbtlnum" : mbtlnum + , "certAlias" : $('#pop_certAlias').val() + , "certMemo" : $('#pop_certMemo').val() + } console.log('params : ', params); if(!confirm("인증번호를 등록 하시겠습니까?")){ @@ -2096,23 +2095,95 @@ function fn_certPhoneReg(){ } $.ajax({ - type: "POST", - url: "/uss/umt/user/insertCertPhone.do", - data: params, - dataType:'json', - async: false, - success: function (returnData) { - - console.log('returnData : ', returnData); - if(returnData.status == 'OK'){ + type: "POST", + url: "/cert/phone/insertCertPhone.do", + data: params, + dataType:'json', + async: false, + success: function (returnData) { + if(returnData.status == 'OK'){ alert(returnData.message); location.reload(); - }else{ + }else if(returnData.status == 'CONFLICT'){ + alert(returnData.message); + return false; + }else{ alert("오류가 발생하였습니다."); - } + } }, - error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } - }); + error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } + }); +} + +//인증번호 수정 +function fn_certPhoneUdt(){ + var mberId = $('#cashUserId').val(); + + var mbtlnum = $('#pop_udt_mbtlnum').val(); + + var params = { + "mberId" : mberId + , "mbtlnum" : mbtlnum + , "certAlias" : $('#pop_udt_certAlias').val() + , "certMemo" : $('#pop_udt_certMemo').val() + } + console.log('params : ', params); + + if(!confirm("수정 하시겠습니까?")){ + return false; + } + + $.ajax({ + type: "POST", + url: "/cert/phone/updateCertPhone.do", + data: params, + dataType:'json', + async: false, + success: function (returnData) { + if(returnData.status == 'OK'){ + alert(returnData.message); + location.reload(); + }else{ + alert("오류가 발생하였습니다."); + } + }, + error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } + }); +} + +function fn_certPhoneUpdatePopOpen(mbtlnum){ + var mberId = $('#cashUserId').val(); + var mbtlnum = mbtlnum; + + var params = { + "mberId" : mberId + , "mbtlnum" : mbtlnum + } + + $.ajax({ + type: "POST", + url: "/cert/phone/findByCertPhoneInfo.do", + data: params, + dataType:'json', + async: false, + success: function (returnData) { + + console.log('returnData : ', returnData); + if(returnData.status == 'OK'){ + + console.log('returnData.object.mbtlnum : ', returnData.object.mbtlnum); + $('#pop_udt_mbtlnum').val(returnData.object.mbtlnum); + $('#pop_udt_certAlias').val(returnData.object.certAlias); + $('#pop_udt_certMemo').val(returnData.object.certMemo); + + layerPopOpen('certPhoneUdt'); + }else{ + alert("오류가 발생하였습니다."); + } + }, + error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); } + }); + } @@ -2137,7 +2208,7 @@ function fn_certPhoneDel(mbtlnum){ $.ajax({ type: "POST", - url: "/uss/umt/user/deleteCertPhone.do", + url: "/cert/phone/deleteCertPhone.do", data: params, dataType:'json', async: false, @@ -5202,12 +5273,16 @@ function fnInputSmsTxt(){ - - + + + + + + @@ -5216,8 +5291,25 @@ function fnInputSmsTxt(){ + + + + + + + + + - + @@ -6398,13 +6490,48 @@ function fnInputSmsTxt(){ + +
+
인증번호 등록
+
+
인증번호별칭메모 삭제
+ + + + + + - + + + @@ -5236,7 +5328,7 @@ function fnInputSmsTxt(){
등록된 인증번호가 없습니다.등록된 인증번호가 없습니다.
+ + + + + + + + + + + + + + + + + + +
인증번호 + +
별칭 + +
메모 + +
+
+ +
+ +
인증번호 등록
- + @@ -6414,10 +6541,21 @@ function fnInputSmsTxt(){ + + + + + + + +
별칭 + +
메모 + +
-
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..b3bc00cd 100644 --- a/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp +++ b/src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp @@ -109,6 +109,14 @@ $(document).ready(function (){ //등급제 시행 ON/OFF 체크(비로그인) //getMberSettingDetailByNotLogin_Header(); + + var secuLoginFlag = '${mberManageVO.secuLoginFlag}'; + + if (secuLoginFlag === 'Y') { + $('#secuLoginFlag').attr('class', 'state on').text('ON'); + } else if (secuLoginFlag === 'N') { + $('#secuLoginFlag').attr('class', 'state off').text('OFF'); + } }); //등급제 시행 ON/OFF 체크(비로그인) @@ -1645,6 +1653,11 @@ function actionLogin() {
+
+

보안로그인

+ + +