Merge branch 'master' of
http://subsub8729@vcs.iten.co.kr:9999/hylee/mjon_git Conflicts: src/main/webapp/publish/mypage_index_2024.html
This commit is contained in:
commit
cf35c07140
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package itn.let.cert.ip.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
|
||||
public interface CertIpService {
|
||||
@ -22,6 +24,11 @@ public interface CertIpService {
|
||||
|
||||
public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO);
|
||||
|
||||
public Boolean checkCertIp(MberCertIpVO mberCertIpVO);
|
||||
|
||||
public Boolean checkRegCertIp(MberCertIpVO mberCertIpVO);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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<MberCertLoginLogVO> findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,76 @@
|
||||
package itn.let.cert.ip.service;
|
||||
|
||||
import itn.let.uss.umt.service.UserDefaultVO;
|
||||
/**
|
||||
*
|
||||
* @author : 이호영
|
||||
* @fileName : MberCertLoginLogVO.java
|
||||
* @date : 2024.11.21
|
||||
* @description : 로그인 이력관리 92동안만 관리하고 삭제
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* ----------------------------------------------------------- *
|
||||
* 2024.11.21 이호영 최초 생성
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class MberCertLoginLogVO extends UserDefaultVO{
|
||||
|
||||
|
||||
/**
|
||||
* @description :
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
private String certLoginId;
|
||||
private String loginId;
|
||||
private String loginIp;
|
||||
private String loginDevice;
|
||||
private String loginDt;
|
||||
|
||||
private String secuLoginFlag;
|
||||
|
||||
|
||||
public String getCertLoginId() {
|
||||
return certLoginId;
|
||||
}
|
||||
public void setCertLoginId(String certLoginId) {
|
||||
this.certLoginId = certLoginId;
|
||||
}
|
||||
public String getLoginId() {
|
||||
return loginId;
|
||||
}
|
||||
public void setLoginId(String loginId) {
|
||||
this.loginId = loginId;
|
||||
}
|
||||
public String getLoginIp() {
|
||||
return loginIp;
|
||||
}
|
||||
public void setLoginIp(String loginIp) {
|
||||
this.loginIp = loginIp;
|
||||
}
|
||||
public String getLoginDevice() {
|
||||
return loginDevice;
|
||||
}
|
||||
public void setLoginDevice(String loginDevice) {
|
||||
this.loginDevice = loginDevice;
|
||||
}
|
||||
public String getLoginDt() {
|
||||
return loginDt;
|
||||
}
|
||||
public void setLoginDt(String loginDt) {
|
||||
this.loginDt = loginDt;
|
||||
}
|
||||
public String getSecuLoginFlag() {
|
||||
return secuLoginFlag;
|
||||
}
|
||||
public void setSecuLoginFlag(String secuLoginFlag) {
|
||||
this.secuLoginFlag = secuLoginFlag;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -27,5 +27,13 @@ public class CertIpDAO extends EgovAbstractDAO {
|
||||
public MberCertIpVO findByMberCertIpList(MberCertIpVO mberCertIpVO) {
|
||||
return (MberCertIpVO) select("MberCertIpVO.findByMberCertIpList", mberCertIpVO);
|
||||
}
|
||||
|
||||
public List<MberCertIpVO> checkCertIp(MberCertIpVO mberCertIpVO) {
|
||||
return (List<MberCertIpVO>) list("MberCertIpVO.checkCertIp", mberCertIpVO);
|
||||
}
|
||||
|
||||
public List<MberCertIpVO> checkRegCertIp(MberCertIpVO mberCertIpVO) {
|
||||
return (List<MberCertIpVO>) list("MberCertIpVO.checkRegCertIp", mberCertIpVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -21,8 +21,8 @@ public class CertIpServiceImpl extends EgovAbstractServiceImpl implements CertIp
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO) {
|
||||
List<MberCertIpVO> mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertPhoneVO);
|
||||
public StatusResponse selectMberCertIpList(MberCertIpVO mberCertIpVO) {
|
||||
List<MberCertIpVO> mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertIpVO);
|
||||
return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now());
|
||||
}
|
||||
|
||||
@ -43,5 +43,26 @@ public class CertIpServiceImpl extends EgovAbstractServiceImpl implements CertIp
|
||||
certIpDAO.deleteCertIp(mberCertIpVO);
|
||||
return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Boolean checkCertIp(MberCertIpVO mberCertIpVO) {
|
||||
List<MberCertIpVO> mberCertIpListVO = certIpDAO.checkCertIp(mberCertIpVO);
|
||||
if(mberCertIpListVO.size()>0) {
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean checkRegCertIp(MberCertIpVO mberCertIpVO) {
|
||||
List<MberCertIpVO> mberCertIpListVO = certIpDAO.checkRegCertIp(mberCertIpVO);
|
||||
if(mberCertIpListVO.size()>0) {
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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<MberCertIpVO> selectMberCertIpList(MberCertIpVO mberCertIpVO) {
|
||||
return (List<MberCertIpVO>) 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<MberCertLoginLogVO> findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO) {
|
||||
return (List<MberCertLoginLogVO>) list("MberCertLoginLogVO.findAllCertLoginLogVO", mberCertLoginLogVO);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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<MberCertIpVO> 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<MberCertLoginLogVO> findAllCertLoginLogVO(MberCertLoginLogVO mberCertLoginLogVO) {
|
||||
// TODO Auto-generated method stub
|
||||
return certLoginLogDAO.findAllCertLoginLogVO(mberCertLoginLogVO);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -3,6 +3,7 @@ package itn.let.cert.ip.web;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@ -17,6 +18,7 @@ import itn.com.utl.fcc.service.EgovStringUtil;
|
||||
import itn.let.cert.ip.service.CertIpService;
|
||||
import itn.let.cert.ip.service.MberCertIpVO;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
import itn.let.utl.sim.service.EgovClntInfo;
|
||||
|
||||
/**
|
||||
*
|
||||
@ -79,6 +81,29 @@ public class CertIpController {
|
||||
return ResponseEntity.ok().body(certIpService.insertCertIp(mberCertIpVO));
|
||||
}
|
||||
|
||||
|
||||
@RequestMapping(value = {"/cert/ip/insertCennetCertIp.do"})
|
||||
public ResponseEntity<StatusResponse> 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<StatusResponse> deleteCertIp(MberCertIpVO mberCertIpVO) throws Exception {
|
||||
|
||||
|
||||
102
src/main/java/itn/let/cert/ip/web/CertLoginLogController.java
Normal file
102
src/main/java/itn/let/cert/ip/web/CertLoginLogController.java
Normal file
@ -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<StatusResponse> 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<StatusResponse> 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<StatusResponse> 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));
|
||||
}
|
||||
*/
|
||||
}
|
||||
@ -29,11 +29,22 @@ public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements Cer
|
||||
|
||||
@Override
|
||||
public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO, String moblphonNo) {
|
||||
MberCertPhoneVO mberCertPhoneListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO);
|
||||
if(mberCertPhoneListVO != null || mberCertPhoneListVO.getMbtlnum().equals(moblphonNo) ) {
|
||||
return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now());
|
||||
System.out.println("findByCertPhoneInfo : :::: ");
|
||||
try {
|
||||
|
||||
MberCertPhoneVO mberCertPhoneListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO);
|
||||
if(mberCertPhoneListVO != null) {
|
||||
if(mberCertPhoneListVO.getMbtlnum().equals(moblphonNo)) {
|
||||
return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now());
|
||||
}
|
||||
}
|
||||
|
||||
certPhoneDAO.insertCertPhone(mberCertPhoneVO);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace(); // TODO: handle exception
|
||||
return new StatusResponse(HttpStatus.OK, "오류가 발생하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
certPhoneDAO.insertCertPhone(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@ -91,6 +91,9 @@ public class CertPhoneController {
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
|
||||
System.out.println(" :: insertCertPhone :: ");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
@ -119,7 +122,9 @@ public class CertPhoneController {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setFrstRegisterId(userId);
|
||||
mberCertPhoneVO.setMberId(userId);
|
||||
if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) {
|
||||
mberCertPhoneVO.setMberId(userId);
|
||||
}
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(certPhoneService.updateMberCertPhone(mberCertPhoneVO));
|
||||
@ -139,8 +144,10 @@ public class CertPhoneController {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setLastUpdusrId(userId);
|
||||
mberCertPhoneVO.setMberId(userId);
|
||||
|
||||
|
||||
if(StringUtils.isEmpty(mberCertPhoneVO.getMberId()) ) {
|
||||
mberCertPhoneVO.setMberId(userId);
|
||||
}
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(certPhoneService.deleteCertPhone(mberCertPhoneVO));
|
||||
@ -153,6 +160,7 @@ public class CertPhoneController {
|
||||
@RequestMapping(value = {"/cert/phone/sendSysMsgDataAjax.do"})
|
||||
public ResponseEntity<StatusResponse> sendSysMsgDataAjax(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
@ -825,7 +825,7 @@ public class EgovMainController {
|
||||
try {
|
||||
//0번째 부터 6개의 항목만 조회
|
||||
MjonMsgVO mjonMsgVO = new MjonMsgVO();
|
||||
adminMemLoginThisMonth = mjonMsgService.selectMemLoginThisMonth(mjonMsgVO);
|
||||
//adminMemLoginThisMonth = mjonMsgService.selectMemLoginThisMonth(mjonMsgVO);
|
||||
}
|
||||
catch(Exception e) {
|
||||
isSuccess = false;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -83,6 +83,10 @@ import itn.com.cmm.util.StringUtil;
|
||||
import itn.com.cmm.util.WebUtil;
|
||||
import itn.com.uss.olh.hpc.service.HackIpService;
|
||||
import itn.com.uss.olh.hpc.service.HackIpVO;
|
||||
import itn.let.cert.ip.service.CertIpService;
|
||||
import itn.let.cert.ip.service.CertLoginLogService;
|
||||
import itn.let.cert.ip.service.MberCertIpVO;
|
||||
import itn.let.cert.ip.service.MberCertLoginLogVO;
|
||||
import itn.let.cert.phone.service.CertPhoneService;
|
||||
import itn.let.cert.phone.service.MberCertPhoneVO;
|
||||
import itn.let.cop.bbs.service.BoardVO;
|
||||
@ -242,6 +246,12 @@ public class EgovLoginController {
|
||||
@Resource(name = "CertPhoneService")
|
||||
private CertPhoneService certPhoneService;
|
||||
|
||||
@Resource(name = "CertLoginLogService")
|
||||
private CertLoginLogService certLoginLogService;
|
||||
|
||||
@Resource(name = "CertIpService")
|
||||
private CertIpService certIpService;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class);
|
||||
|
||||
/* 문자온 사용자 로그인 시작 */
|
||||
@ -1111,6 +1121,7 @@ public class EgovLoginController {
|
||||
|
||||
// 공인 IP 구하기
|
||||
String userIp = EgovClntInfo.getClntIP(request);
|
||||
System.out.println("userIp :: "+userIp);
|
||||
// java.util.Scanner s = new java.util.Scanner(new
|
||||
// java.net.URL("https://api.ipify.org").openStream(),
|
||||
// "UTF-8").useDelimiter("\\A");
|
||||
@ -2066,6 +2077,35 @@ public class EgovLoginController {
|
||||
modelAndView.addObject("data", resultVO);
|
||||
modelAndView.addObject("mberCertPhoneList", mberCertPhoneList);
|
||||
|
||||
|
||||
|
||||
|
||||
/* 일시 : 2024.11.21
|
||||
* 내용 : 패스 인증 조회
|
||||
* 작업자 : 이호영
|
||||
*/
|
||||
String userId = loginVO.getId();
|
||||
// lettngnrlmber TB에 secuLoginFlag 값이 Y면 인증 해야함
|
||||
String secuLoginFlag = mberManageService.getSecuLoginFlag(userId);
|
||||
|
||||
String passFlag = "Y";
|
||||
if("Y".equals(secuLoginFlag)) {
|
||||
// lettngnrlmber TB에 secuLoginFlag 값이 Y면
|
||||
// IP가 등록 되어 있는지 확인
|
||||
// 있으면 2차인증 안함
|
||||
// 없으면 2차인증 진행
|
||||
MberCertIpVO mberCertIpVO = new MberCertIpVO();
|
||||
mberCertIpVO.setCertIp(userIp);
|
||||
mberCertIpVO.setMberId(userId);
|
||||
// ip가 있으면 true
|
||||
if(!certIpService.checkCertIp(mberCertIpVO)) {
|
||||
passFlag = "N";
|
||||
}
|
||||
}
|
||||
modelAndView.addObject("passFlag", passFlag);
|
||||
|
||||
|
||||
|
||||
return modelAndView;
|
||||
|
||||
|
||||
@ -2461,14 +2501,24 @@ public class EgovLoginController {
|
||||
sendLogVO.setSendId(id);
|
||||
sendLogVO.setReceive(s_hp);
|
||||
sendLogVO.setCheckNo(s_num);
|
||||
|
||||
sendLogVO = mjonMsgDataService.selectSysMsgLogCheck(sendLogVO);
|
||||
|
||||
if (sendLogVO==null) {
|
||||
redirectAttributes.addFlashAttribute("fail2", true);
|
||||
return "redirect:/web/user/login/login.do";
|
||||
}
|
||||
String passFlag = request.getParameter("passFlag");
|
||||
System.out.println("passFlag : "+ passFlag);
|
||||
System.out.println("passFlag : "+ passFlag);
|
||||
System.out.println("passFlag : "+ passFlag);
|
||||
System.out.println("passFlag : "+ passFlag);
|
||||
System.out.println("passFlag : "+ passFlag);
|
||||
System.out.println("passFlag : "+ passFlag);
|
||||
if("Y".equals(passFlag)) {
|
||||
|
||||
sendLogVO = mjonMsgDataService.selectSysMsgLogCheck(sendLogVO);
|
||||
|
||||
if (sendLogVO==null) {
|
||||
redirectAttributes.addFlashAttribute("fail2", true);
|
||||
return "redirect:/web/user/login/login.do";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
String password = decryptRsa(privateKey, loginVO.getPassword());
|
||||
loginVO.setId(id);
|
||||
@ -2664,7 +2714,14 @@ public class EgovLoginController {
|
||||
loginVO.getIp();
|
||||
loginVO.setMessage("로그인 성공되었습니다.");
|
||||
loginVO.setLoginYn("Y");
|
||||
|
||||
loginService.insertActionLoginLog(loginVO);
|
||||
// 인증 로그인 이력을 위한 insert
|
||||
|
||||
MberCertLoginLogVO mberCertLoginLogVO = new MberCertLoginLogVO();
|
||||
mberCertLoginLogVO.setLoginId(loginVO.getId());
|
||||
mberCertLoginLogVO.setLoginIp(loginVO.getIp());
|
||||
certLoginLogService.insertCertLoginLog(mberCertLoginLogVO, request);
|
||||
}
|
||||
|
||||
// 등급제 Start
|
||||
|
||||
@ -16,9 +16,12 @@ import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@ -41,6 +44,10 @@ import itn.com.cmm.util.MJUtil;
|
||||
import itn.com.cmm.util.RedirectUrlMaker;
|
||||
import itn.com.cmm.util.StringUtil;
|
||||
import itn.com.utl.fcc.service.EgovStringUtil;
|
||||
import itn.let.cert.ip.service.CertIpService;
|
||||
import itn.let.cert.ip.service.CertLoginLogService;
|
||||
import itn.let.cert.ip.service.MberCertIpVO;
|
||||
import itn.let.cert.ip.service.MberCertLoginLogVO;
|
||||
import itn.let.fax.user.service.FaxGroupDataVO;
|
||||
import itn.let.fax.user.service.FaxService;
|
||||
import itn.let.kakao.user.sent.service.KakaoSentService;
|
||||
@ -70,6 +77,7 @@ import itn.let.uss.umt.service.EgovMberManageService;
|
||||
import itn.let.uss.umt.service.EgovUserManageService;
|
||||
import itn.let.uss.umt.service.MberManageVO;
|
||||
import itn.let.uss.umt.service.UserManageVO;
|
||||
import itn.let.utl.sim.service.EgovClntInfo;
|
||||
import itn.let.utl.user.service.MjonNoticeSendUtil;
|
||||
|
||||
/**
|
||||
@ -164,6 +172,14 @@ public class EgovMypageController {
|
||||
/** 등급제 관리 서비스 */
|
||||
@Resource(name = "mberGrdService")
|
||||
MberGrdService mberGrdService;
|
||||
|
||||
// /* CertLoginLogService */
|
||||
@Resource(name = "CertLoginLogService")
|
||||
private CertLoginLogService certLoginLogService;
|
||||
|
||||
// /* CertLoginLogService */
|
||||
@Resource(name = "CertIpService")
|
||||
private CertIpService certIpService;
|
||||
|
||||
/**
|
||||
* 마이페이지 비밀번호 변경 탭
|
||||
@ -2927,13 +2943,62 @@ public class EgovMypageController {
|
||||
* 회원탈퇴 본인인증 화면
|
||||
*/
|
||||
@RequestMapping(value="/web/user/mberSecureLogin.do")
|
||||
public String secureLogin(@ModelAttribute MberManageVO mberManageVO
|
||||
public String secureLogin(@ModelAttribute("mberCertLoginLogVO") MberCertLoginLogVO mberCertLoginLogVO
|
||||
, ModelMap model, HttpServletRequest request, RedirectAttributes redirectAttributes) throws Exception {
|
||||
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
if(loginVO == null) {
|
||||
return "redirect:/web/user/login/login.do";
|
||||
}
|
||||
|
||||
// secuLoginFlag 값을 Model에 추가
|
||||
model.addAttribute("secuLoginFlag", mberCertLoginLogVO.getSecuLoginFlag());
|
||||
System.out.println(mberCertLoginLogVO.getSecuLoginFlag());
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
|
||||
/** pageing */
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(mberCertLoginLogVO.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(mberCertLoginLogVO.getPageUnit());
|
||||
paginationInfo.setPageSize(mberCertLoginLogVO.getPageSize());
|
||||
|
||||
mberCertLoginLogVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||
mberCertLoginLogVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
mberCertLoginLogVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
if("".equals(mberCertLoginLogVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
|
||||
mberCertLoginLogVO.setSearchSortCnd("LOGIN_DT");
|
||||
mberCertLoginLogVO.setSearchSortOrd("desc");
|
||||
}
|
||||
|
||||
|
||||
mberCertLoginLogVO.setLoginId(userId);
|
||||
//전체 발송 리스트 불러오기
|
||||
List<MberCertLoginLogVO> resultList = certLoginLogService.findAllCertLoginLogVO(mberCertLoginLogVO);
|
||||
model.addAttribute("resultList", resultList);
|
||||
model.addAttribute("resultListCnt", resultList.size());
|
||||
|
||||
|
||||
paginationInfo.setTotalRecordCount( resultList.size()> 0 ? resultList.get(0).getTotCnt() : 0);
|
||||
model.addAttribute("paginationInfo", paginationInfo);
|
||||
|
||||
|
||||
|
||||
|
||||
// 접속 IP
|
||||
String cennectIP = EgovClntInfo.getClntIP(request);
|
||||
model.addAttribute("cennectIP", cennectIP);
|
||||
|
||||
// 접속 IP가 등록되어있는지 확인
|
||||
MberCertIpVO mberCertIpVO = new MberCertIpVO();
|
||||
mberCertIpVO.setCertIp(cennectIP);
|
||||
mberCertIpVO.setMberId(userId);
|
||||
model.addAttribute("chkcertRegIP", certIpService.checkRegCertIp(mberCertIpVO));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
@ -2951,11 +3016,20 @@ public class EgovMypageController {
|
||||
serverNm = request.getScheme() + "://www.munjaon.co.kr";
|
||||
}
|
||||
|
||||
System.out.println("@@@ serverNm : " + serverNm);
|
||||
AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId());
|
||||
model.addAttribute("certVO", certVO);
|
||||
}
|
||||
|
||||
MberManageVO mberManageVO = new MberManageVO();
|
||||
mberManageVO.setMberId(loginVO.getId());
|
||||
|
||||
model.addAttribute("mberManageVO", userManageService.selectUserInfo(mberManageVO));
|
||||
|
||||
model.addAttribute("pageTab", "mberSecureLogin");
|
||||
|
||||
|
||||
|
||||
model.addAttribute("pageTab", "mberSecureLogin");
|
||||
return "web/user/mberSecureLogin";
|
||||
}
|
||||
|
||||
@ -3773,14 +3847,47 @@ public class EgovMypageController {
|
||||
certVO.setCertNation(kmcVO.getNation());
|
||||
certVO.setCertName(kmcVO.getName());
|
||||
certVO.setCertResult(kmcVO.getResult());
|
||||
certVO.setCertType("KMC_회원정보 변경");
|
||||
certVO.setCertType("secureLoginOFF");
|
||||
certVO.setCertIpaddr(kmcVO.getIp());
|
||||
certVO.setBirthDay(kmcVO.getBirthDay());
|
||||
certVO.setSexdstnCode(kmcVO.getGender());
|
||||
|
||||
model.addAttribute("kmcVO", kmcVO);
|
||||
|
||||
//디비 테이블에 저장하기
|
||||
mberManageService.insertCertInfoLog(certVO);
|
||||
|
||||
|
||||
|
||||
|
||||
return "web/user/securityAuthnPage";
|
||||
}
|
||||
|
||||
@RequestMapping(value="/web/user/mberSecureLoginAjax.do")
|
||||
public ResponseEntity<?> mberSecureLoginAjax(MberManageVO mberManageVO, @RequestBody Map<String, String> 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -617,6 +617,8 @@ public class KmcCertChecker {
|
||||
String cpId = "MJOM1001"; // 회원사ID
|
||||
String urlCode = "001014"; // URL코드
|
||||
//kmc 본인인증 실/개발 서버 구분
|
||||
|
||||
System.out.println("@@@@@ trUrl : " + trUrl);
|
||||
if(trUrl.contains("192.168.0.60") || trUrl.contains("localhost")) {
|
||||
urlCode = "010001";
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -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";
|
||||
}
|
||||
|
||||
|
||||
@ -2849,5 +2849,24 @@
|
||||
<property name="cipers" value="13" />
|
||||
<property name="fillChar" value="0" />
|
||||
</bean>
|
||||
|
||||
|
||||
<!-- 문자온 로그인LOG ID Generation Strategy Config -->
|
||||
<bean name="egovMjonCertLoginLogIdGnrService"
|
||||
class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl"
|
||||
destroy-method="destroy">
|
||||
<property name="dataSource" ref="dataSource" />
|
||||
<property name="strategy" ref="mjonCertLoginLogIdStrategy" />
|
||||
<property name="blockSize" value="10"/>
|
||||
<property name="table" value="IDS"/>
|
||||
<property name="tableName" value="CERT_LOGIN_LOG_ID"/>
|
||||
</bean>
|
||||
<bean name="mjonCertLoginLogIdStrategy"
|
||||
class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl">
|
||||
<property name="prefix" value="CERTLOGINLOG_" />
|
||||
<property name="cipers" value="10" />
|
||||
<property name="fillChar" value="0" />
|
||||
</bean>
|
||||
|
||||
|
||||
</beans>
|
||||
|
||||
@ -127,21 +127,21 @@
|
||||
|
||||
<!-- 14 -->
|
||||
<!-- mj_msg_data 백업 -->
|
||||
<bean id="MjMsgDataBackupBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
|
||||
<!-- <bean id="MjMsgDataBackupBean" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
|
||||
<property name="targetObject" ref="tableBackupMsgScheduling" />
|
||||
<property name="targetMethod" value="mjMsgDataBackup" />
|
||||
<property name="concurrent" value="false" />
|
||||
</bean>
|
||||
</bean> -->
|
||||
|
||||
<bean id="MjMsgDataBackupBeanTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
|
||||
<property name="jobDetail" ref="MjMsgDataBackupBean" />
|
||||
<!-- <bean id="MjMsgDataBackupBeanTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> -->
|
||||
<!-- <property name="jobDetail" ref="MjMsgDataBackupBean" /> -->
|
||||
<!-- 매년 3,11월 22일 4시38분 마다 작년도 테이블 백업 -->
|
||||
<property name="cronExpression" value="0 38 4 22 11 ?" />
|
||||
<!-- <property name="cronExpression" value="0 38 4 22 11 ?" /> -->
|
||||
<!-- <property name="cronExpression" value="0 38 4 28 3 ?" /> -->
|
||||
<!-- 매일 4시18분 마다 작년도 테이블 백업 -->
|
||||
<!-- <property name="cronExpression" value="0 03 12 * * ?" /> -->
|
||||
<!-- <property name="cronExpression" value="8 * * * * ?" /> -->
|
||||
</bean>
|
||||
<!-- </bean> -->
|
||||
|
||||
|
||||
|
||||
@ -157,7 +157,7 @@
|
||||
<!-- <ref bean="SttstMsgRankDayBeanTrigger" /> --><!-- 문자전송순위통계집계(매일한번) -->
|
||||
|
||||
<!-- mj_msg_data 백업 -->
|
||||
<ref bean="MjMsgDataBackupBeanTrigger" />
|
||||
<!-- <ref bean="MjMsgDataBackupBeanTrigger" /> -->
|
||||
|
||||
</list>
|
||||
</property>
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
|
||||
<sqlMapConfig>
|
||||
<settings cacheModelsEnabled="true" useStatementNamespaces="true" />
|
||||
<sqlMap resource="egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml"/> <!-- 문자메세지 -->
|
||||
<sqlMap resource="egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml"/> <!-- 문자메세지 -->
|
||||
<sqlMap resource="egovframework/sqlmap/let/cert/MjonCertIp_SQL_mysql.xml"/> <!-- 로그인 허용 IP -->
|
||||
<sqlMap resource="egovframework/sqlmap/let/cert/MjonCertLoginLog_SQL_mysql.xml"/> <!-- 로그인 허용 IP를 위한 로그인Log -->
|
||||
<sqlMap resource="egovframework/sqlmap/let/cert/MjonCertPhone_SQL_mysql.xml"/> <!-- 로그인 인증 폰번호 -->
|
||||
</sqlMapConfig>
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
where
|
||||
MBER_ID = #mberId#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
order by FRST_REGIST_PNTTM desc
|
||||
order by FRST_REGIST_PNTTM asc
|
||||
</select>
|
||||
|
||||
<select id="MberCertIpVO.findByMberCertIpList" parameterClass="mberCertIpVO" resultClass="mberCertIpVO">
|
||||
@ -86,4 +86,33 @@
|
||||
|
||||
|
||||
|
||||
<select id="MberCertIpVO.checkCertIp" parameterClass="mberCertIpVO" resultClass="mberCertIpVO">
|
||||
/*MberCertIpVO.checkCertIp*/
|
||||
|
||||
select
|
||||
LOGIN_IP as certIp
|
||||
from lettngnrlmber_cert_login_log_ip
|
||||
where LOGIN_ID = #mberId#
|
||||
and LOGIN_IP = #certIp#
|
||||
union all
|
||||
select
|
||||
CERT_IP as certIp
|
||||
from lettngnrlmber_cert_ip
|
||||
where MBER_ID = #mberId#
|
||||
and CERT_IP = #certIp#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
</select>
|
||||
|
||||
|
||||
<select id="MberCertIpVO.checkRegCertIp" parameterClass="mberCertIpVO" resultClass="mberCertIpVO">
|
||||
/*MberCertIpVO.checkCennetIp*/
|
||||
|
||||
select
|
||||
CERT_IP as certIp
|
||||
from lettngnrlmber_cert_ip
|
||||
where MBER_ID = #mberId#
|
||||
and CERT_IP = #certIp#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
</select>
|
||||
|
||||
</sqlMap>
|
||||
@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><!--
|
||||
수정일 수정자 수정내용
|
||||
========= ======= =================================================
|
||||
2021.03.01 신명섭
|
||||
-->
|
||||
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
|
||||
<sqlMap namespace="MjonCertLoginLog">
|
||||
<typeAlias alias="mberCertLoginLogVO" type="itn.let.cert.ip.service.MberCertLoginLogVO"/>
|
||||
|
||||
|
||||
|
||||
|
||||
<select id="MberCertLoginLogVO.findAllCertLoginLogVO" resultClass="mberCertLoginLogVO" parameterClass="mberCertLoginLogVO">
|
||||
/*MberCertLoginLogVO.findAllCertLoginLogVO*/
|
||||
|
||||
|
||||
SELECT
|
||||
COUNT(CERT_LOGIN_ID) OVER() AS totCnt
|
||||
, CERT_LOGIN_ID as certLoginId
|
||||
, LOGIN_ID as loginId
|
||||
, LOGIN_IP as loginIp
|
||||
, CASE
|
||||
WHEN LOGIN_DEVICE = 'D' THEN 'PC'
|
||||
WHEN LOGIN_DEVICE IN ('M', 'T') THEN '모바일'
|
||||
ELSE 'PC'
|
||||
END AS loginDevice
|
||||
, DATE_FORMAT(LOGIN_DT,'%Y-%m-%d %T') as loginDt
|
||||
FROM LETTNGNRLMBER_CERT_LOGIN_LOG_IP
|
||||
WHERE 1=1
|
||||
and LOGIN_ID = #loginId#
|
||||
ORDER BY 1=1
|
||||
<isNotEmpty property="searchSortCnd">
|
||||
,$searchSortCnd$
|
||||
</isNotEmpty>
|
||||
<isNotEmpty property="searchSortOrd">
|
||||
$searchSortOrd$
|
||||
</isNotEmpty>
|
||||
|
||||
LIMIT #recordCountPerPage# OFFSET #firstIndex#
|
||||
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
<select id="MberCertLoginLogVO.checkLoginIpExists" resultClass="int" parameterClass="mberCertLoginLogVO">
|
||||
SELECT COUNT(1)
|
||||
FROM LETTNGNRLMBER_CERT_LOGIN_LOG_IP
|
||||
WHERE LOGIN_IP = #loginIp#
|
||||
AND LOGIN_ID = #loginId#
|
||||
</select>
|
||||
|
||||
<insert id="MberCertLoginLogVO.insertCertLoginLog" parameterClass="mberCertLoginLogVO">
|
||||
INSERT INTO LETTNGNRLMBER_CERT_LOGIN_LOG_IP
|
||||
(
|
||||
CERT_LOGIN_ID,
|
||||
LOGIN_ID,
|
||||
LOGIN_IP,
|
||||
LOGIN_DEVICE,
|
||||
LOGIN_DT
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#certLoginId#,
|
||||
#loginId#,
|
||||
#loginIp#,
|
||||
#loginDevice#,
|
||||
NOW()
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- LOGIN_IP가 존재할 경우 UPDATE -->
|
||||
<update id="MberCertLoginLogVO.updateCertLoginLog" parameterClass="mberCertLoginLogVO">
|
||||
UPDATE LETTNGNRLMBER_CERT_LOGIN_LOG_IP
|
||||
SET LOGIN_DT = NOW()
|
||||
WHERE LOGIN_IP = #loginIp#
|
||||
AND LOGIN_ID = #loginId#
|
||||
</update>
|
||||
|
||||
</sqlMap>
|
||||
@ -5972,6 +5972,7 @@
|
||||
|
||||
<!-- 당월 회원전환률 -->
|
||||
<select id="mjonMsgDAO.selectMemLoginThisMonth" parameterClass="mjonMsgVO" resultClass="mjonMsgVO">
|
||||
/* mjonMsgDAO.selectMemLoginThisMonth */
|
||||
SELECT
|
||||
M2.createDt
|
||||
,M2.visitCnt
|
||||
|
||||
@ -2106,4 +2106,21 @@
|
||||
WHERE CMPHST_ID = #cmpHstId#
|
||||
|
||||
</update>
|
||||
|
||||
<select id="mberManageDAO.getSecuLoginFlag" resultClass="String" parameterClass="String">
|
||||
|
||||
|
||||
select SECU_LOGIN_FLAG from lettngnrlmber where MBER_ID = #id#
|
||||
|
||||
</select>
|
||||
|
||||
<update id="mberManageDAO.updateSecureLoginFlag" parameterClass="mberVO">
|
||||
|
||||
UPDATE LETTNGNRLMBER SET
|
||||
SECU_LOGIN_FLAG = #secuLoginFlag#
|
||||
,LAST_UPDUSR_ID = #lastUpdusrId#
|
||||
WHERE MBER_ID = #mberId#
|
||||
|
||||
</update>
|
||||
|
||||
</sqlMap>
|
||||
|
||||
@ -1206,6 +1206,7 @@
|
||||
|
||||
, A.EMAIL_YN AS emailYN
|
||||
, A.SMS_YN AS smsYN
|
||||
, A.SECU_LOGIN_FLAG AS secuLoginFlag
|
||||
|
||||
FROM
|
||||
LETTNGNRLMBER A
|
||||
|
||||
@ -41,6 +41,42 @@
|
||||
<script>
|
||||
$(document).ready(function (){
|
||||
|
||||
|
||||
$(document).on('click', '#secuLoginFlag', function () {
|
||||
|
||||
var secuLoginFlag = "";
|
||||
console.log($(this).text());
|
||||
if($(this).text() == 'ON'){
|
||||
secuLoginFlag = 'Y'
|
||||
}
|
||||
else{
|
||||
secuLoginFlag = 'N'
|
||||
}
|
||||
|
||||
|
||||
// 디버깅용 출력
|
||||
console.log(secuLoginFlag);
|
||||
|
||||
// 동적으로 form 생성
|
||||
var form = $('<form>', {
|
||||
action: '/web/user/mberSecureLogin.do', // 전송할 URL
|
||||
method: 'POST' // POST 방식 설정
|
||||
});
|
||||
|
||||
// form에 hidden input 추가
|
||||
form.append($('<input>', {
|
||||
type: 'hidden',
|
||||
name: 'secuLoginFlag', // 서버에서 받을 파라미터 이름
|
||||
value: secuLoginFlag // 전달할 값
|
||||
}));
|
||||
|
||||
// form을 body에 추가 후 제출
|
||||
$('body').append(form);
|
||||
form.submit();
|
||||
|
||||
|
||||
});
|
||||
|
||||
//세션에서 종료시간을 받아와서 타이머 실행함
|
||||
/* var timer = '${timer}';
|
||||
if(timer != ""){
|
||||
@ -109,6 +145,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 체크(비로그인)
|
||||
@ -816,6 +860,8 @@ function actionLogin() {
|
||||
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');
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<div class="mask"></div>
|
||||
<c:if test="${inspYn == 'Y'}">
|
||||
<style>
|
||||
@ -1645,6 +1691,11 @@ function actionLogin() {
|
||||
</div>
|
||||
<button type="button" class="btnType btnType3" onclick="location.href='/web/user/mberInfoIndex.do'">마이페이지</button>
|
||||
<button type="button" class="btnType btnType2" onclick="location.href='/web/uat/uia/actionLogout.do'">로그아웃</button>
|
||||
<div class="security_box">
|
||||
<a href="<c:out value="/web/user/mberSecureLogin.do"/>"><p class="title"><i class="icon_lock"></i>보안로그인</p></a>
|
||||
<a href="#" id="secuLoginFlag" class="state"> </a>
|
||||
<!-- <a href="#" class="state off">OFF</a> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="login_pay">
|
||||
<div class="check_money">
|
||||
|
||||
@ -138,6 +138,7 @@ function whoisIpCountry() {
|
||||
}
|
||||
|
||||
function actionLogin(){
|
||||
console.log('actionLogin : actionLogin')
|
||||
|
||||
setTimeout(function() {
|
||||
if (isKoreaIpAddress == false) {
|
||||
@ -180,28 +181,39 @@ function actionLogin(){
|
||||
//alert(data.data.moblphonNo);
|
||||
console.log('===========');
|
||||
console.log(data.mberCertPhoneList);
|
||||
console.log(data.passFlag);
|
||||
|
||||
if (data.status=="success"){
|
||||
//번호인증팝업 띄우기
|
||||
$("#input_list_item_1").hide();
|
||||
$("#input_list_item_2").hide();
|
||||
$("#input_list_item_3").hide();
|
||||
$("#input_list_item_0").hide();
|
||||
|
||||
$("#input_list_item_4").show();
|
||||
$("#input_list_item_5").show();
|
||||
$("#input_list_item_6").show();
|
||||
|
||||
// $("#hp_text2").val(data.data.moblphonNo);
|
||||
var $select = $('#hp_text2');
|
||||
data.mberCertPhoneList.forEach(function(item) {
|
||||
$select.append($('<option>', {
|
||||
value: item.mbtlnum, // option의 value 값
|
||||
text: item.mbtlnum+'('+item.certAlias+')' // option의 화면에 보이는 텍스트
|
||||
}));
|
||||
});
|
||||
|
||||
|
||||
|
||||
if(data.passFlag == "Y")
|
||||
{
|
||||
document.loginForm2.passFlag.value = passFlag;
|
||||
actionLogin_end();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
//번호인증팝업 띄우기
|
||||
$("#input_list_item_1").hide();
|
||||
$("#input_list_item_2").hide();
|
||||
$("#input_list_item_3").hide();
|
||||
$("#input_list_item_0").hide();
|
||||
|
||||
$("#input_list_item_4").show();
|
||||
$("#input_list_item_5").show();
|
||||
$("#input_list_item_6").show();
|
||||
|
||||
// $("#hp_text2").val(data.data.moblphonNo);
|
||||
var $select = $('#hp_text2');
|
||||
data.mberCertPhoneList.forEach(function(item) {
|
||||
$select.append($('<option>', {
|
||||
value: item.mbtlnum, // option의 value 값
|
||||
text: item.mbtlnum+'('+item.certAlias+')' // option의 화면에 보이는 텍스트
|
||||
}));
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}else if (data.status=="fail"){
|
||||
|
||||
if (data.dormantYn=="Y"){
|
||||
@ -526,6 +538,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
|
||||
<input type="hidden" name="goEventPay" value="${goEventPay}"/>
|
||||
<input type="hidden" id="hp" name="hp">
|
||||
<input type="hidden" id="num" name="num">
|
||||
<input type="hidden" id="passFlag" name="passFlag">
|
||||
|
||||
<div class="send_top">
|
||||
<div class="mypage_content current">
|
||||
|
||||
@ -9,25 +9,81 @@
|
||||
|
||||
//보안 로그인
|
||||
$(document).ready(function(){
|
||||
|
||||
|
||||
// 허용 IP 등록
|
||||
$(".btn_allow_ip_add").click(function () {
|
||||
if (confirm("현재 접속중인 IP를 접속 허용 IP로 등록하시겠습니까?")) {
|
||||
alert("접속 허용 IP 등록이 완료되었습니다.");
|
||||
|
||||
var ip = $('#cennectIp').val();
|
||||
|
||||
if (confirm("현재 접속중인 IP["+ip+"]를 접속 허용 IP로 등록하시겠습니까?")) {
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/cert/ip/insertCennetCertIp.do",
|
||||
data: null,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (returnData) {
|
||||
|
||||
if(returnData.status == 'OK'){
|
||||
alert("접속 허용 IP["+ip+"] 등록이 완료되었습니다.");
|
||||
location.reload();
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("오류가 발생하였습니다.");
|
||||
}
|
||||
},
|
||||
error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
||||
});
|
||||
|
||||
} else {}
|
||||
});
|
||||
|
||||
|
||||
// secuLoginFlag 값에 따라 해당하는 탭에 'on' 클래스 추가
|
||||
if ('${mberManageVO.secuLoginFlag}' === 'Y') {
|
||||
$('.security_tab a').filter(function() {
|
||||
return $(this).text() === 'ON';
|
||||
}).addClass('on');
|
||||
} else {
|
||||
$('.security_tab a').filter(function() {
|
||||
return $(this).text() === 'OFF';
|
||||
}).addClass('on');
|
||||
}
|
||||
// on/off 시 confirm 창 노출
|
||||
$('.security_set .tab_depth1 a').click(function () {
|
||||
if ($(this).text().trim() == "ON") {
|
||||
if(!confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다")){
|
||||
console.log('???');
|
||||
return false;
|
||||
$('.security_tab a').click(function (e) {
|
||||
|
||||
if ($(this).hasClass("on") == false) {
|
||||
if ($(this).text().trim() == "ON") {
|
||||
// if (!confirm("보안로그인 설정 후 로그인 시, 등록한 휴대폰번호로 추가 인증이 진행됩니다")) {
|
||||
if (!confirm("보안로그인 설정 시 미리 등록한 IP로 접속하거나 휴대폰 SMS 추가 인증을 진행하셔야 합니다.")) {
|
||||
$(this).removeClass("on");
|
||||
$(this).siblings("a").addClass("on");
|
||||
} else {
|
||||
callTo();
|
||||
$(this).addClass("on");
|
||||
$(this).siblings("a").removeClass("on");
|
||||
}
|
||||
} else {
|
||||
// if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.")) {
|
||||
if (!confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능합니다. 해제 시 계정정보 유출에 따른 피해가 발생할 수 있으므로 이를 권장하지 않습니다.")) {
|
||||
$(this).removeClass("on");
|
||||
$(this).siblings("a").addClass("on");
|
||||
} else {
|
||||
// $(this).addClass("on");
|
||||
// $(this).siblings("a").removeClass("on");
|
||||
openKMCISWindow();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
confirm("가입자 휴대폰번호로 본인인증 후 해제가 가능하며, 보안로그인 설정을 해제함으로써 발생하는 손해에 대하여 회사는 책임지지 않습니다.");
|
||||
openKMCISWindow();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
// 인증번호 발송 버튼
|
||||
@ -220,6 +276,19 @@ $(document).ready(function(){
|
||||
|
||||
findAllCertIp();
|
||||
findAllCertPhone();
|
||||
|
||||
|
||||
console.log('${mberCertLoginLogVO.secuLoginFlag}');
|
||||
var secuLoginFlag = '${mberCertLoginLogVO.secuLoginFlag}';
|
||||
if(secuLoginFlag == 'Y'){
|
||||
console.log('????????Y')
|
||||
$('#secuOffBtn').click();
|
||||
}else if(secuLoginFlag == 'N'){
|
||||
console.log('????????N')
|
||||
$('#secuOnBtn').click();
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function fn_phoneSave(obj){
|
||||
@ -274,6 +343,7 @@ function regCertPhone(params){
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (returnData) {
|
||||
console.log('returnData : ', returnData);
|
||||
if(returnData.status == 'OK'){
|
||||
$('.tooltip-close').click()
|
||||
alert(returnData.message);
|
||||
@ -440,7 +510,11 @@ function fn_PDelRow(p_mbtlnum){
|
||||
//IP 삭제
|
||||
function deleteRow(p_ip){
|
||||
|
||||
|
||||
var myIp = $('#cennectIp').val();
|
||||
console.log('p_ip : ', p_ip);
|
||||
|
||||
|
||||
var params = {
|
||||
"certIp" : p_ip
|
||||
}
|
||||
@ -455,6 +529,11 @@ function deleteRow(p_ip){
|
||||
async: false,
|
||||
success: function (returnData) {
|
||||
if(returnData.status == 'OK'){
|
||||
if(myIp == p_ip){
|
||||
location.reload();
|
||||
|
||||
}
|
||||
|
||||
findAllCertIp();
|
||||
}
|
||||
else
|
||||
@ -499,13 +578,46 @@ function openKMCISWindow(){
|
||||
|
||||
//자식창에서 호출
|
||||
function callTo() {
|
||||
alert("호출입니다.");
|
||||
$.ajax({
|
||||
url: '/web/user/mberSecureLoginAjax.do',
|
||||
type: 'POST',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify({
|
||||
secuLoginFlag: '${mberManageVO.secuLoginFlag}'
|
||||
}),
|
||||
success: function(response) {
|
||||
if(response === 'success'){
|
||||
alert('변경이 완료되었습니다.');
|
||||
location.reload();
|
||||
}else{
|
||||
alert('변경에 실패했습니다. 다시 시도해 주세요.');
|
||||
location.reload();
|
||||
}
|
||||
|
||||
},
|
||||
error: function(error) {
|
||||
alert("error");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function linkPage(pageNo){
|
||||
var listForm = document.listForm ;
|
||||
listForm.pageIndex.value = pageNo ;
|
||||
listForm.submit();
|
||||
}
|
||||
|
||||
//휴대푠 번호 등록 [끝]--------------------------------------------------------------------------------------------
|
||||
|
||||
</script>
|
||||
|
||||
<form name="reqKMCISForm" method="post" action="#">
|
||||
<input type="hidden" id="tr_url" name="tr_url" value = "${certVO.tr_url}">
|
||||
<input type="hidden" id="tr_add" name="tr_add" value = "${certVO.tr_add}">
|
||||
<input type="hidden" id="tr_cert" name="tr_cert" value = "${certVO.tr_cert}">
|
||||
</form>
|
||||
<form name="listForm" action="<c:url value='/web/user/mberSecureLogin.do'/>" method="post">
|
||||
<input name="pageIndex" type="hidden" value="<c:out value='${mberCertLoginLogVO.pageIndex}'/>"/>
|
||||
</form>
|
||||
<div class="mask"></div>
|
||||
|
||||
<!-- 휴대폰인증 팝업 -->
|
||||
@ -538,7 +650,7 @@ function callTo() {
|
||||
<th>인증번호</th>
|
||||
<td>
|
||||
<label for="" class="label">인증번호 입력</label>
|
||||
<input type="text" placeholder="인증번호 4자리 입력" id="certNumber" onfocus="this.placeholder=''" onblur="this.placeholder='인증번호 4자리 입력'" class="inputLight" style="width: 200px;">
|
||||
<input type="text" placeholder="인증번호 6자리 입력" id="certNumber" onfocus="this.placeholder=''" onblur="this.placeholder='인증번호 6자리 입력'" class="inputLight" style="width: 200px;">
|
||||
<button type="button" id="certConfirmBtn" class="btnType btnType6" style="width:90px">확인</button>
|
||||
</td>
|
||||
</tr>
|
||||
@ -581,18 +693,21 @@ function callTo() {
|
||||
<div class="title_wrap">
|
||||
<p class="dashboard_title">보안로그인</p>
|
||||
<div class="title_box ip_add_wrap">
|
||||
<span>현재 접속중인 IP : <b>000.000.000.00</b></span>
|
||||
<button type="button" class="btnType btnType6 btn_allow_ip_add">허용 IP 등록</button>
|
||||
<span>현재 접속중인 IP : <b><c:out value="${cennectIP }"/> <c:if test="${chkcertRegIP }"> [허용 IP] </c:if> </b></span>
|
||||
<input type="hidden" id="cennectIp" value="<c:out value="${cennectIP }"/>"/>
|
||||
<c:if test="${!chkcertRegIP }">
|
||||
<button type="button" class="btnType btnType6 btn_allow_ip_add">허용 IP 등록</button>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="set_area">
|
||||
<p class="lately_date">최근 변경일시 : <span>2024-11-01 12:49</span></p>
|
||||
|
||||
<div class="tab_depth1">
|
||||
<!-- <a href="#none" class="on">ON</a> -->
|
||||
<a href="#none" class="on">ON</a>
|
||||
<a href="#none">OFF</a>
|
||||
<input type="hidden" id="secuLoginFlag" value="${secuLoginFlag}" />
|
||||
<div class="tab_depth1 security_tab">
|
||||
<a href="#none" id="secuOnBtn">ON</a>
|
||||
<a href="#none" id="secuOffBtn">OFF</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -728,62 +843,19 @@ function callTo() {
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach var="result" items="${resultList}" varStatus="status">
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>PC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>모바일</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>PC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>모바일</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>PC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>모바일</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>PC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>모바일</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>PC</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2024-11-20 13:57:12</td>
|
||||
<td>119.193.215.98</td>
|
||||
<td>모바일</td>
|
||||
<td><c:out value="${result.loginDt}"/></td>
|
||||
<td><c:out value="${result.loginIp}"/></td>
|
||||
<td><c:out value="${result.loginDevice}"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- //로그인 내역 -->
|
||||
<!-- pagination -->
|
||||
<ul class="pagination">
|
||||
<!-- <ul class="pagination">
|
||||
<li class="page_first"><button><img src="/publish/images/content/page_first.png" alt=""></button></li>
|
||||
<li class="page_prev"><button><img src="/publish/images/content/page_prev.png" alt=""></button></li>
|
||||
<li class="on"><button>1</button></li>
|
||||
@ -798,8 +870,13 @@ function callTo() {
|
||||
<li><button>10</button></li>
|
||||
<li class="page_next"><button><img src="/publish/images/content/page_next.png" alt=""></button></li>
|
||||
<li class="page_last"><button><img src="/publish/images/content/page_last.png" alt=""></button></li>
|
||||
</ul><!-- pagination -->
|
||||
|
||||
</ul>pagination
|
||||
-->
|
||||
<c:if test="${!empty resultList}">
|
||||
<ul class="pagination">
|
||||
<ui:pagination paginationInfo = "${paginationInfo}" type="imageWeb" jsFunction="linkPage" />
|
||||
</ul>
|
||||
</c:if>
|
||||
</div>
|
||||
<!-- //보안로그인 -->
|
||||
</div>
|
||||
|
||||
@ -224,13 +224,14 @@
|
||||
</div>
|
||||
<button type="button" class="btnType btnType3">마이페이지</button>
|
||||
<button type="button" class="btnType btnType2">로그아웃</button>
|
||||
|
||||
<div class="security_box red_box">
|
||||
<a href="#" class="title">보안로그인</a><!-- 보안로그인 클릭시 보안로그인 홈페이지로 -->
|
||||
<span class="state off">OFF</span><!-- ON/OFF 클릭시 이벤트 발생 -->
|
||||
<a href="#" class="state off">OFF</a><!-- ON/OFF 클릭시 이벤트 발생 -->
|
||||
</div>
|
||||
<div class="security_box green_box">
|
||||
<a href="#" class="title">보안로그인</a>
|
||||
<span class="state on">ON</span>
|
||||
<a href="#" class="state on">ON</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="login_pay">
|
||||
|
||||
Loading…
Reference in New Issue
Block a user