Merge branch 'master' of http://subsub8729@vcs.iten.co.kr:9999/hylee/mjon_git
http://subsub8729@vcs.iten.co.kr:9999/hylee/mjon_git Conflicts: src/main/webapp/publish/mypage_index_2024.html
@cf35c07140e9e4d03600a04a6ea2a6d4efa2135f
--- src/main/java/itn/com/cmm/LoginVO.java
+++ src/main/java/itn/com/cmm/LoginVO.java
... | ... | @@ -114,6 +114,11 @@ |
| 114 | 114 |
|
| 115 | 115 |
private String dormantYn; // 휴먼회원여부 ( N:일반회원, Y:휴먼회원) |
| 116 | 116 |
|
| 117 |
+ /** |
|
| 118 |
+ * 보안로그인 여부 |
|
| 119 |
+ */ |
|
| 120 |
+ private String secuLoginFlag; |
|
| 121 |
+ |
|
| 117 | 122 |
public String getDormantYn() {
|
| 118 | 123 |
return dormantYn; |
| 119 | 124 |
} |
... | ... | @@ -411,5 +416,12 @@ |
| 411 | 416 |
public void setOuterCertYn(String outerCertYn) {
|
| 412 | 417 |
this.outerCertYn = outerCertYn; |
| 413 | 418 |
} |
| 419 |
+ public String getSecuLoginFlag() {
|
|
| 420 |
+ return secuLoginFlag; |
|
| 421 |
+ } |
|
| 422 |
+ public void setSecuLoginFlag(String secuLoginFlag) {
|
|
| 423 |
+ this.secuLoginFlag = secuLoginFlag; |
|
| 424 |
+ } |
|
| 425 |
+ |
|
| 414 | 426 |
|
| 415 | 427 |
} |
--- src/main/java/itn/let/cert/ip/service/CertIpService.java
+++ src/main/java/itn/let/cert/ip/service/CertIpService.java
... | ... | @@ -1,5 +1,7 @@ |
| 1 | 1 |
package itn.let.cert.ip.service; |
| 2 | 2 |
|
| 3 |
+import java.util.List; |
|
| 4 |
+ |
|
| 3 | 5 |
import itn.let.mail.service.StatusResponse; |
| 4 | 6 |
|
| 5 | 7 |
public interface CertIpService {
|
... | ... | @@ -22,6 +24,11 @@ |
| 22 | 24 |
|
| 23 | 25 |
public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO); |
| 24 | 26 |
|
| 27 |
+ public Boolean checkCertIp(MberCertIpVO mberCertIpVO); |
|
| 28 |
+ |
|
| 29 |
+ public Boolean checkRegCertIp(MberCertIpVO mberCertIpVO); |
|
| 30 |
+ |
|
| 31 |
+ |
|
| 25 | 32 |
|
| 26 | 33 |
|
| 27 | 34 |
} |
+++ src/main/java/itn/let/cert/ip/service/CertLoginLogService.java
... | ... | @@ -0,0 +1,19 @@ |
| 1 | +package itn.let.cert.ip.service; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +import javax.servlet.http.HttpServletRequest; | |
| 6 | + | |
| 7 | +import egovframework.rte.fdl.cmmn.exception.FdlException; | |
| 8 | + | |
| 9 | +public interface CertLoginLogService { | |
| 10 | + | |
| 11 | + | |
| 12 | + public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO, HttpServletRequest request) throws FdlException; | |
| 13 | + | |
| 14 | + public List<MberCertLoginLogVO> findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO); | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | +} |
+++ src/main/java/itn/let/cert/ip/service/MberCertLoginLogVO.java
... | ... | @@ -0,0 +1,76 @@ |
| 1 | +package itn.let.cert.ip.service; | |
| 2 | + | |
| 3 | +import itn.let.uss.umt.service.UserDefaultVO; | |
| 4 | +/** | |
| 5 | + * | |
| 6 | + * @author : 이호영 | |
| 7 | + * @fileName : MberCertLoginLogVO.java | |
| 8 | + * @date : 2024.11.21 | |
| 9 | + * @description : 로그인 이력관리 92동안만 관리하고 삭제 | |
| 10 | + * =========================================================== | |
| 11 | + * DATE AUTHOR NOTE | |
| 12 | + * ----------------------------------------------------------- * | |
| 13 | + * 2024.11.21 이호영 최초 생성 | |
| 14 | + * | |
| 15 | + * | |
| 16 | + * | |
| 17 | + */ | |
| 18 | +public class MberCertLoginLogVO extends UserDefaultVO{ | |
| 19 | + | |
| 20 | + | |
| 21 | + /** | |
| 22 | + * @description : | |
| 23 | + */ | |
| 24 | + private static final long serialVersionUID = 1L; | |
| 25 | + | |
| 26 | + | |
| 27 | + private String certLoginId; | |
| 28 | + private String loginId; | |
| 29 | + private String loginIp; | |
| 30 | + private String loginDevice; | |
| 31 | + private String loginDt; | |
| 32 | + | |
| 33 | + private String secuLoginFlag; | |
| 34 | + | |
| 35 | + | |
| 36 | + public String getCertLoginId() { | |
| 37 | + return certLoginId; | |
| 38 | + } | |
| 39 | + public void setCertLoginId(String certLoginId) { | |
| 40 | + this.certLoginId = certLoginId; | |
| 41 | + } | |
| 42 | + public String getLoginId() { | |
| 43 | + return loginId; | |
| 44 | + } | |
| 45 | + public void setLoginId(String loginId) { | |
| 46 | + this.loginId = loginId; | |
| 47 | + } | |
| 48 | + public String getLoginIp() { | |
| 49 | + return loginIp; | |
| 50 | + } | |
| 51 | + public void setLoginIp(String loginIp) { | |
| 52 | + this.loginIp = loginIp; | |
| 53 | + } | |
| 54 | + public String getLoginDevice() { | |
| 55 | + return loginDevice; | |
| 56 | + } | |
| 57 | + public void setLoginDevice(String loginDevice) { | |
| 58 | + this.loginDevice = loginDevice; | |
| 59 | + } | |
| 60 | + public String getLoginDt() { | |
| 61 | + return loginDt; | |
| 62 | + } | |
| 63 | + public void setLoginDt(String loginDt) { | |
| 64 | + this.loginDt = loginDt; | |
| 65 | + } | |
| 66 | + public String getSecuLoginFlag() { | |
| 67 | + return secuLoginFlag; | |
| 68 | + } | |
| 69 | + public void setSecuLoginFlag(String secuLoginFlag) { | |
| 70 | + this.secuLoginFlag = secuLoginFlag; | |
| 71 | + } | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | +} |
--- src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java
+++ src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java
... | ... | @@ -27,5 +27,13 @@ |
| 27 | 27 |
public MberCertIpVO findByMberCertIpList(MberCertIpVO mberCertIpVO) {
|
| 28 | 28 |
return (MberCertIpVO) select("MberCertIpVO.findByMberCertIpList", mberCertIpVO);
|
| 29 | 29 |
} |
| 30 |
+ |
|
| 31 |
+ public List<MberCertIpVO> checkCertIp(MberCertIpVO mberCertIpVO) {
|
|
| 32 |
+ return (List<MberCertIpVO>) list("MberCertIpVO.checkCertIp", mberCertIpVO);
|
|
| 33 |
+ } |
|
| 34 |
+ |
|
| 35 |
+ public List<MberCertIpVO> checkRegCertIp(MberCertIpVO mberCertIpVO) {
|
|
| 36 |
+ return (List<MberCertIpVO>) list("MberCertIpVO.checkRegCertIp", mberCertIpVO);
|
|
| 37 |
+ } |
|
| 30 | 38 |
|
| 31 | 39 |
} |
--- src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java
+++ src/main/java/itn/let/cert/ip/service/impl/CertIpServiceImpl.java
... | ... | @@ -21,8 +21,8 @@ |
| 21 | 21 |
|
| 22 | 22 |
|
| 23 | 23 |
@Override |
| 24 |
- public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO) {
|
|
| 25 |
- List<MberCertIpVO> mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertPhoneVO); |
|
| 24 |
+ public StatusResponse selectMberCertIpList(MberCertIpVO mberCertIpVO) {
|
|
| 25 |
+ List<MberCertIpVO> mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertIpVO); |
|
| 26 | 26 |
return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); |
| 27 | 27 |
} |
| 28 | 28 |
|
... | ... | @@ -43,5 +43,26 @@ |
| 43 | 43 |
certIpDAO.deleteCertIp(mberCertIpVO); |
| 44 | 44 |
return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now()); |
| 45 | 45 |
} |
| 46 |
+ |
|
| 47 |
+ |
|
| 48 |
+ @Override |
|
| 49 |
+ public Boolean checkCertIp(MberCertIpVO mberCertIpVO) {
|
|
| 50 |
+ List<MberCertIpVO> mberCertIpListVO = certIpDAO.checkCertIp(mberCertIpVO); |
|
| 51 |
+ if(mberCertIpListVO.size()>0) {
|
|
| 52 |
+ return true; |
|
| 53 |
+ }else {
|
|
| 54 |
+ return false; |
|
| 55 |
+ } |
|
| 56 |
+ } |
|
| 57 |
+ |
|
| 58 |
+ @Override |
|
| 59 |
+ public Boolean checkRegCertIp(MberCertIpVO mberCertIpVO) {
|
|
| 60 |
+ List<MberCertIpVO> mberCertIpListVO = certIpDAO.checkRegCertIp(mberCertIpVO); |
|
| 61 |
+ if(mberCertIpListVO.size()>0) {
|
|
| 62 |
+ return true; |
|
| 63 |
+ }else {
|
|
| 64 |
+ return false; |
|
| 65 |
+ } |
|
| 66 |
+ } |
|
| 46 | 67 |
|
| 47 | 68 |
} |
+++ src/main/java/itn/let/cert/ip/service/impl/CertLoginLogDAO.java
... | ... | @@ -0,0 +1,47 @@ |
| 1 | +package itn.let.cert.ip.service.impl; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +import org.springframework.stereotype.Repository; | |
| 6 | + | |
| 7 | +import egovframework.rte.psl.dataaccess.EgovAbstractDAO; | |
| 8 | +import itn.let.cert.ip.service.MberCertLoginLogVO; | |
| 9 | + | |
| 10 | +@Repository("CertLoginLogDAO") | |
| 11 | +public class CertLoginLogDAO extends EgovAbstractDAO { | |
| 12 | + | |
| 13 | + | |
| 14 | +/* | |
| 15 | + public List<MberCertIpVO> selectMberCertIpList(MberCertIpVO mberCertIpVO) { | |
| 16 | + return (List<MberCertIpVO>) list("MberCertIpVO.selectMberCertIpList", mberCertIpVO); | |
| 17 | + } | |
| 18 | + | |
| 19 | + public void insertCertIp(MberCertIpVO mberCertIpVO) { | |
| 20 | + insert("MberCertIpVO.insertCertIp", mberCertIpVO); | |
| 21 | + } | |
| 22 | + | |
| 23 | + public void deleteCertIp(MberCertIpVO mberCertIpVO) { | |
| 24 | + insert("MberCertIpVO.deleteCertIp", mberCertIpVO); | |
| 25 | + } | |
| 26 | + | |
| 27 | + public MberCertIpVO findByMberCertIpList(MberCertIpVO mberCertIpVO) { | |
| 28 | + return (MberCertIpVO) select("MberCertIpVO.findByMberCertIpList", mberCertIpVO); | |
| 29 | + } | |
| 30 | +*/ | |
| 31 | + public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO) { | |
| 32 | + insert("MberCertLoginLogVO.insertCertLoginLog", mberCertLoginLogVO); | |
| 33 | + } | |
| 34 | + | |
| 35 | + public int checkLoginIpExists(MberCertLoginLogVO mberCertLoginLogVO) { | |
| 36 | + return (int) select("MberCertLoginLogVO.checkLoginIpExists", mberCertLoginLogVO); | |
| 37 | + } | |
| 38 | + | |
| 39 | + public void updateCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO) { | |
| 40 | + insert("MberCertLoginLogVO.updateCertLoginLog", mberCertLoginLogVO); | |
| 41 | + } | |
| 42 | + | |
| 43 | + public List<MberCertLoginLogVO> findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO) { | |
| 44 | + return (List<MberCertLoginLogVO>) list("MberCertLoginLogVO.findAllCertLoginLogVO", mberCertLoginLogVO); | |
| 45 | + } | |
| 46 | + | |
| 47 | +} |
+++ src/main/java/itn/let/cert/ip/service/impl/CertLoginLogServiceImpl.java
... | ... | @@ -0,0 +1,87 @@ |
| 1 | +package itn.let.cert.ip.service.impl; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +import javax.annotation.Resource; | |
| 6 | +import javax.servlet.http.HttpServletRequest; | |
| 7 | + | |
| 8 | +import org.springframework.stereotype.Service; | |
| 9 | + | |
| 10 | +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; | |
| 11 | +import egovframework.rte.fdl.cmmn.exception.FdlException; | |
| 12 | +import egovframework.rte.fdl.idgnr.EgovIdGnrService; | |
| 13 | +import itn.let.cert.ip.service.CertLoginLogService; | |
| 14 | +import itn.let.cert.ip.service.MberCertLoginLogVO; | |
| 15 | + | |
| 16 | +@Service("CertLoginLogService") | |
| 17 | +public class CertLoginLogServiceImpl extends EgovAbstractServiceImpl implements CertLoginLogService { | |
| 18 | + | |
| 19 | + @Resource(name = "CertLoginLogDAO") | |
| 20 | + private CertLoginLogDAO certLoginLogDAO; | |
| 21 | + | |
| 22 | + @Resource(name = "egovMjonCertLoginLogIdGnrService") | |
| 23 | + private EgovIdGnrService certLoginLogIdGnrService; | |
| 24 | +/* | |
| 25 | + @Override | |
| 26 | + public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO) { | |
| 27 | + List<MberCertIpVO> mberCertIpListVO = certLoginLogDAO.selectMberCertIpList(mberCertPhoneVO); | |
| 28 | + return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now()); | |
| 29 | + } | |
| 30 | + | |
| 31 | + | |
| 32 | + @Override | |
| 33 | + public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO) { | |
| 34 | + MberCertIpVO mberCertIpListVO = certLoginLogDAO.findByMberCertIpList(mberCertIpVO); | |
| 35 | + if(mberCertIpListVO != null) { | |
| 36 | + return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now()); | |
| 37 | + } | |
| 38 | + certLoginLogDAO.insertCertIp(mberCertIpVO); | |
| 39 | + return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now()); | |
| 40 | + } | |
| 41 | + | |
| 42 | + | |
| 43 | + @Override | |
| 44 | + public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO) { | |
| 45 | + certLoginLogDAO.deleteCertIp(mberCertIpVO); | |
| 46 | + return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now()); | |
| 47 | + } | |
| 48 | +*/ | |
| 49 | + | |
| 50 | + @Override | |
| 51 | + public void insertCertLoginLog(MberCertLoginLogVO mberCertLoginLogVO, HttpServletRequest request) throws FdlException { | |
| 52 | + | |
| 53 | + | |
| 54 | +// int count = certLoginLogDAO.checkLoginIpExists(mberCertLoginLogVO); | |
| 55 | +// | |
| 56 | +// if (count > 0) { | |
| 57 | +// // 이미 존재하면 UPDATE | |
| 58 | +// certLoginLogDAO.updateCertLoginLog(mberCertLoginLogVO); | |
| 59 | +// } else { | |
| 60 | + | |
| 61 | + mberCertLoginLogVO.setCertLoginId(certLoginLogIdGnrService.getNextStringId()); | |
| 62 | + mberCertLoginLogVO.setLoginDevice(getDevice(request)); | |
| 63 | + certLoginLogDAO.insertCertLoginLog(mberCertLoginLogVO); | |
| 64 | + | |
| 65 | +// } | |
| 66 | + } | |
| 67 | + | |
| 68 | + private String getDevice(HttpServletRequest request) { | |
| 69 | + String userAgent = request.getHeader("User-Agent").toLowerCase(); | |
| 70 | + | |
| 71 | + if (userAgent.contains("mobile") || userAgent.contains("android") || userAgent.contains("iphone")) { | |
| 72 | + return "M"; | |
| 73 | + } else if (userAgent.contains("tablet") || userAgent.contains("ipad")) { | |
| 74 | + return "T"; | |
| 75 | + } else { | |
| 76 | + return "D"; | |
| 77 | + } | |
| 78 | + } | |
| 79 | + | |
| 80 | + @Override | |
| 81 | + public List<MberCertLoginLogVO> findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO) { | |
| 82 | + // TODO Auto-generated method stub | |
| 83 | + return certLoginLogDAO.findAllCertLoginLogVO(mberCertLoginLogVO); | |
| 84 | + | |
| 85 | + } | |
| 86 | + | |
| 87 | +} |
--- src/main/java/itn/let/cert/ip/web/CertIpController.java
+++ src/main/java/itn/let/cert/ip/web/CertIpController.java
... | ... | @@ -3,6 +3,7 @@ |
| 3 | 3 |
import java.time.LocalDateTime; |
| 4 | 4 |
|
| 5 | 5 |
import javax.annotation.Resource; |
| 6 |
+import javax.servlet.http.HttpServletRequest; |
|
| 6 | 7 |
|
| 7 | 8 |
import org.apache.commons.lang3.StringUtils; |
| 8 | 9 |
import org.springframework.http.HttpStatus; |
... | ... | @@ -17,6 +18,7 @@ |
| 17 | 18 |
import itn.let.cert.ip.service.CertIpService; |
| 18 | 19 |
import itn.let.cert.ip.service.MberCertIpVO; |
| 19 | 20 |
import itn.let.mail.service.StatusResponse; |
| 21 |
+import itn.let.utl.sim.service.EgovClntInfo; |
|
| 20 | 22 |
|
| 21 | 23 |
/** |
| 22 | 24 |
* |
... | ... | @@ -79,6 +81,29 @@ |
| 79 | 81 |
return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO)); |
| 80 | 82 |
} |
| 81 | 83 |
|
| 84 |
+ |
|
| 85 |
+ @RequestMapping(value = {"/cert/ip/insertCennetCertIp.do"})
|
|
| 86 |
+ public ResponseEntity<StatusResponse> insertCennetCertIp(MberCertIpVO mberCertIpVO,HttpServletRequest request) throws Exception {
|
|
| 87 |
+ |
|
| 88 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 89 |
+ modelAndView.setViewName("jsonView");
|
|
| 90 |
+ |
|
| 91 |
+ //로그인 권한정보 불러오기 |
|
| 92 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 93 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 94 |
+ |
|
| 95 |
+ if(userId == null) {
|
|
| 96 |
+ if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); |
|
| 97 |
+ } |
|
| 98 |
+ mberCertIpVO.setFrstRegisterId(userId); |
|
| 99 |
+ mberCertIpVO.setMberId(userId); |
|
| 100 |
+ |
|
| 101 |
+ mberCertIpVO.setCertIp(EgovClntInfo.getClntIP(request)); |
|
| 102 |
+ mberCertIpVO.setCertMemo("허용 IP 등록");
|
|
| 103 |
+ |
|
| 104 |
+ return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO)); |
|
| 105 |
+ } |
|
| 106 |
+ |
|
| 82 | 107 |
@RequestMapping(value = {"/cert/ip/deleteCertIp.do"})
|
| 83 | 108 |
public ResponseEntity<StatusResponse> deleteCertIp(MberCertIpVO mberCertIpVO) throws Exception {
|
| 84 | 109 |
|
+++ src/main/java/itn/let/cert/ip/web/CertLoginLogController.java
... | ... | @@ -0,0 +1,102 @@ |
| 1 | +package itn.let.cert.ip.web; | |
| 2 | + | |
| 3 | +import java.time.LocalDateTime; | |
| 4 | + | |
| 5 | +import javax.annotation.Resource; | |
| 6 | + | |
| 7 | +import org.apache.commons.lang3.StringUtils; | |
| 8 | +import org.springframework.http.HttpStatus; | |
| 9 | +import org.springframework.http.ResponseEntity; | |
| 10 | +import org.springframework.stereotype.Controller; | |
| 11 | +import org.springframework.web.bind.annotation.RequestMapping; | |
| 12 | +import org.springframework.web.servlet.ModelAndView; | |
| 13 | + | |
| 14 | +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; | |
| 15 | +import itn.com.cmm.LoginVO; | |
| 16 | +import itn.com.utl.fcc.service.EgovStringUtil; | |
| 17 | +import itn.let.cert.ip.service.CertLoginLogService; | |
| 18 | +import itn.let.cert.ip.service.MberCertIpVO; | |
| 19 | +import itn.let.mail.service.StatusResponse; | |
| 20 | + | |
| 21 | +/** | |
| 22 | + * | |
| 23 | + * @author : 이호영 | |
| 24 | + * @fileName : CertIpController.java | |
| 25 | + * @date : 2024.11.19 | |
| 26 | + * @description : 허용 IP 관련 컨트롤러 | |
| 27 | + * =========================================================== | |
| 28 | + * DATE AUTHOR NOTE | |
| 29 | + * ----------------------------------------------------------- * | |
| 30 | + * 2024.11.19 이호영 최초 생성 | |
| 31 | + * | |
| 32 | + * | |
| 33 | + * | |
| 34 | + */ | |
| 35 | +@Controller | |
| 36 | +public class CertLoginLogController { | |
| 37 | + | |
| 38 | + | |
| 39 | + /* CertLoginLogService */ | |
| 40 | + @Resource(name = "CertLoginLogService") | |
| 41 | + private CertLoginLogService certLoginLogService; | |
| 42 | + | |
| 43 | + /* | |
| 44 | + @RequestMapping(value = {"/cert/ip/selectMberCertIpList.do"}) | |
| 45 | + public ResponseEntity<StatusResponse> selectMberCertIpList(MberCertIpVO mberCertPhoneVO) throws Exception { | |
| 46 | + | |
| 47 | + ModelAndView modelAndView = new ModelAndView(); | |
| 48 | + modelAndView.setViewName("jsonView"); | |
| 49 | + | |
| 50 | + //로그인 권한정보 불러오기 | |
| 51 | + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; | |
| 52 | + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); | |
| 53 | + | |
| 54 | + if(userId == null) { | |
| 55 | + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); | |
| 56 | + } | |
| 57 | + mberCertPhoneVO.setMberId(userId); | |
| 58 | + return ResponseEntity.ok().body(certLoginLogService.selectMberCertIpList(mberCertPhoneVO)); | |
| 59 | + } | |
| 60 | + | |
| 61 | + | |
| 62 | + @RequestMapping(value = {"/cert/ip/insertCertIp.do"}) | |
| 63 | + public ResponseEntity<StatusResponse> insertCertIp(MberCertIpVO mberCertIpVO) throws Exception { | |
| 64 | + | |
| 65 | + ModelAndView modelAndView = new ModelAndView(); | |
| 66 | + modelAndView.setViewName("jsonView"); | |
| 67 | + | |
| 68 | + //로그인 권한정보 불러오기 | |
| 69 | + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; | |
| 70 | + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); | |
| 71 | + | |
| 72 | + if(userId == null) { | |
| 73 | + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); | |
| 74 | + } | |
| 75 | + mberCertIpVO.setFrstRegisterId(userId); | |
| 76 | + mberCertIpVO.setMberId(userId); | |
| 77 | + | |
| 78 | + | |
| 79 | + return ResponseEntity.ok().body(certLoginLogService.insertCertIp(mberCertIpVO)); | |
| 80 | + } | |
| 81 | + | |
| 82 | + @RequestMapping(value = {"/cert/ip/deleteCertIp.do"}) | |
| 83 | + public ResponseEntity<StatusResponse> deleteCertIp(MberCertIpVO mberCertIpVO) throws Exception { | |
| 84 | + | |
| 85 | + ModelAndView modelAndView = new ModelAndView(); | |
| 86 | + modelAndView.setViewName("jsonView"); | |
| 87 | + | |
| 88 | + //로그인 권한정보 불러오기 | |
| 89 | + LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; | |
| 90 | + String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); | |
| 91 | + | |
| 92 | + if(userId == null) { | |
| 93 | + if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); | |
| 94 | + } | |
| 95 | + mberCertIpVO.setLastUpdusrId(userId); | |
| 96 | + mberCertIpVO.setMberId(userId); | |
| 97 | + | |
| 98 | + | |
| 99 | + return ResponseEntity.ok().body(certLoginLogService.deleteCertIp(mberCertIpVO)); | |
| 100 | + } | |
| 101 | + */ | |
| 102 | +}(No newline at end of file) |
--- src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java
+++ src/main/java/itn/let/cert/phone/service/impl/CertPhoneServiceImpl.java
... | ... | @@ -29,11 +29,22 @@ |
| 29 | 29 |
|
| 30 | 30 |
@Override |
| 31 | 31 |
public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO, String moblphonNo) {
|
| 32 |
- MberCertPhoneVO mberCertPhoneListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); |
|
| 33 |
- if(mberCertPhoneListVO != null || mberCertPhoneListVO.getMbtlnum().equals(moblphonNo) ) {
|
|
| 34 |
- return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now()); |
|
| 32 |
+ System.out.println("findByCertPhoneInfo : :::: ");
|
|
| 33 |
+ try {
|
|
| 34 |
+ |
|
| 35 |
+ MberCertPhoneVO mberCertPhoneListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO); |
|
| 36 |
+ if(mberCertPhoneListVO != null) {
|
|
| 37 |
+ if(mberCertPhoneListVO.getMbtlnum().equals(moblphonNo)) {
|
|
| 38 |
+ return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now()); |
|
| 39 |
+ } |
|
| 40 |
+ } |
|
| 41 |
+ |
|
| 42 |
+ certPhoneDAO.insertCertPhone(mberCertPhoneVO); |
|
| 43 |
+ |
|
| 44 |
+ } catch (Exception e) {
|
|
| 45 |
+ e.printStackTrace(); // TODO: handle exception |
|
| 46 |
+ return new StatusResponse(HttpStatus.OK, "오류가 발생하였습니다.", LocalDateTime.now()); |
|
| 35 | 47 |
} |
| 36 |
- certPhoneDAO.insertCertPhone(mberCertPhoneVO); |
|
| 37 | 48 |
return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now()); |
| 38 | 49 |
} |
| 39 | 50 |
|
--- src/main/java/itn/let/cert/phone/web/CertPhoneController.java
+++ src/main/java/itn/let/cert/phone/web/CertPhoneController.java
... | ... | @@ -91,6 +91,9 @@ |
| 91 | 91 |
ModelAndView modelAndView = new ModelAndView(); |
| 92 | 92 |
modelAndView.setViewName("jsonView");
|
| 93 | 93 |
|
| 94 |
+ |
|
| 95 |
+ System.out.println(" :: insertCertPhone :: ");
|
|
| 96 |
+ |
|
| 94 | 97 |
//로그인 권한정보 불러오기 |
| 95 | 98 |
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
| 96 | 99 |
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
... | ... | @@ -119,7 +122,9 @@ |
| 119 | 122 |
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); |
| 120 | 123 |
} |
| 121 | 124 |
mberCertPhoneVO.setFrstRegisterId(userId); |
| 122 |
- mberCertPhoneVO.setMberId(userId); |
|
| 125 |
+ if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) {
|
|
| 126 |
+ mberCertPhoneVO.setMberId(userId); |
|
| 127 |
+ } |
|
| 123 | 128 |
|
| 124 | 129 |
|
| 125 | 130 |
return ResponseEntity.ok().body(certPhoneService.updateMberCertPhone(mberCertPhoneVO)); |
... | ... | @@ -139,8 +144,10 @@ |
| 139 | 144 |
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now())); |
| 140 | 145 |
} |
| 141 | 146 |
mberCertPhoneVO.setLastUpdusrId(userId); |
| 142 |
- mberCertPhoneVO.setMberId(userId); |
|
| 143 |
- |
|
| 147 |
+ |
|
| 148 |
+ if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) {
|
|
| 149 |
+ mberCertPhoneVO.setMberId(userId); |
|
| 150 |
+ } |
|
| 144 | 151 |
|
| 145 | 152 |
|
| 146 | 153 |
return ResponseEntity.ok().body(certPhoneService.deleteCertPhone(mberCertPhoneVO)); |
... | ... | @@ -153,6 +160,7 @@ |
| 153 | 160 |
@RequestMapping(value = {"/cert/phone/sendSysMsgDataAjax.do"})
|
| 154 | 161 |
public ResponseEntity<StatusResponse> sendSysMsgDataAjax(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
| 155 | 162 |
|
| 163 |
+ |
|
| 156 | 164 |
//로그인 권한정보 불러오기 |
| 157 | 165 |
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
| 158 | 166 |
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
--- src/main/java/itn/let/main/web/EgovMainController.java
+++ src/main/java/itn/let/main/web/EgovMainController.java
... | ... | @@ -825,7 +825,7 @@ |
| 825 | 825 |
try {
|
| 826 | 826 |
//0번째 부터 6개의 항목만 조회 |
| 827 | 827 |
MjonMsgVO mjonMsgVO = new MjonMsgVO(); |
| 828 |
- adminMemLoginThisMonth = mjonMsgService.selectMemLoginThisMonth(mjonMsgVO); |
|
| 828 |
+ //adminMemLoginThisMonth = mjonMsgService.selectMemLoginThisMonth(mjonMsgVO); |
|
| 829 | 829 |
} |
| 830 | 830 |
catch(Exception e) {
|
| 831 | 831 |
isSuccess = false; |
--- src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
+++ src/main/java/itn/let/uat/uia/service/impl/EgovMberManageServiceImpl.java
... | ... | @@ -604,6 +604,15 @@ |
| 604 | 604 |
|
| 605 | 605 |
return resultCnt; |
| 606 | 606 |
} |
| 607 |
+ |
|
| 608 |
+ @Override |
|
| 609 |
+ public String getSecuLoginFlag(String id) {
|
|
| 610 |
+ // TODO Auto-generated method stub |
|
| 611 |
+ return mberManageDAO.getSecuLoginFlag(id); |
|
| 612 |
+ } |
|
| 607 | 613 |
|
| 614 |
+ public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception {
|
|
| 615 |
+ mberManageDAO.updateSecureLoginFlag(mberManageVO); |
|
| 616 |
+ } |
|
| 608 | 617 |
|
| 609 | 618 |
}(No newline at end of file) |
--- src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
+++ src/main/java/itn/let/uat/uia/service/impl/MberManageDAO.java
... | ... | @@ -332,5 +332,13 @@ |
| 332 | 332 |
|
| 333 | 333 |
return resultCnt; |
| 334 | 334 |
} |
| 335 |
+ |
|
| 336 |
+ public String getSecuLoginFlag(String id) {
|
|
| 337 |
+ return (String)select("mberManageDAO.getSecuLoginFlag", id);
|
|
| 338 |
+ } |
|
| 339 |
+ |
|
| 340 |
+ public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception {
|
|
| 341 |
+ update("mberManageDAO.updateSecureLoginFlag",mberManageVO);
|
|
| 342 |
+ } |
|
| 335 | 343 |
|
| 336 | 344 |
}(No newline at end of file) |
--- src/main/java/itn/let/uat/uia/web/EgovLoginController.java
+++ src/main/java/itn/let/uat/uia/web/EgovLoginController.java
... | ... | @@ -83,6 +83,10 @@ |
| 83 | 83 |
import itn.com.cmm.util.WebUtil; |
| 84 | 84 |
import itn.com.uss.olh.hpc.service.HackIpService; |
| 85 | 85 |
import itn.com.uss.olh.hpc.service.HackIpVO; |
| 86 |
+import itn.let.cert.ip.service.CertIpService; |
|
| 87 |
+import itn.let.cert.ip.service.CertLoginLogService; |
|
| 88 |
+import itn.let.cert.ip.service.MberCertIpVO; |
|
| 89 |
+import itn.let.cert.ip.service.MberCertLoginLogVO; |
|
| 86 | 90 |
import itn.let.cert.phone.service.CertPhoneService; |
| 87 | 91 |
import itn.let.cert.phone.service.MberCertPhoneVO; |
| 88 | 92 |
import itn.let.cop.bbs.service.BoardVO; |
... | ... | @@ -241,6 +245,12 @@ |
| 241 | 245 |
|
| 242 | 246 |
@Resource(name = "CertPhoneService") |
| 243 | 247 |
private CertPhoneService certPhoneService; |
| 248 |
+ |
|
| 249 |
+ @Resource(name = "CertLoginLogService") |
|
| 250 |
+ private CertLoginLogService certLoginLogService; |
|
| 251 |
+ |
|
| 252 |
+ @Resource(name = "CertIpService") |
|
| 253 |
+ private CertIpService certIpService; |
|
| 244 | 254 |
|
| 245 | 255 |
private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class); |
| 246 | 256 |
|
... | ... | @@ -1111,6 +1121,7 @@ |
| 1111 | 1121 |
|
| 1112 | 1122 |
// 공인 IP 구하기 |
| 1113 | 1123 |
String userIp = EgovClntInfo.getClntIP(request); |
| 1124 |
+ System.out.println("userIp :: "+userIp);
|
|
| 1114 | 1125 |
// java.util.Scanner s = new java.util.Scanner(new |
| 1115 | 1126 |
// java.net.URL("https://api.ipify.org").openStream(),
|
| 1116 | 1127 |
// "UTF-8").useDelimiter("\\A");
|
... | ... | @@ -2066,6 +2077,35 @@ |
| 2066 | 2077 |
modelAndView.addObject("data", resultVO);
|
| 2067 | 2078 |
modelAndView.addObject("mberCertPhoneList", mberCertPhoneList);
|
| 2068 | 2079 |
|
| 2080 |
+ |
|
| 2081 |
+ |
|
| 2082 |
+ |
|
| 2083 |
+ /* 일시 : 2024.11.21 |
|
| 2084 |
+ * 내용 : 패스 인증 조회 |
|
| 2085 |
+ * 작업자 : 이호영 |
|
| 2086 |
+ */ |
|
| 2087 |
+ String userId = loginVO.getId(); |
|
| 2088 |
+ // lettngnrlmber TB에 secuLoginFlag 값이 Y면 인증 해야함 |
|
| 2089 |
+ String secuLoginFlag = mberManageService.getSecuLoginFlag(userId); |
|
| 2090 |
+ |
|
| 2091 |
+ String passFlag = "Y"; |
|
| 2092 |
+ if("Y".equals(secuLoginFlag)) {
|
|
| 2093 |
+ // lettngnrlmber TB에 secuLoginFlag 값이 Y면 |
|
| 2094 |
+ // IP가 등록 되어 있는지 확인 |
|
| 2095 |
+ // 있으면 2차인증 안함 |
|
| 2096 |
+ // 없으면 2차인증 진행 |
|
| 2097 |
+ MberCertIpVO mberCertIpVO = new MberCertIpVO(); |
|
| 2098 |
+ mberCertIpVO.setCertIp(userIp); |
|
| 2099 |
+ mberCertIpVO.setMberId(userId); |
|
| 2100 |
+ // ip가 있으면 true |
|
| 2101 |
+ if(!certIpService.checkCertIp(mberCertIpVO)) {
|
|
| 2102 |
+ passFlag = "N"; |
|
| 2103 |
+ } |
|
| 2104 |
+ } |
|
| 2105 |
+ modelAndView.addObject("passFlag", passFlag);
|
|
| 2106 |
+ |
|
| 2107 |
+ |
|
| 2108 |
+ |
|
| 2069 | 2109 |
return modelAndView; |
| 2070 | 2110 |
|
| 2071 | 2111 |
|
... | ... | @@ -2461,14 +2501,24 @@ |
| 2461 | 2501 |
sendLogVO.setSendId(id); |
| 2462 | 2502 |
sendLogVO.setReceive(s_hp); |
| 2463 | 2503 |
sendLogVO.setCheckNo(s_num); |
| 2464 |
- |
|
| 2465 |
- sendLogVO = mjonMsgDataService.selectSysMsgLogCheck(sendLogVO); |
|
| 2466 | 2504 |
|
| 2467 |
- if (sendLogVO==null) {
|
|
| 2468 |
- redirectAttributes.addFlashAttribute("fail2", true);
|
|
| 2469 |
- return "redirect:/web/user/login/login.do"; |
|
| 2470 |
- } |
|
| 2505 |
+ String passFlag = request.getParameter("passFlag");
|
|
| 2506 |
+ System.out.println("passFlag : "+ passFlag);
|
|
| 2507 |
+ System.out.println("passFlag : "+ passFlag);
|
|
| 2508 |
+ System.out.println("passFlag : "+ passFlag);
|
|
| 2509 |
+ System.out.println("passFlag : "+ passFlag);
|
|
| 2510 |
+ System.out.println("passFlag : "+ passFlag);
|
|
| 2511 |
+ System.out.println("passFlag : "+ passFlag);
|
|
| 2512 |
+ if("Y".equals(passFlag)) {
|
|
| 2471 | 2513 |
|
| 2514 |
+ sendLogVO = mjonMsgDataService.selectSysMsgLogCheck(sendLogVO); |
|
| 2515 |
+ |
|
| 2516 |
+ if (sendLogVO==null) {
|
|
| 2517 |
+ redirectAttributes.addFlashAttribute("fail2", true);
|
|
| 2518 |
+ return "redirect:/web/user/login/login.do"; |
|
| 2519 |
+ } |
|
| 2520 |
+ |
|
| 2521 |
+ } |
|
| 2472 | 2522 |
|
| 2473 | 2523 |
String password = decryptRsa(privateKey, loginVO.getPassword()); |
| 2474 | 2524 |
loginVO.setId(id); |
... | ... | @@ -2664,7 +2714,14 @@ |
| 2664 | 2714 |
loginVO.getIp(); |
| 2665 | 2715 |
loginVO.setMessage("로그인 성공되었습니다.");
|
| 2666 | 2716 |
loginVO.setLoginYn("Y");
|
| 2717 |
+ |
|
| 2667 | 2718 |
loginService.insertActionLoginLog(loginVO); |
| 2719 |
+ // 인증 로그인 이력을 위한 insert |
|
| 2720 |
+ |
|
| 2721 |
+ MberCertLoginLogVO mberCertLoginLogVO = new MberCertLoginLogVO(); |
|
| 2722 |
+ mberCertLoginLogVO.setLoginId(loginVO.getId()); |
|
| 2723 |
+ mberCertLoginLogVO.setLoginIp(loginVO.getIp()); |
|
| 2724 |
+ certLoginLogService.insertCertLoginLog(mberCertLoginLogVO, request); |
|
| 2668 | 2725 |
} |
| 2669 | 2726 |
|
| 2670 | 2727 |
// 등급제 Start |
--- src/main/java/itn/let/uat/uia/web/EgovMypageController.java
+++ src/main/java/itn/let/uat/uia/web/EgovMypageController.java
... | ... | @@ -16,9 +16,12 @@ |
| 16 | 16 |
import javax.servlet.http.HttpServletRequest; |
| 17 | 17 |
import javax.servlet.http.HttpServletResponse; |
| 18 | 18 |
|
| 19 |
+import org.springframework.http.HttpStatus; |
|
| 20 |
+import org.springframework.http.ResponseEntity; |
|
| 19 | 21 |
import org.springframework.stereotype.Controller; |
| 20 | 22 |
import org.springframework.ui.ModelMap; |
| 21 | 23 |
import org.springframework.web.bind.annotation.ModelAttribute; |
| 24 |
+import org.springframework.web.bind.annotation.RequestBody; |
|
| 22 | 25 |
import org.springframework.web.bind.annotation.RequestMapping; |
| 23 | 26 |
import org.springframework.web.bind.annotation.RequestParam; |
| 24 | 27 |
import org.springframework.web.multipart.MultipartFile; |
... | ... | @@ -41,6 +44,10 @@ |
| 41 | 44 |
import itn.com.cmm.util.RedirectUrlMaker; |
| 42 | 45 |
import itn.com.cmm.util.StringUtil; |
| 43 | 46 |
import itn.com.utl.fcc.service.EgovStringUtil; |
| 47 |
+import itn.let.cert.ip.service.CertIpService; |
|
| 48 |
+import itn.let.cert.ip.service.CertLoginLogService; |
|
| 49 |
+import itn.let.cert.ip.service.MberCertIpVO; |
|
| 50 |
+import itn.let.cert.ip.service.MberCertLoginLogVO; |
|
| 44 | 51 |
import itn.let.fax.user.service.FaxGroupDataVO; |
| 45 | 52 |
import itn.let.fax.user.service.FaxService; |
| 46 | 53 |
import itn.let.kakao.user.sent.service.KakaoSentService; |
... | ... | @@ -70,6 +77,7 @@ |
| 70 | 77 |
import itn.let.uss.umt.service.EgovUserManageService; |
| 71 | 78 |
import itn.let.uss.umt.service.MberManageVO; |
| 72 | 79 |
import itn.let.uss.umt.service.UserManageVO; |
| 80 |
+import itn.let.utl.sim.service.EgovClntInfo; |
|
| 73 | 81 |
import itn.let.utl.user.service.MjonNoticeSendUtil; |
| 74 | 82 |
|
| 75 | 83 |
/** |
... | ... | @@ -164,6 +172,14 @@ |
| 164 | 172 |
/** 등급제 관리 서비스 */ |
| 165 | 173 |
@Resource(name = "mberGrdService") |
| 166 | 174 |
MberGrdService mberGrdService; |
| 175 |
+ |
|
| 176 |
+// /* CertLoginLogService */ |
|
| 177 |
+ @Resource(name = "CertLoginLogService") |
|
| 178 |
+ private CertLoginLogService certLoginLogService; |
|
| 179 |
+ |
|
| 180 |
+// /* CertLoginLogService */ |
|
| 181 |
+ @Resource(name = "CertIpService") |
|
| 182 |
+ private CertIpService certIpService; |
|
| 167 | 183 |
|
| 168 | 184 |
/** |
| 169 | 185 |
* 마이페이지 비밀번호 변경 탭 |
... | ... | @@ -2927,13 +2943,62 @@ |
| 2927 | 2943 |
* 회원탈퇴 본인인증 화면 |
| 2928 | 2944 |
*/ |
| 2929 | 2945 |
@RequestMapping(value="/web/user/mberSecureLogin.do") |
| 2930 |
- public String secureLogin(@ModelAttribute MberManageVO mberManageVO |
|
| 2946 |
+ public String secureLogin(@ModelAttribute("mberCertLoginLogVO") MberCertLoginLogVO mberCertLoginLogVO
|
|
| 2931 | 2947 |
, ModelMap model, HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception {
|
| 2932 | 2948 |
|
| 2933 | 2949 |
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
| 2934 | 2950 |
if(loginVO == null) {
|
| 2935 | 2951 |
return "redirect:/web/user/login/login.do"; |
| 2936 | 2952 |
} |
| 2953 |
+ |
|
| 2954 |
+ // secuLoginFlag 값을 Model에 추가 |
|
| 2955 |
+ model.addAttribute("secuLoginFlag", mberCertLoginLogVO.getSecuLoginFlag());
|
|
| 2956 |
+ System.out.println(mberCertLoginLogVO.getSecuLoginFlag()); |
|
| 2957 |
+ |
|
| 2958 |
+ //로그인 권한정보 불러오기 |
|
| 2959 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 2960 |
+ |
|
| 2961 |
+ |
|
| 2962 |
+ /** pageing */ |
|
| 2963 |
+ PaginationInfo paginationInfo = new PaginationInfo(); |
|
| 2964 |
+ paginationInfo.setCurrentPageNo(mberCertLoginLogVO.getPageIndex()); |
|
| 2965 |
+ paginationInfo.setRecordCountPerPage(mberCertLoginLogVO.getPageUnit()); |
|
| 2966 |
+ paginationInfo.setPageSize(mberCertLoginLogVO.getPageSize()); |
|
| 2967 |
+ |
|
| 2968 |
+ mberCertLoginLogVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); |
|
| 2969 |
+ mberCertLoginLogVO.setLastIndex(paginationInfo.getLastRecordIndex()); |
|
| 2970 |
+ mberCertLoginLogVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); |
|
| 2971 |
+ if("".equals(mberCertLoginLogVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
|
| 2972 |
+ mberCertLoginLogVO.setSearchSortCnd("LOGIN_DT");
|
|
| 2973 |
+ mberCertLoginLogVO.setSearchSortOrd("desc");
|
|
| 2974 |
+ } |
|
| 2975 |
+ |
|
| 2976 |
+ |
|
| 2977 |
+ mberCertLoginLogVO.setLoginId(userId); |
|
| 2978 |
+ //전체 발송 리스트 불러오기 |
|
| 2979 |
+ List<MberCertLoginLogVO> resultList = certLoginLogService.findAllCertLoginLogVO(mberCertLoginLogVO); |
|
| 2980 |
+ model.addAttribute("resultList", resultList);
|
|
| 2981 |
+ model.addAttribute("resultListCnt", resultList.size());
|
|
| 2982 |
+ |
|
| 2983 |
+ |
|
| 2984 |
+ paginationInfo.setTotalRecordCount( resultList.size()> 0 ? resultList.get(0).getTotCnt() : 0); |
|
| 2985 |
+ model.addAttribute("paginationInfo", paginationInfo);
|
|
| 2986 |
+ |
|
| 2987 |
+ |
|
| 2988 |
+ |
|
| 2989 |
+ |
|
| 2990 |
+ // 접속 IP |
|
| 2991 |
+ String cennectIP = EgovClntInfo.getClntIP(request); |
|
| 2992 |
+ model.addAttribute("cennectIP", cennectIP);
|
|
| 2993 |
+ |
|
| 2994 |
+ // 접속 IP가 등록되어있는지 확인 |
|
| 2995 |
+ MberCertIpVO mberCertIpVO = new MberCertIpVO(); |
|
| 2996 |
+ mberCertIpVO.setCertIp(cennectIP); |
|
| 2997 |
+ mberCertIpVO.setMberId(userId); |
|
| 2998 |
+ model.addAttribute("chkcertRegIP", certIpService.checkRegCertIp(mberCertIpVO));
|
|
| 2999 |
+ |
|
| 3000 |
+ |
|
| 3001 |
+ |
|
| 2937 | 3002 |
|
| 2938 | 3003 |
|
| 2939 | 3004 |
{
|
... | ... | @@ -2951,11 +3016,20 @@ |
| 2951 | 3016 |
serverNm = request.getScheme() + "://www.munjaon.co.kr"; |
| 2952 | 3017 |
} |
| 2953 | 3018 |
|
| 3019 |
+ System.out.println("@@@ serverNm : " + serverNm);
|
|
| 2954 | 3020 |
AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId()); |
| 2955 | 3021 |
model.addAttribute("certVO", certVO);
|
| 2956 | 3022 |
} |
| 3023 |
+ |
|
| 3024 |
+ MberManageVO mberManageVO = new MberManageVO(); |
|
| 3025 |
+ mberManageVO.setMberId(loginVO.getId()); |
|
| 3026 |
+ |
|
| 3027 |
+ model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO));
|
|
| 3028 |
+ |
|
| 3029 |
+ model.addAttribute("pageTab", "mberSecureLogin");
|
|
| 3030 |
+ |
|
| 3031 |
+ |
|
| 2957 | 3032 |
|
| 2958 |
- model.addAttribute("pageTab", "mberSecureLogin");
|
|
| 2959 | 3033 |
return "web/user/mberSecureLogin"; |
| 2960 | 3034 |
} |
| 2961 | 3035 |
|
... | ... | @@ -3773,14 +3847,47 @@ |
| 3773 | 3847 |
certVO.setCertNation(kmcVO.getNation()); |
| 3774 | 3848 |
certVO.setCertName(kmcVO.getName()); |
| 3775 | 3849 |
certVO.setCertResult(kmcVO.getResult()); |
| 3776 |
- certVO.setCertType("KMC_회원정보 변경");
|
|
| 3850 |
+ certVO.setCertType("secureLoginOFF");
|
|
| 3777 | 3851 |
certVO.setCertIpaddr(kmcVO.getIp()); |
| 3778 | 3852 |
certVO.setBirthDay(kmcVO.getBirthDay()); |
| 3779 | 3853 |
certVO.setSexdstnCode(kmcVO.getGender()); |
| 3780 | 3854 |
|
| 3781 |
- model.addAttribute("kmcVO", kmcVO);
|
|
| 3855 |
+ |
|
| 3856 |
+ //디비 테이블에 저장하기 |
|
| 3857 |
+ mberManageService.insertCertInfoLog(certVO); |
|
| 3858 |
+ |
|
| 3859 |
+ |
|
| 3860 |
+ |
|
| 3782 | 3861 |
|
| 3783 | 3862 |
return "web/user/securityAuthnPage"; |
| 3784 | 3863 |
} |
| 3785 | 3864 |
|
| 3865 |
+ @RequestMapping(value="/web/user/mberSecureLoginAjax.do") |
|
| 3866 |
+ public ResponseEntity<?> mberSecureLoginAjax(MberManageVO mberManageVO, @RequestBody Map<String, String> params){
|
|
| 3867 |
+ LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 3868 |
+ String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 3869 |
+ |
|
| 3870 |
+ if("Y".equals(params.get("secuLoginFlag"))) {
|
|
| 3871 |
+ mberManageVO.setSecuLoginFlag("N");
|
|
| 3872 |
+ }else {
|
|
| 3873 |
+ mberManageVO.setSecuLoginFlag("Y");
|
|
| 3874 |
+ } |
|
| 3875 |
+ mberManageVO.setMberId(userId); |
|
| 3876 |
+ mberManageVO.setLastUpdusrId(userId); |
|
| 3877 |
+ |
|
| 3878 |
+ try {
|
|
| 3879 |
+ mberManageService.updateSecureLoginFlag(mberManageVO); |
|
| 3880 |
+ |
|
| 3881 |
+ return new ResponseEntity<>("success", HttpStatus.OK);
|
|
| 3882 |
+ } catch (Exception e) {
|
|
| 3883 |
+ System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!");
|
|
| 3884 |
+ System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!");
|
|
| 3885 |
+ System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!");
|
|
| 3886 |
+ System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!");
|
|
| 3887 |
+ System.out.println("mberSecureLoginAjax Error!!!!!!!!!!!!!!!!!!!!");
|
|
| 3888 |
+ |
|
| 3889 |
+ return new ResponseEntity<>("fail", HttpStatus.OK);
|
|
| 3890 |
+ } |
|
| 3891 |
+ } |
|
| 3892 |
+ |
|
| 3786 | 3893 |
} |
--- src/main/java/itn/let/uat/uia/web/KmcCertChecker.java
+++ src/main/java/itn/let/uat/uia/web/KmcCertChecker.java
... | ... | @@ -617,6 +617,8 @@ |
| 617 | 617 |
String cpId = "MJOM1001"; // 회원사ID |
| 618 | 618 |
String urlCode = "001014"; // URL코드 |
| 619 | 619 |
//kmc 본인인증 실/개발 서버 구분 |
| 620 |
+ |
|
| 621 |
+ System.out.println("@@@@@ trUrl : " + trUrl);
|
|
| 620 | 622 |
if(trUrl.contains("192.168.0.60") || trUrl.contains("localhost")) {
|
| 621 | 623 |
urlCode = "010001"; |
| 622 | 624 |
} |
--- src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
+++ src/main/java/itn/let/uss/umt/service/EgovMberManageService.java
... | ... | @@ -243,4 +243,9 @@ |
| 243 | 243 |
|
| 244 | 244 |
//기업회원 기업정보 변경신청 취소 처리 |
| 245 | 245 |
public int updateCmpUserInfoCancel(MberManageVO mberManageVO) throws Exception; |
| 246 |
+ |
|
| 247 |
+ public String getSecuLoginFlag(String id); |
|
| 248 |
+ |
|
| 249 |
+ public void updateSecureLoginFlag(MberManageVO mberManageVO) throws Exception; |
|
| 250 |
+ |
|
| 246 | 251 |
}(No newline at end of file) |
--- src/main/java/itn/let/uss/umt/service/MberManageVO.java
+++ src/main/java/itn/let/uss/umt/service/MberManageVO.java
... | ... | @@ -504,6 +504,12 @@ |
| 504 | 504 |
private String dormantDate; |
| 505 | 505 |
private String spamYn; |
| 506 | 506 |
|
| 507 |
+ |
|
| 508 |
+ /** |
|
| 509 |
+ * 보안로그인 여부 |
|
| 510 |
+ */ |
|
| 511 |
+ private String secuLoginFlag; |
|
| 512 |
+ |
|
| 507 | 513 |
public String getSpamYn() {
|
| 508 | 514 |
return spamYn; |
| 509 | 515 |
} |
... | ... | @@ -1784,5 +1790,12 @@ |
| 1784 | 1790 |
public void setHotlineAgentCode(String hotlineAgentCode) {
|
| 1785 | 1791 |
this.hotlineAgentCode = hotlineAgentCode; |
| 1786 | 1792 |
} |
| 1793 |
+ public String getSecuLoginFlag() {
|
|
| 1794 |
+ return secuLoginFlag; |
|
| 1795 |
+ } |
|
| 1796 |
+ public void setSecuLoginFlag(String secuLoginFlag) {
|
|
| 1797 |
+ this.secuLoginFlag = secuLoginFlag; |
|
| 1798 |
+ } |
|
| 1799 |
+ |
|
| 1787 | 1800 |
|
| 1788 | 1801 |
}(No newline at end of file) |
--- src/main/java/itn/web/MainController.java
+++ src/main/java/itn/web/MainController.java
... | ... | @@ -1223,6 +1223,13 @@ |
| 1223 | 1223 |
|
| 1224 | 1224 |
model.addAttribute("userCandidateYn", userCandidateYn);
|
| 1225 | 1225 |
|
| 1226 |
+ if(loginVO != null) {
|
|
| 1227 |
+ MberManageVO mberManageVO = new MberManageVO(); |
|
| 1228 |
+ mberManageVO.setMberId(loginVO.getId()); |
|
| 1229 |
+ |
|
| 1230 |
+ model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO));
|
|
| 1231 |
+ } |
|
| 1232 |
+ |
|
| 1226 | 1233 |
return "web/com/webCommonHeader"; |
| 1227 | 1234 |
} |
| 1228 | 1235 |
|
--- src/main/resources/egovframework/spring/com/context-idgen.xml
+++ src/main/resources/egovframework/spring/com/context-idgen.xml
... | ... | @@ -2849,5 +2849,24 @@ |
| 2849 | 2849 |
<property name="cipers" value="13" /> |
| 2850 | 2850 |
<property name="fillChar" value="0" /> |
| 2851 | 2851 |
</bean> |
| 2852 |
+ |
|
| 2853 |
+ |
|
| 2854 |
+ <!-- 문자온 로그인LOG ID Generation Strategy Config --> |
|
| 2855 |
+ <bean name="egovMjonCertLoginLogIdGnrService" |
|
| 2856 |
+ class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl" |
|
| 2857 |
+ destroy-method="destroy"> |
|
| 2858 |
+ <property name="dataSource" ref="dataSource" /> |
|
| 2859 |
+ <property name="strategy" ref="mjonCertLoginLogIdStrategy" /> |
|
| 2860 |
+ <property name="blockSize" value="10"/> |
|
| 2861 |
+ <property name="table" value="IDS"/> |
|
| 2862 |
+ <property name="tableName" value="CERT_LOGIN_LOG_ID"/> |
|
| 2863 |
+ </bean> |
|
| 2864 |
+ <bean name="mjonCertLoginLogIdStrategy" |
|
| 2865 |
+ class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl"> |
|
| 2866 |
+ <property name="prefix" value="CERTLOGINLOG_" /> |
|
| 2867 |
+ <property name="cipers" value="10" /> |
|
| 2868 |
+ <property name="fillChar" value="0" /> |
|
| 2869 |
+ </bean> |
|
| 2870 |
+ |
|
| 2852 | 2871 |
|
| 2853 | 2872 |
</beans> |
--- src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml
+++ src/main/resources/egovframework/spring/com/context-scheduling-sym-log-lgm.xml
... | ... | @@ -127,21 +127,21 @@ |
| 127 | 127 |
|
| 128 | 128 |
<!-- 14 --> |
| 129 | 129 |
<!-- mj_msg_data 백업 --> |
| 130 |
- <bean id="MjMsgDataBackupBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> |
|
| 130 |
+ <!-- <bean id="MjMsgDataBackupBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> |
|
| 131 | 131 |
<property name="targetObject" ref="tableBackupMsgScheduling" /> |
| 132 | 132 |
<property name="targetMethod" value="mjMsgDataBackup" /> |
| 133 | 133 |
<property name="concurrent" value="false" /> |
| 134 |
- </bean> |
|
| 134 |
+ </bean> --> |
|
| 135 | 135 |
|
| 136 |
- <bean id="MjMsgDataBackupBeanTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> |
|
| 137 |
- <property name="jobDetail" ref="MjMsgDataBackupBean" /> |
|
| 136 |
+<!-- <bean id="MjMsgDataBackupBeanTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> --> |
|
| 137 |
+<!-- <property name="jobDetail" ref="MjMsgDataBackupBean" /> --> |
|
| 138 | 138 |
<!-- 매년 3,11월 22일 4시38분 마다 작년도 테이블 백업 --> |
| 139 |
- <property name="cronExpression" value="0 38 4 22 11 ?" /> |
|
| 139 |
+<!-- <property name="cronExpression" value="0 38 4 22 11 ?" /> --> |
|
| 140 | 140 |
<!-- <property name="cronExpression" value="0 38 4 28 3 ?" /> --> |
| 141 | 141 |
<!-- 매일 4시18분 마다 작년도 테이블 백업 --> |
| 142 | 142 |
<!-- <property name="cronExpression" value="0 03 12 * * ?" /> --> |
| 143 | 143 |
<!-- <property name="cronExpression" value="8 * * * * ?" /> --> |
| 144 |
- </bean> |
|
| 144 |
+<!-- </bean> --> |
|
| 145 | 145 |
|
| 146 | 146 |
|
| 147 | 147 |
|
... | ... | @@ -157,7 +157,7 @@ |
| 157 | 157 |
<!-- <ref bean="SttstMsgRankDayBeanTrigger" /> --><!-- 문자전송순위통계집계(매일한번) --> |
| 158 | 158 |
|
| 159 | 159 |
<!-- mj_msg_data 백업 --> |
| 160 |
- <ref bean="MjMsgDataBackupBeanTrigger" /> |
|
| 160 |
+ <!-- <ref bean="MjMsgDataBackupBeanTrigger" /> --> |
|
| 161 | 161 |
|
| 162 | 162 |
</list> |
| 163 | 163 |
</property> |
--- src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml
+++ src/main/resources/egovframework/sqlmap/config/mysql/sql-map-config-mysql-cert.xml
... | ... | @@ -3,6 +3,7 @@ |
| 3 | 3 |
|
| 4 | 4 |
<sqlMapConfig> |
| 5 | 5 |
<settings cacheModelsEnabled="true" useStatementNamespaces="true" /> |
| 6 |
- <sqlMap resource="egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml"/> <!-- 문자메세지 --> |
|
| 7 |
- <sqlMap resource="egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml"/> <!-- 문자메세지 --> |
|
| 6 |
+ <sqlMap resource="egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml"/> <!-- 로그인 허용 IP --> |
|
| 7 |
+ <sqlMap resource="egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml"/> <!-- 로그인 허용 IP를 위한 로그인Log --> |
|
| 8 |
+ <sqlMap resource="egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml"/> <!-- 로그인 인증 폰번호 --> |
|
| 8 | 9 |
</sqlMapConfig> |
--- src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml
... | ... | @@ -23,7 +23,7 @@ |
| 23 | 23 |
where |
| 24 | 24 |
MBER_ID = #mberId# |
| 25 | 25 |
AND CERT_USE_YN = 'Y' |
| 26 |
- order by FRST_REGIST_PNTTM desc |
|
| 26 |
+ order by FRST_REGIST_PNTTM asc |
|
| 27 | 27 |
</select> |
| 28 | 28 |
|
| 29 | 29 |
<select id="MberCertIpVO.findByMberCertIpList" parameterClass="mberCertIpVO" resultClass="mberCertIpVO"> |
... | ... | @@ -86,4 +86,33 @@ |
| 86 | 86 |
|
| 87 | 87 |
|
| 88 | 88 |
|
| 89 |
+ <select id="MberCertIpVO.checkCertIp" parameterClass="mberCertIpVO" resultClass="mberCertIpVO"> |
|
| 90 |
+ /*MberCertIpVO.checkCertIp*/ |
|
| 91 |
+ |
|
| 92 |
+ select |
|
| 93 |
+ LOGIN_IP as certIp |
|
| 94 |
+ from lettngnrlmber_cert_login_log_ip |
|
| 95 |
+ where LOGIN_ID = #mberId# |
|
| 96 |
+ and LOGIN_IP = #certIp# |
|
| 97 |
+ union all |
|
| 98 |
+ select |
|
| 99 |
+ CERT_IP as certIp |
|
| 100 |
+ from lettngnrlmber_cert_ip |
|
| 101 |
+ where MBER_ID = #mberId# |
|
| 102 |
+ and CERT_IP = #certIp# |
|
| 103 |
+ AND CERT_USE_YN = 'Y' |
|
| 104 |
+ </select> |
|
| 105 |
+ |
|
| 106 |
+ |
|
| 107 |
+ <select id="MberCertIpVO.checkRegCertIp" parameterClass="mberCertIpVO" resultClass="mberCertIpVO"> |
|
| 108 |
+ /*MberCertIpVO.checkCennetIp*/ |
|
| 109 |
+ |
|
| 110 |
+ select |
|
| 111 |
+ CERT_IP as certIp |
|
| 112 |
+ from lettngnrlmber_cert_ip |
|
| 113 |
+ where MBER_ID = #mberId# |
|
| 114 |
+ and CERT_IP = #certIp# |
|
| 115 |
+ AND CERT_USE_YN = 'Y' |
|
| 116 |
+ </select> |
|
| 117 |
+ |
|
| 89 | 118 |
</sqlMap>(No newline at end of file) |
+++ src/main/resources/egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml
... | ... | @@ -0,0 +1,79 @@ |
| 1 | +<?xml version="1.0" encoding="UTF-8"?><!-- | |
| 2 | + 수정일 수정자 수정내용 | |
| 3 | + ========= ======= ================================================= | |
| 4 | + 2021.03.01 신명섭 | |
| 5 | +--> | |
| 6 | +<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"> | |
| 7 | +<sqlMap namespace="MjonCertLoginLog"> | |
| 8 | + <typeAlias alias="mberCertLoginLogVO" type="itn.let.cert.ip.service.MberCertLoginLogVO"/> | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + <select id="MberCertLoginLogVO.findAllCertLoginLogVO" resultClass="mberCertLoginLogVO" parameterClass="mberCertLoginLogVO"> | |
| 14 | + /*MberCertLoginLogVO.findAllCertLoginLogVO*/ | |
| 15 | + | |
| 16 | + | |
| 17 | + SELECT | |
| 18 | + COUNT(CERT_LOGIN_ID) OVER() AS totCnt | |
| 19 | + , CERT_LOGIN_ID as certLoginId | |
| 20 | + , LOGIN_ID as loginId | |
| 21 | + , LOGIN_IP as loginIp | |
| 22 | + , CASE | |
| 23 | + WHEN LOGIN_DEVICE = 'D' THEN 'PC' | |
| 24 | + WHEN LOGIN_DEVICE IN ('M', 'T') THEN '모바일' | |
| 25 | + ELSE 'PC' | |
| 26 | + END AS loginDevice | |
| 27 | + , DATE_FORMAT(LOGIN_DT,'%Y-%m-%d %T') as loginDt | |
| 28 | + FROM LETTNGNRLMBER_CERT_LOGIN_LOG_IP | |
| 29 | + WHERE 1=1 | |
| 30 | + and LOGIN_ID = #loginId# | |
| 31 | + ORDER BY 1=1 | |
| 32 | + <isNotEmpty property="searchSortCnd"> | |
| 33 | + ,$searchSortCnd$ | |
| 34 | + </isNotEmpty> | |
| 35 | + <isNotEmpty property="searchSortOrd"> | |
| 36 | + $searchSortOrd$ | |
| 37 | + </isNotEmpty> | |
| 38 | + | |
| 39 | + LIMIT #recordCountPerPage# OFFSET #firstIndex# | |
| 40 | + | |
| 41 | + </select> | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + <select id="MberCertLoginLogVO.checkLoginIpExists" resultClass="int" parameterClass="mberCertLoginLogVO"> | |
| 46 | + SELECT COUNT(1) | |
| 47 | + FROM LETTNGNRLMBER_CERT_LOGIN_LOG_IP | |
| 48 | + WHERE LOGIN_IP = #loginIp# | |
| 49 | + AND LOGIN_ID = #loginId# | |
| 50 | + </select> | |
| 51 | + | |
| 52 | + <insert id="MberCertLoginLogVO.insertCertLoginLog" parameterClass="mberCertLoginLogVO"> | |
| 53 | + INSERT INTO LETTNGNRLMBER_CERT_LOGIN_LOG_IP | |
| 54 | + ( | |
| 55 | + CERT_LOGIN_ID, | |
| 56 | + LOGIN_ID, | |
| 57 | + LOGIN_IP, | |
| 58 | + LOGIN_DEVICE, | |
| 59 | + LOGIN_DT | |
| 60 | + ) | |
| 61 | + VALUES | |
| 62 | + ( | |
| 63 | + #certLoginId#, | |
| 64 | + #loginId#, | |
| 65 | + #loginIp#, | |
| 66 | + #loginDevice#, | |
| 67 | + NOW() | |
| 68 | + ) | |
| 69 | + </insert> | |
| 70 | + | |
| 71 | + <!-- LOGIN_IP가 존재할 경우 UPDATE --> | |
| 72 | + <update id="MberCertLoginLogVO.updateCertLoginLog" parameterClass="mberCertLoginLogVO"> | |
| 73 | + UPDATE LETTNGNRLMBER_CERT_LOGIN_LOG_IP | |
| 74 | + SET LOGIN_DT = NOW() | |
| 75 | + WHERE LOGIN_IP = #loginIp# | |
| 76 | + AND LOGIN_ID = #loginId# | |
| 77 | + </update> | |
| 78 | + | |
| 79 | +</sqlMap>(No newline at end of file) |
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
... | ... | @@ -5972,6 +5972,7 @@ |
| 5972 | 5972 |
|
| 5973 | 5973 |
<!-- 당월 회원전환률 --> |
| 5974 | 5974 |
<select id="mjonMsgDAO.selectMemLoginThisMonth" parameterClass="mjonMsgVO" resultClass="mjonMsgVO"> |
| 5975 |
+ /* mjonMsgDAO.selectMemLoginThisMonth */ |
|
| 5975 | 5976 |
SELECT |
| 5976 | 5977 |
M2.createDt |
| 5977 | 5978 |
,M2.visitCnt |
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovMberManage_SQL_Mysql.xml
... | ... | @@ -2106,4 +2106,21 @@ |
| 2106 | 2106 |
WHERE CMPHST_ID = #cmpHstId# |
| 2107 | 2107 |
|
| 2108 | 2108 |
</update> |
| 2109 |
+ |
|
| 2110 |
+ <select id="mberManageDAO.getSecuLoginFlag" resultClass="String" parameterClass="String"> |
|
| 2111 |
+ |
|
| 2112 |
+ |
|
| 2113 |
+ select SECU_LOGIN_FLAG from lettngnrlmber where MBER_ID = #id# |
|
| 2114 |
+ |
|
| 2115 |
+ </select> |
|
| 2116 |
+ |
|
| 2117 |
+ <update id="mberManageDAO.updateSecureLoginFlag" parameterClass="mberVO"> |
|
| 2118 |
+ |
|
| 2119 |
+ UPDATE LETTNGNRLMBER SET |
|
| 2120 |
+ SECU_LOGIN_FLAG = #secuLoginFlag# |
|
| 2121 |
+ ,LAST_UPDUSR_ID = #lastUpdusrId# |
|
| 2122 |
+ WHERE MBER_ID = #mberId# |
|
| 2123 |
+ |
|
| 2124 |
+ </update> |
|
| 2125 |
+ |
|
| 2109 | 2126 |
</sqlMap> |
--- src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/uss/umt/EgovUserManage_SQL_Mysql.xml
... | ... | @@ -1206,6 +1206,7 @@ |
| 1206 | 1206 |
|
| 1207 | 1207 |
, A.EMAIL_YN AS emailYN |
| 1208 | 1208 |
, A.SMS_YN AS smsYN |
| 1209 |
+ , A.SECU_LOGIN_FLAG AS secuLoginFlag |
|
| 1209 | 1210 |
|
| 1210 | 1211 |
FROM |
| 1211 | 1212 |
LETTNGNRLMBER A |
--- src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
+++ src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
... | ... | @@ -41,6 +41,42 @@ |
| 41 | 41 |
<script> |
| 42 | 42 |
$(document).ready(function (){
|
| 43 | 43 |
|
| 44 |
+ |
|
| 45 |
+ $(document).on('click', '#secuLoginFlag', function () {
|
|
| 46 |
+ |
|
| 47 |
+ var secuLoginFlag = ""; |
|
| 48 |
+ console.log($(this).text()); |
|
| 49 |
+ if($(this).text() == 'ON'){
|
|
| 50 |
+ secuLoginFlag = 'Y' |
|
| 51 |
+ } |
|
| 52 |
+ else{
|
|
| 53 |
+ secuLoginFlag = 'N' |
|
| 54 |
+ } |
|
| 55 |
+ |
|
| 56 |
+ |
|
| 57 |
+ // 디버깅용 출력 |
|
| 58 |
+ console.log(secuLoginFlag); |
|
| 59 |
+ |
|
| 60 |
+ // 동적으로 form 생성 |
|
| 61 |
+ var form = $('<form>', {
|
|
| 62 |
+ action: '/web/user/mberSecureLogin.do', // 전송할 URL |
|
| 63 |
+ method: 'POST' // POST 방식 설정 |
|
| 64 |
+ }); |
|
| 65 |
+ |
|
| 66 |
+ // form에 hidden input 추가 |
|
| 67 |
+ form.append($('<input>', {
|
|
| 68 |
+ type: 'hidden', |
|
| 69 |
+ name: 'secuLoginFlag', // 서버에서 받을 파라미터 이름 |
|
| 70 |
+ value: secuLoginFlag // 전달할 값 |
|
| 71 |
+ })); |
|
| 72 |
+ |
|
| 73 |
+ // form을 body에 추가 후 제출 |
|
| 74 |
+ $('body').append(form);
|
|
| 75 |
+ form.submit(); |
|
| 76 |
+ |
|
| 77 |
+ |
|
| 78 |
+ }); |
|
| 79 |
+ |
|
| 44 | 80 |
//세션에서 종료시간을 받아와서 타이머 실행함 |
| 45 | 81 |
/* var timer = '${timer}';
|
| 46 | 82 |
if(timer != ""){
|
... | ... | @@ -109,6 +145,14 @@ |
| 109 | 145 |
|
| 110 | 146 |
//등급제 시행 ON/OFF 체크(비로그인) |
| 111 | 147 |
//getMberSettingDetailByNotLogin_Header(); |
| 148 |
+ |
|
| 149 |
+ var secuLoginFlag = '${mberManageVO.secuLoginFlag}';
|
|
| 150 |
+ |
|
| 151 |
+ if (secuLoginFlag === 'Y') {
|
|
| 152 |
+ $('#secuLoginFlag').attr('class', 'state on').text('ON');
|
|
| 153 |
+ } else if (secuLoginFlag === 'N') {
|
|
| 154 |
+ $('#secuLoginFlag').attr('class', 'state off').text('OFF');
|
|
| 155 |
+ } |
|
| 112 | 156 |
}); |
| 113 | 157 |
|
| 114 | 158 |
//등급제 시행 ON/OFF 체크(비로그인) |
... | ... | @@ -816,6 +860,8 @@ |
| 816 | 860 |
window.open(target, 'infoPop', 'width=1110, height=700, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=1'); |
| 817 | 861 |
} |
| 818 | 862 |
</script> |
| 863 |
+ |
|
| 864 |
+ |
|
| 819 | 865 |
<div class="mask"></div> |
| 820 | 866 |
<c:if test="${inspYn == 'Y'}">
|
| 821 | 867 |
<style> |
... | ... | @@ -1645,6 +1691,11 @@ |
| 1645 | 1691 |
</div> |
| 1646 | 1692 |
<button type="button" class="btnType btnType3" onclick="location.href='/web/user/mberInfoIndex.do'">마이페이지</button> |
| 1647 | 1693 |
<button type="button" class="btnType btnType2" onclick="location.href='/web/uat/uia/actionLogout.do'">로그아웃</button> |
| 1694 |
+ <div class="security_box"> |
|
| 1695 |
+ <a href="<c:out value="/web/user/mberSecureLogin.do"/>"><p class="title"><i class="icon_lock"></i>보안로그인</p></a> |
|
| 1696 |
+ <a href="#" id="secuLoginFlag" class="state"> </a> |
|
| 1697 |
+ <!-- <a href="#" class="state off">OFF</a> --> |
|
| 1698 |
+ </div> |
|
| 1648 | 1699 |
</div> |
| 1649 | 1700 |
<div class="login_pay"> |
| 1650 | 1701 |
<div class="check_money"> |
--- src/main/webapp/WEB-INF/jsp/web/login/EgovLoginGnrlUsr.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/EgovLoginGnrlUsr.jsp
... | ... | @@ -138,6 +138,7 @@ |
| 138 | 138 |
} |
| 139 | 139 |
|
| 140 | 140 |
function actionLogin(){
|
| 141 |
+ console.log('actionLogin : actionLogin')
|
|
| 141 | 142 |
|
| 142 | 143 |
setTimeout(function() {
|
| 143 | 144 |
if (isKoreaIpAddress == false) {
|
... | ... | @@ -180,28 +181,39 @@ |
| 180 | 181 |
//alert(data.data.moblphonNo); |
| 181 | 182 |
console.log('===========');
|
| 182 | 183 |
console.log(data.mberCertPhoneList); |
| 184 |
+ console.log(data.passFlag); |
|
| 183 | 185 |
|
| 184 | 186 |
if (data.status=="success"){
|
| 185 |
- //번호인증팝업 띄우기 |
|
| 186 |
- $("#input_list_item_1").hide();
|
|
| 187 |
- $("#input_list_item_2").hide();
|
|
| 188 |
- $("#input_list_item_3").hide();
|
|
| 189 |
- $("#input_list_item_0").hide();
|
|
| 190 |
- |
|
| 191 |
- $("#input_list_item_4").show();
|
|
| 192 |
- $("#input_list_item_5").show();
|
|
| 193 |
- $("#input_list_item_6").show();
|
|
| 194 |
- |
|
| 195 |
-// $("#hp_text2").val(data.data.moblphonNo);
|
|
| 196 |
- var $select = $('#hp_text2');
|
|
| 197 |
- data.mberCertPhoneList.forEach(function(item) {
|
|
| 198 |
- $select.append($('<option>', {
|
|
| 199 |
- value: item.mbtlnum, // option의 value 값 |
|
| 200 |
- text: item.mbtlnum+'('+item.certAlias+')' // option의 화면에 보이는 텍스트
|
|
| 201 |
- })); |
|
| 202 |
- }); |
|
| 203 |
- |
|
| 204 |
- |
|
| 187 |
+ |
|
| 188 |
+ if(data.passFlag == "Y") |
|
| 189 |
+ {
|
|
| 190 |
+ document.loginForm2.passFlag.value = passFlag; |
|
| 191 |
+ actionLogin_end(); |
|
| 192 |
+ } |
|
| 193 |
+ else |
|
| 194 |
+ {
|
|
| 195 |
+ |
|
| 196 |
+ //번호인증팝업 띄우기 |
|
| 197 |
+ $("#input_list_item_1").hide();
|
|
| 198 |
+ $("#input_list_item_2").hide();
|
|
| 199 |
+ $("#input_list_item_3").hide();
|
|
| 200 |
+ $("#input_list_item_0").hide();
|
|
| 201 |
+ |
|
| 202 |
+ $("#input_list_item_4").show();
|
|
| 203 |
+ $("#input_list_item_5").show();
|
|
| 204 |
+ $("#input_list_item_6").show();
|
|
| 205 |
+ |
|
| 206 |
+ // $("#hp_text2").val(data.data.moblphonNo);
|
|
| 207 |
+ var $select = $('#hp_text2');
|
|
| 208 |
+ data.mberCertPhoneList.forEach(function(item) {
|
|
| 209 |
+ $select.append($('<option>', {
|
|
| 210 |
+ value: item.mbtlnum, // option의 value 값 |
|
| 211 |
+ text: item.mbtlnum+'('+item.certAlias+')' // option의 화면에 보이는 텍스트
|
|
| 212 |
+ })); |
|
| 213 |
+ }); |
|
| 214 |
+ |
|
| 215 |
+ } |
|
| 216 |
+ |
|
| 205 | 217 |
}else if (data.status=="fail"){
|
| 206 | 218 |
|
| 207 | 219 |
if (data.dormantYn=="Y"){
|
... | ... | @@ -526,6 +538,7 @@ |
| 526 | 538 |
<input type="hidden" name="goEventPay" value="${goEventPay}"/>
|
| 527 | 539 |
<input type="hidden" id="hp" name="hp"> |
| 528 | 540 |
<input type="hidden" id="num" name="num"> |
| 541 |
+ <input type="hidden" id="passFlag" name="passFlag"> |
|
| 529 | 542 |
|
| 530 | 543 |
<div class="send_top"> |
| 531 | 544 |
<div class="mypage_content current"> |
--- src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp
+++ src/main/webapp/WEB-INF/jsp/web/user/mberSecureLogin.jsp
... | ... | @@ -9,25 +9,81 @@ |
| 9 | 9 |
|
| 10 | 10 |
//보안 로그인 |
| 11 | 11 |
$(document).ready(function(){
|
| 12 |
- |
|
| 12 |
+ |
|
| 13 | 13 |
// 허용 IP 등록 |
| 14 | 14 |
$(".btn_allow_ip_add").click(function () {
|
| 15 |
- if (confirm("현재 접속중인 IP를 접속 허용 IP로 등록하시겠습니까?")) {
|
|
| 16 |
- alert("접속 허용 IP 등록이 완료되었습니다.");
|
|
| 15 |
+ |
|
| 16 |
+ var ip = $('#cennectIp').val();
|
|
| 17 |
+ |
|
| 18 |
+ if (confirm("현재 접속중인 IP["+ip+"]를 접속 허용 IP로 등록하시겠습니까?")) {
|
|
| 19 |
+ |
|
| 20 |
+ $.ajax({
|
|
| 21 |
+ type: "POST", |
|
| 22 |
+ url: "/cert/ip/insertCennetCertIp.do", |
|
| 23 |
+ data: null, |
|
| 24 |
+ dataType:'json', |
|
| 25 |
+ async: false, |
|
| 26 |
+ success: function (returnData) {
|
|
| 27 |
+ |
|
| 28 |
+ if(returnData.status == 'OK'){
|
|
| 29 |
+ alert("접속 허용 IP["+ip+"] 등록이 완료되었습니다.");
|
|
| 30 |
+ location.reload(); |
|
| 31 |
+ } |
|
| 32 |
+ else |
|
| 33 |
+ {
|
|
| 34 |
+ alert("오류가 발생하였습니다.");
|
|
| 35 |
+ } |
|
| 36 |
+ }, |
|
| 37 |
+ error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
|
| 38 |
+ }); |
|
| 39 |
+ |
|
| 17 | 40 |
} else {}
|
| 18 | 41 |
}); |
| 19 | 42 |
|
| 43 |
+ |
|
| 44 |
+ // secuLoginFlag 값에 따라 해당하는 탭에 'on' 클래스 추가 |
|
| 45 |
+ if ('${mberManageVO.secuLoginFlag}' === 'Y') {
|
|
| 46 |
+ $('.security_tab a').filter(function() {
|
|
| 47 |
+ return $(this).text() === 'ON'; |
|
| 48 |
+ }).addClass('on');
|
|
| 49 |
+ } else {
|
|
| 50 |
+ $('.security_tab a').filter(function() {
|
|
| 51 |
+ return $(this).text() === 'OFF'; |
|
| 52 |
+ }).addClass('on');
|
|
| 53 |
+ } |
|
| 20 | 54 |
// on/off 시 confirm 창 노출 |
| 21 |
- $('.security_set .tab_depth1 a').click(function () {
|
|
| 22 |
- if ($(this).text().trim() == "ON") {
|
|
| 23 |
- if(!confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다")){
|
|
| 24 |
- console.log('???');
|
|
| 25 |
- return false; |
|
| 55 |
+ $('.security_tab a').click(function (e) {
|
|
| 56 |
+ |
|
| 57 |
+ if ($(this).hasClass("on") == false) {
|
|
| 58 |
+ if ($(this).text().trim() == "ON") {
|
|
| 59 |
+// if (!confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다")) {
|
|
| 60 |
+ if (!confirm("보안로그인 설정 시 미리 등록한 IP로 접속하거나 휴대폰 SMS 추가 인증을 진행하셔야 합니다.")) {
|
|
| 61 |
+ $(this).removeClass("on");
|
|
| 62 |
+ $(this).siblings("a").addClass("on");
|
|
| 63 |
+ } else {
|
|
| 64 |
+ callTo(); |
|
| 65 |
+ $(this).addClass("on");
|
|
| 66 |
+ $(this).siblings("a").removeClass("on");
|
|
| 67 |
+ } |
|
| 68 |
+ } else {
|
|
| 69 |
+// if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.")) {
|
|
| 70 |
+ if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능합니다. 해제 시 계정정보 유출에 따른 피해가 발생할 수 있으므로 이를 권장하지 않습니다.")) {
|
|
| 71 |
+ $(this).removeClass("on");
|
|
| 72 |
+ $(this).siblings("a").addClass("on");
|
|
| 73 |
+ } else {
|
|
| 74 |
+// $(this).addClass("on");
|
|
| 75 |
+// $(this).siblings("a").removeClass("on");
|
|
| 76 |
+ openKMCISWindow(); |
|
| 77 |
+ } |
|
| 26 | 78 |
} |
| 27 |
- } else {
|
|
| 28 |
- confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.");
|
|
| 29 |
- openKMCISWindow(); |
|
| 30 | 79 |
} |
| 80 |
+ |
|
| 81 |
+ |
|
| 82 |
+ |
|
| 83 |
+ |
|
| 84 |
+ |
|
| 85 |
+ |
|
| 86 |
+ |
|
| 31 | 87 |
}); |
| 32 | 88 |
|
| 33 | 89 |
// 인증번호 발송 버튼 |
... | ... | @@ -220,6 +276,19 @@ |
| 220 | 276 |
|
| 221 | 277 |
findAllCertIp(); |
| 222 | 278 |
findAllCertPhone(); |
| 279 |
+ |
|
| 280 |
+ |
|
| 281 |
+ console.log('${mberCertLoginLogVO.secuLoginFlag}');
|
|
| 282 |
+ var secuLoginFlag = '${mberCertLoginLogVO.secuLoginFlag}';
|
|
| 283 |
+ if(secuLoginFlag == 'Y'){
|
|
| 284 |
+ console.log('????????Y')
|
|
| 285 |
+ $('#secuOffBtn').click();
|
|
| 286 |
+ }else if(secuLoginFlag == 'N'){
|
|
| 287 |
+ console.log('????????N')
|
|
| 288 |
+ $('#secuOnBtn').click();
|
|
| 289 |
+ |
|
| 290 |
+ } |
|
| 291 |
+ |
|
| 223 | 292 |
}); |
| 224 | 293 |
|
| 225 | 294 |
function fn_phoneSave(obj){
|
... | ... | @@ -274,6 +343,7 @@ |
| 274 | 343 |
dataType:'json', |
| 275 | 344 |
async: false, |
| 276 | 345 |
success: function (returnData) {
|
| 346 |
+ console.log('returnData : ', returnData);
|
|
| 277 | 347 |
if(returnData.status == 'OK'){
|
| 278 | 348 |
$('.tooltip-close').click()
|
| 279 | 349 |
alert(returnData.message); |
... | ... | @@ -440,7 +510,11 @@ |
| 440 | 510 |
//IP 삭제 |
| 441 | 511 |
function deleteRow(p_ip){
|
| 442 | 512 |
|
| 513 |
+ |
|
| 514 |
+ var myIp = $('#cennectIp').val();
|
|
| 443 | 515 |
console.log('p_ip : ', p_ip);
|
| 516 |
+ |
|
| 517 |
+ |
|
| 444 | 518 |
var params = {
|
| 445 | 519 |
"certIp" : p_ip |
| 446 | 520 |
} |
... | ... | @@ -455,6 +529,11 @@ |
| 455 | 529 |
async: false, |
| 456 | 530 |
success: function (returnData) {
|
| 457 | 531 |
if(returnData.status == 'OK'){
|
| 532 |
+ if(myIp == p_ip){
|
|
| 533 |
+ location.reload(); |
|
| 534 |
+ |
|
| 535 |
+ } |
|
| 536 |
+ |
|
| 458 | 537 |
findAllCertIp(); |
| 459 | 538 |
} |
| 460 | 539 |
else |
... | ... | @@ -499,13 +578,46 @@ |
| 499 | 578 |
|
| 500 | 579 |
//자식창에서 호출 |
| 501 | 580 |
function callTo() {
|
| 502 |
- alert("호출입니다.");
|
|
| 581 |
+ $.ajax({
|
|
| 582 |
+ url: '/web/user/mberSecureLoginAjax.do', |
|
| 583 |
+ type: 'POST', |
|
| 584 |
+ contentType: 'application/json', |
|
| 585 |
+ data: JSON.stringify({
|
|
| 586 |
+ secuLoginFlag: '${mberManageVO.secuLoginFlag}'
|
|
| 587 |
+ }), |
|
| 588 |
+ success: function(response) {
|
|
| 589 |
+ if(response === 'success'){
|
|
| 590 |
+ alert('변경이 완료되었습니다.');
|
|
| 591 |
+ location.reload(); |
|
| 592 |
+ }else{
|
|
| 593 |
+ alert('변경에 실패했습니다. 다시 시도해 주세요.');
|
|
| 594 |
+ location.reload(); |
|
| 595 |
+ } |
|
| 596 |
+ |
|
| 597 |
+ }, |
|
| 598 |
+ error: function(error) {
|
|
| 599 |
+ alert("error");
|
|
| 600 |
+ } |
|
| 601 |
+ }); |
|
| 602 |
+} |
|
| 603 |
+ |
|
| 604 |
+function linkPage(pageNo){
|
|
| 605 |
+ var listForm = document.listForm ; |
|
| 606 |
+ listForm.pageIndex.value = pageNo ; |
|
| 607 |
+ listForm.submit(); |
|
| 503 | 608 |
} |
| 504 | 609 |
|
| 505 | 610 |
//휴대푠 번호 등록 [끝]-------------------------------------------------------------------------------------------- |
| 506 | 611 |
|
| 507 | 612 |
</script> |
| 508 |
- |
|
| 613 |
+<form name="reqKMCISForm" method="post" action="#"> |
|
| 614 |
+ <input type="hidden" id="tr_url" name="tr_url" value = "${certVO.tr_url}">
|
|
| 615 |
+ <input type="hidden" id="tr_add" name="tr_add" value = "${certVO.tr_add}">
|
|
| 616 |
+ <input type="hidden" id="tr_cert" name="tr_cert" value = "${certVO.tr_cert}">
|
|
| 617 |
+</form> |
|
| 618 |
+<form name="listForm" action="<c:url value='/web/user/mberSecureLogin.do'/>" method="post"> |
|
| 619 |
+ <input name="pageIndex" type="hidden" value="<c:out value='${mberCertLoginLogVO.pageIndex}'/>"/>
|
|
| 620 |
+</form> |
|
| 509 | 621 |
<div class="mask"></div> |
| 510 | 622 |
|
| 511 | 623 |
<!-- 휴대폰인증 팝업 --> |
... | ... | @@ -538,7 +650,7 @@ |
| 538 | 650 |
<th>인증번호</th> |
| 539 | 651 |
<td> |
| 540 | 652 |
<label for="" class="label">인증번호 입력</label> |
| 541 |
- <input type="text" placeholder="인증번호 4자리 입력" id="certNumber" onfocus="this.placeholder=''" onblur="this.placeholder='인증번호 4자리 입력'" class="inputLight" style="width: 200px;"> |
|
| 653 |
+ <input type="text" placeholder="인증번호 6자리 입력" id="certNumber" onfocus="this.placeholder=''" onblur="this.placeholder='인증번호 6자리 입력'" class="inputLight" style="width: 200px;"> |
|
| 542 | 654 |
<button type="button" id="certConfirmBtn" class="btnType btnType6" style="width:90px">확인</button> |
| 543 | 655 |
</td> |
| 544 | 656 |
</tr> |
... | ... | @@ -581,18 +693,21 @@ |
| 581 | 693 |
<div class="title_wrap"> |
| 582 | 694 |
<p class="dashboard_title">보안로그인</p> |
| 583 | 695 |
<div class="title_box ip_add_wrap"> |
| 584 |
- <span>현재 접속중인 IP : <b>000.000.000.00</b></span> |
|
| 585 |
- <button type="button" class="btnType btnType6 btn_allow_ip_add">허용 IP 등록</button> |
|
| 696 |
+ <span>현재 접속중인 IP : <b><c:out value="${cennectIP }"/> <c:if test="${chkcertRegIP }"> [허용 IP] </c:if> </b></span>
|
|
| 697 |
+ <input type="hidden" id="cennectIp" value="<c:out value="${cennectIP }"/>"/>
|
|
| 698 |
+ <c:if test="${!chkcertRegIP }">
|
|
| 699 |
+ <button type="button" class="btnType btnType6 btn_allow_ip_add">허용 IP 등록</button> |
|
| 700 |
+ </c:if> |
|
| 586 | 701 |
</div> |
| 587 | 702 |
</div> |
| 588 | 703 |
|
| 589 | 704 |
<div class="set_area"> |
| 590 | 705 |
<p class="lately_date">최근 변경일시 : <span>2024-11-01 12:49</span></p> |
| 591 | 706 |
|
| 592 |
- <div class="tab_depth1"> |
|
| 593 |
-<!-- <a href="#none" class="on">ON</a> --> |
|
| 594 |
- <a href="#none" class="on">ON</a> |
|
| 595 |
- <a href="#none">OFF</a> |
|
| 707 |
+ <input type="hidden" id="secuLoginFlag" value="${secuLoginFlag}" />
|
|
| 708 |
+ <div class="tab_depth1 security_tab"> |
|
| 709 |
+ <a href="#none" id="secuOnBtn">ON</a> |
|
| 710 |
+ <a href="#none" id="secuOffBtn">OFF</a> |
|
| 596 | 711 |
</div> |
| 597 | 712 |
</div> |
| 598 | 713 |
</div> |
... | ... | @@ -728,62 +843,19 @@ |
| 728 | 843 |
</tr> |
| 729 | 844 |
</thead> |
| 730 | 845 |
<tbody> |
| 846 |
+ <c:forEach var="result" items="${resultList}" varStatus="status">
|
|
| 731 | 847 |
<tr> |
| 732 |
- <td>2024-11-20 13:57:12</td> |
|
| 733 |
- <td>119.193.215.98</td> |
|
| 734 |
- <td>PC</td> |
|
| 848 |
+ <td><c:out value="${result.loginDt}"/></td>
|
|
| 849 |
+ <td><c:out value="${result.loginIp}"/></td>
|
|
| 850 |
+ <td><c:out value="${result.loginDevice}"/></td>
|
|
| 735 | 851 |
</tr> |
| 736 |
- <tr> |
|
| 737 |
- <td>2024-11-20 13:57:12</td> |
|
| 738 |
- <td>119.193.215.98</td> |
|
| 739 |
- <td>모바일</td> |
|
| 740 |
- </tr> |
|
| 741 |
- <tr> |
|
| 742 |
- <td>2024-11-20 13:57:12</td> |
|
| 743 |
- <td>119.193.215.98</td> |
|
| 744 |
- <td>PC</td> |
|
| 745 |
- </tr> |
|
| 746 |
- <tr> |
|
| 747 |
- <td>2024-11-20 13:57:12</td> |
|
| 748 |
- <td>119.193.215.98</td> |
|
| 749 |
- <td>모바일</td> |
|
| 750 |
- </tr> |
|
| 751 |
- <tr> |
|
| 752 |
- <td>2024-11-20 13:57:12</td> |
|
| 753 |
- <td>119.193.215.98</td> |
|
| 754 |
- <td>PC</td> |
|
| 755 |
- </tr> |
|
| 756 |
- <tr> |
|
| 757 |
- <td>2024-11-20 13:57:12</td> |
|
| 758 |
- <td>119.193.215.98</td> |
|
| 759 |
- <td>모바일</td> |
|
| 760 |
- </tr> |
|
| 761 |
- <tr> |
|
| 762 |
- <td>2024-11-20 13:57:12</td> |
|
| 763 |
- <td>119.193.215.98</td> |
|
| 764 |
- <td>PC</td> |
|
| 765 |
- </tr> |
|
| 766 |
- <tr> |
|
| 767 |
- <td>2024-11-20 13:57:12</td> |
|
| 768 |
- <td>119.193.215.98</td> |
|
| 769 |
- <td>모바일</td> |
|
| 770 |
- </tr> |
|
| 771 |
- <tr> |
|
| 772 |
- <td>2024-11-20 13:57:12</td> |
|
| 773 |
- <td>119.193.215.98</td> |
|
| 774 |
- <td>PC</td> |
|
| 775 |
- </tr> |
|
| 776 |
- <tr> |
|
| 777 |
- <td>2024-11-20 13:57:12</td> |
|
| 778 |
- <td>119.193.215.98</td> |
|
| 779 |
- <td>모바일</td> |
|
| 780 |
- </tr> |
|
| 852 |
+ </c:forEach> |
|
| 781 | 853 |
</tbody> |
| 782 | 854 |
</table> |
| 783 | 855 |
</div> |
| 784 | 856 |
<!-- //로그인 내역 --> |
| 785 | 857 |
<!-- pagination --> |
| 786 |
- <ul class="pagination"> |
|
| 858 |
+ <!-- <ul class="pagination"> |
|
| 787 | 859 |
<li class="page_first"><button><img src="/publish/images/content/page_first.png" alt=""></button></li> |
| 788 | 860 |
<li class="page_prev"><button><img src="/publish/images/content/page_prev.png" alt=""></button></li> |
| 789 | 861 |
<li class="on"><button>1</button></li> |
... | ... | @@ -798,8 +870,13 @@ |
| 798 | 870 |
<li><button>10</button></li> |
| 799 | 871 |
<li class="page_next"><button><img src="/publish/images/content/page_next.png" alt=""></button></li> |
| 800 | 872 |
<li class="page_last"><button><img src="/publish/images/content/page_last.png" alt=""></button></li> |
| 801 |
- </ul><!-- pagination --> |
|
| 802 |
- |
|
| 873 |
+ </ul>pagination |
|
| 874 |
+ --> |
|
| 875 |
+ <c:if test="${!empty resultList}">
|
|
| 876 |
+ <ul class="pagination"> |
|
| 877 |
+ <ui:pagination paginationInfo = "${paginationInfo}" type="imageWeb" jsFunction="linkPage" />
|
|
| 878 |
+ </ul> |
|
| 879 |
+ </c:if> |
|
| 803 | 880 |
</div> |
| 804 | 881 |
<!-- //보안로그인 --> |
| 805 | 882 |
</div> |
--- src/main/webapp/publish/mypage_index_2024.html
+++ src/main/webapp/publish/mypage_index_2024.html
... | ... | @@ -224,13 +224,14 @@ |
| 224 | 224 |
</div> |
| 225 | 225 |
<button type="button" class="btnType btnType3">마이페이지</button> |
| 226 | 226 |
<button type="button" class="btnType btnType2">로그아웃</button> |
| 227 |
+ |
|
| 227 | 228 |
<div class="security_box red_box"> |
| 228 | 229 |
<a href="#" class="title">보안로그인</a><!-- 보안로그인 클릭시 보안로그인 홈페이지로 --> |
| 229 |
- <span class="state off">OFF</span><!-- ON/OFF 클릭시 이벤트 발생 --> |
|
| 230 |
+ <a href="#" class="state off">OFF</a><!-- ON/OFF 클릭시 이벤트 발생 --> |
|
| 230 | 231 |
</div> |
| 231 | 232 |
<div class="security_box green_box"> |
| 232 | 233 |
<a href="#" class="title">보안로그인</a> |
| 233 |
- <span class="state on">ON</span> |
|
| 234 |
+ <a href="#" class="state on">ON</a> |
|
| 234 | 235 |
</div> |
| 235 | 236 |
</div> |
| 236 | 237 |
<div class="login_pay"> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?