Merge branch 'master' of http://subsub8729@vcs.iten.co.kr:9999/hylee/mjon_git
This commit is contained in:
commit
e16a744087
36
src/main/java/itn/let/cert/ip/service/CertIpService.java
Normal file
36
src/main/java/itn/let/cert/ip/service/CertIpService.java
Normal file
@ -0,0 +1,36 @@
|
||||
package itn.let.cert.ip.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import itn.let.lett.service.LetterVO;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
import itn.let.mjo.addr.service.AddrVO;
|
||||
import itn.let.mjo.msg.service.MjonMsgVO;
|
||||
import itn.let.sym.site.service.JoinSettingVO;
|
||||
import itn.let.uat.uia.service.MberCertPhoneVO;
|
||||
import itn.let.uat.uia.web.SendLogVO;
|
||||
import itn.let.uss.umt.service.MberManageVO;
|
||||
|
||||
public interface CertIpService {
|
||||
|
||||
// public List<MberCertPhoneVO> selectMberCertPhoneList(String userId);
|
||||
//
|
||||
// public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
//
|
||||
// public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
//
|
||||
// public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO);
|
||||
//
|
||||
// public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
//
|
||||
// public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO);
|
||||
|
||||
public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO);
|
||||
|
||||
public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO);
|
||||
|
||||
|
||||
|
||||
}
|
||||
71
src/main/java/itn/let/cert/ip/service/MberCertIpVO.java
Normal file
71
src/main/java/itn/let/cert/ip/service/MberCertIpVO.java
Normal file
@ -0,0 +1,71 @@
|
||||
package itn.let.cert.ip.service;
|
||||
|
||||
import itn.let.uss.umt.service.UserDefaultVO;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author : 이호영
|
||||
* @fileName : MberCertPhoneVO.java
|
||||
* @date : 2024.11.18
|
||||
* @description : 발신번호 lettngnrlmber_cert_ip 관련 vo
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* ----------------------------------------------------------- *
|
||||
* 2024.11.18 이호영 최초 생성
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class MberCertIpVO extends UserDefaultVO{
|
||||
|
||||
|
||||
/**
|
||||
* @description :
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
private String mberId;
|
||||
private String certIp;
|
||||
private String certMemo;
|
||||
private String certUseYn;
|
||||
private String certMbtlnum;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public String getMberId() {
|
||||
return mberId;
|
||||
}
|
||||
public void setMberId(String mberId) {
|
||||
this.mberId = mberId;
|
||||
}
|
||||
public String getCertIp() {
|
||||
return certIp;
|
||||
}
|
||||
public void setCertIp(String certIp) {
|
||||
this.certIp = certIp;
|
||||
}
|
||||
public String getCertMemo() {
|
||||
return certMemo;
|
||||
}
|
||||
public void setCertMemo(String certMemo) {
|
||||
this.certMemo = certMemo;
|
||||
}
|
||||
public String getCertUseYn() {
|
||||
return certUseYn;
|
||||
}
|
||||
public void setCertUseYn(String certUseYn) {
|
||||
this.certUseYn = certUseYn;
|
||||
}
|
||||
public String getCertMbtlnum() {
|
||||
return certMbtlnum;
|
||||
}
|
||||
public void setCertMbtlnum(String certMbtlnum) {
|
||||
this.certMbtlnum = certMbtlnum;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
31
src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java
Normal file
31
src/main/java/itn/let/cert/ip/service/impl/CertIpDAO.java
Normal file
@ -0,0 +1,31 @@
|
||||
package itn.let.cert.ip.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
|
||||
import itn.let.cert.ip.service.MberCertIpVO;
|
||||
|
||||
@Repository("CertIpDAO")
|
||||
public class CertIpDAO extends EgovAbstractDAO {
|
||||
|
||||
|
||||
|
||||
public List<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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,47 @@
|
||||
package itn.let.cert.ip.service.impl;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||
import itn.let.cert.ip.service.CertIpService;
|
||||
import itn.let.cert.ip.service.MberCertIpVO;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
|
||||
@Service("CertIpService")
|
||||
public class CertIpServiceImpl extends EgovAbstractServiceImpl implements CertIpService {
|
||||
|
||||
@Resource(name = "CertIpDAO")
|
||||
private CertIpDAO certIpDAO;
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse selectMberCertIpList(MberCertIpVO mberCertPhoneVO) {
|
||||
List<MberCertIpVO> mberCertIpListVO = certIpDAO.selectMberCertIpList(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse insertCertIp(MberCertIpVO mberCertIpVO) {
|
||||
MberCertIpVO mberCertIpListVO = certIpDAO.findByMberCertIpList(mberCertIpVO);
|
||||
if(mberCertIpListVO != null) {
|
||||
return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now());
|
||||
}
|
||||
certIpDAO.insertCertIp(mberCertIpVO);
|
||||
return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse deleteCertIp(MberCertIpVO mberCertIpVO) {
|
||||
certIpDAO.deleteCertIp(mberCertIpVO);
|
||||
return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
}
|
||||
102
src/main/java/itn/let/cert/ip/web/CertIpController.java
Normal file
102
src/main/java/itn/let/cert/ip/web/CertIpController.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.CertIpService;
|
||||
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 CertIpController {
|
||||
|
||||
|
||||
/* certIpService */
|
||||
@Resource(name = "CertIpService")
|
||||
private CertIpService certIpService;
|
||||
|
||||
|
||||
@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(certIpService.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(certIpService.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(certIpService.deleteCertIp(mberCertIpVO));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package itn.let.cert.phone.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
|
||||
public interface CertPhoneService {
|
||||
|
||||
// public List<MberCertPhoneVO> selectMberCertPhoneList(String userId);
|
||||
//
|
||||
// public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
//
|
||||
// public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
//
|
||||
// public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO);
|
||||
//
|
||||
public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
//
|
||||
// public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
public StatusResponse selectMberCertPhoneList(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneList(String userId);
|
||||
|
||||
public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,4 +1,4 @@
|
||||
package itn.let.uat.uia.service;
|
||||
package itn.let.cert.phone.service;
|
||||
|
||||
import itn.let.uss.umt.service.UserDefaultVO;
|
||||
|
||||
@ -7,7 +7,7 @@ import itn.let.uss.umt.service.UserDefaultVO;
|
||||
* @author : 이호영
|
||||
* @fileName : MberCertPhoneVO.java
|
||||
* @date : 2024.11.18
|
||||
* @description : 발신번호 lettngnrlmber_cert_phone 관련 vo
|
||||
* @description : 발신번호 lettngnrlmber_cert_ip 관련 vo
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* ----------------------------------------------------------- *
|
||||
@ -16,6 +16,7 @@ import itn.let.uss.umt.service.UserDefaultVO;
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
public class MberCertPhoneVO extends UserDefaultVO{
|
||||
|
||||
|
||||
@ -30,7 +31,6 @@ public class MberCertPhoneVO extends UserDefaultVO{
|
||||
private String certAlias;
|
||||
private String certMemo;
|
||||
private String certUseYn;
|
||||
private String certMbtlnum;
|
||||
|
||||
|
||||
|
||||
@ -66,12 +66,6 @@ public class MberCertPhoneVO extends UserDefaultVO{
|
||||
public void setCertUseYn(String certUseYn) {
|
||||
this.certUseYn = certUseYn;
|
||||
}
|
||||
public String getCertMbtlnum() {
|
||||
return certMbtlnum;
|
||||
}
|
||||
public void setCertMbtlnum(String certMbtlnum) {
|
||||
this.certMbtlnum = certMbtlnum;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
package itn.let.cert.phone.service.impl;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
|
||||
import itn.let.cert.phone.service.MberCertPhoneVO;
|
||||
|
||||
@Repository("CertPhoneDAO")
|
||||
public class CertPhoneDAO extends EgovAbstractDAO {
|
||||
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneList(String userId) {
|
||||
return (List<MberCertPhoneVO>) list("mberCertPhoneVO.selectMberCertPhoneList", userId);
|
||||
}
|
||||
|
||||
public void insertCertPhone(MberCertPhoneVO mberCertPhoneVO) {
|
||||
insert("mberCertPhoneVO.insertCertPhone", mberCertPhoneVO);
|
||||
}
|
||||
|
||||
public void deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) {
|
||||
insert("mberCertPhoneVO.deleteCertPhone", mberCertPhoneVO);
|
||||
}
|
||||
|
||||
public MberCertPhoneVO findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
return (MberCertPhoneVO) select("mberCertPhoneVO.findByCertPhoneInfo", mberCertPhoneVO);
|
||||
}
|
||||
|
||||
public void updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) {
|
||||
insert("mberCertPhoneVO.updateMberCertPhone", mberCertPhoneVO);
|
||||
|
||||
}
|
||||
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) {
|
||||
return (List<MberCertPhoneVO>) list("mberCertPhoneVO.selectMberCertPhoneListVO", mberCertPhoneVO);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,68 @@
|
||||
package itn.let.cert.phone.service.impl;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||
import itn.let.cert.phone.service.CertPhoneService;
|
||||
import itn.let.cert.phone.service.MberCertPhoneVO;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
|
||||
@Service("CertPhoneService")
|
||||
public class CertPhoneServiceImpl extends EgovAbstractServiceImpl implements CertPhoneService {
|
||||
|
||||
@Resource(name = "CertPhoneDAO")
|
||||
private CertPhoneDAO certPhoneDAO;
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse selectMberCertPhoneList(MberCertPhoneVO mberCertPhoneVO) {
|
||||
List<MberCertPhoneVO> mberCertIpListVO = certPhoneDAO.selectMberCertPhoneListVO(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse insertCertPhone(MberCertPhoneVO mberCertPhoneVO) {
|
||||
MberCertPhoneVO mberCertIpListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO);
|
||||
if(mberCertIpListVO != null) {
|
||||
return new StatusResponse(HttpStatus.CONFLICT, "중복 IP입니다.", LocalDateTime.now());
|
||||
}
|
||||
certPhoneDAO.insertCertPhone(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, "등록 하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) {
|
||||
certPhoneDAO.deleteCertPhone(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, "삭제 하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
MberCertPhoneVO mberCertIpListVO = certPhoneDAO.findByCertPhoneInfo(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, mberCertIpListVO, LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneList(String userId) {
|
||||
return certPhoneDAO.selectMberCertPhoneList(userId);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse updateMberCertPhone(MberCertPhoneVO mberCertPhoneVO) {
|
||||
certPhoneDAO.updateMberCertPhone(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, "수정 하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
}
|
||||
178
src/main/java/itn/let/cert/phone/web/CertPhoneController.java
Normal file
178
src/main/java/itn/let/cert/phone/web/CertPhoneController.java
Normal file
@ -0,0 +1,178 @@
|
||||
package itn.let.cert.phone.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.phone.service.MberCertPhoneVO;
|
||||
import itn.let.cert.phone.service.CertPhoneService;
|
||||
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 CertPhoneController {
|
||||
|
||||
|
||||
/* certPhoneService */
|
||||
@Resource(name = "CertPhoneService")
|
||||
private CertPhoneService certPhoneService;
|
||||
|
||||
|
||||
|
||||
|
||||
@RequestMapping(value = {"/cert/phone/findByCertPhoneInfo.do"})
|
||||
public ResponseEntity<StatusResponse> findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
return ResponseEntity.ok().body(certPhoneService.findByCertPhoneInfo(mberCertPhoneVO));
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"/cert/phone/insertCertPhone.do"})
|
||||
public ResponseEntity<StatusResponse> insertCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setFrstRegisterId(userId);
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(certPhoneService.insertCertPhone(mberCertPhoneVO));
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"/cert/phone/updateCertPhone.do"})
|
||||
public ResponseEntity<StatusResponse> updateCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setFrstRegisterId(userId);
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(certPhoneService.updateMberCertPhone(mberCertPhoneVO));
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"/cert/phone/deleteCertPhone.do"})
|
||||
public ResponseEntity<StatusResponse> deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setLastUpdusrId(userId);
|
||||
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(certPhoneService.deleteCertPhone(mberCertPhoneVO));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@RequestMapping(value = {"/uss/umt/user/updateCertPhone.do"})
|
||||
public ResponseEntity<StatusResponse> updateCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setFrstRegisterId(userId);
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(certPhoneService.updateMberCertPhoneInfo(mberCertPhoneVO));
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"/uss/umt/user/deleteCertPhone.do"})
|
||||
public ResponseEntity<StatusResponse> deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setLastUpdusrId(userId);
|
||||
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(certPhoneService.deleteCertPhoneInfo(mberCertPhoneVO));
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
@ -3,11 +3,9 @@ package itn.let.mjo.msgdata.service;
|
||||
import java.util.List;
|
||||
|
||||
import itn.let.lett.service.LetterVO;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
import itn.let.mjo.addr.service.AddrVO;
|
||||
import itn.let.mjo.msg.service.MjonMsgVO;
|
||||
import itn.let.sym.site.service.JoinSettingVO;
|
||||
import itn.let.uat.uia.service.MberCertPhoneVO;
|
||||
import itn.let.uat.uia.web.SendLogVO;
|
||||
import itn.let.uss.umt.service.MberManageVO;
|
||||
|
||||
@ -179,17 +177,6 @@ public interface MjonMsgDataService {
|
||||
//팩스 거래명세서 합산 정보
|
||||
public List<MjonMsgVO> selectPayUserSumFaxList(MjonMsgVO mjonMsgVO) throws Exception;
|
||||
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneList(String userId);
|
||||
|
||||
public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO);
|
||||
|
||||
|
||||
|
||||
|
||||
@ -6,12 +6,10 @@ import org.springframework.stereotype.Repository;
|
||||
|
||||
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
|
||||
import itn.let.lett.service.LetterVO;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
import itn.let.mjo.addr.service.AddrVO;
|
||||
import itn.let.mjo.msg.service.MjonMsgVO;
|
||||
import itn.let.mjo.msgdata.service.MjonMsgDataVO;
|
||||
import itn.let.sym.site.service.JoinSettingVO;
|
||||
import itn.let.uat.uia.service.MberCertPhoneVO;
|
||||
import itn.let.uat.uia.web.SendLogVO;
|
||||
import itn.let.uss.umt.service.MberManageVO;
|
||||
|
||||
@ -369,33 +367,4 @@ public class MjonMsgDataDAO extends EgovAbstractDAO {
|
||||
}
|
||||
|
||||
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneList(String userId) {
|
||||
|
||||
return (List<MberCertPhoneVO>) list("mjonMsgDataDAO.selectMberCertPhoneList", userId);
|
||||
}
|
||||
|
||||
|
||||
public void insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
insert("mjonMsgDataDAO.insertMberCertPhoneInfo", mberCertPhoneVO);
|
||||
}
|
||||
|
||||
public void updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
update("mjonMsgDataDAO.updateMberCertPhoneInfo", mberCertPhoneVO);
|
||||
}
|
||||
|
||||
|
||||
public void deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
update("mjonMsgDataDAO.deleteCertPhoneInfo", mberCertPhoneVO);
|
||||
}
|
||||
|
||||
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) {
|
||||
return (List<MberCertPhoneVO>) list("mjonMsgDataDAO.selectMberCertPhoneListVO", mberCertPhoneVO);
|
||||
}
|
||||
|
||||
|
||||
public MberCertPhoneVO findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
return (MberCertPhoneVO) select("mjonMsgDataDAO.findByCertPhoneInfo", mberCertPhoneVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package itn.let.mjo.msgdata.service.impl;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
@ -9,7 +8,6 @@ import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||
@ -18,7 +16,6 @@ import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||
import itn.com.cmm.util.MJUtil;
|
||||
import itn.com.cmm.util.StringUtil;
|
||||
import itn.let.lett.service.LetterVO;
|
||||
import itn.let.mail.service.StatusResponse;
|
||||
import itn.let.mjo.addr.service.AddrVO;
|
||||
import itn.let.mjo.event.service.MjonEventService;
|
||||
import itn.let.mjo.event.service.MjonEventVO;
|
||||
@ -40,7 +37,6 @@ import itn.let.mjo.pay.service.MjonPayVO;
|
||||
import itn.let.mjo.pay.service.impl.MjonPayDAO;
|
||||
import itn.let.sym.site.service.JoinSettingVO;
|
||||
import itn.let.sym.site.service.impl.SiteManagerDAO;
|
||||
import itn.let.uat.uia.service.MberCertPhoneVO;
|
||||
import itn.let.uat.uia.web.SendLogVO;
|
||||
import itn.let.uss.umt.service.MberManageVO;
|
||||
|
||||
@ -3160,46 +3156,5 @@ public class MjonMsgDataServiceImpl extends EgovAbstractServiceImpl implements M
|
||||
return mjonMsgDataDAO.selectPayUserSumFaxList(mjonMsgVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneList(String userId) {
|
||||
return mjonMsgDataDAO.selectMberCertPhoneList(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StatusResponse insertMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
MberCertPhoneVO mberCertPhoneReturnVO = mjonMsgDataDAO.findByCertPhoneInfo(mberCertPhoneVO);
|
||||
if(mberCertPhoneReturnVO != null) {
|
||||
return new StatusResponse(HttpStatus.CONFLICT, "중복 번호입니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
mjonMsgDataDAO.insertMberCertPhoneInfo(mberCertPhoneVO);
|
||||
|
||||
return new StatusResponse(HttpStatus.OK, "등록하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
@Override
|
||||
public StatusResponse updateMberCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
mjonMsgDataDAO.updateMberCertPhoneInfo(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, "수정하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public StatusResponse deleteCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
mjonMsgDataDAO.deleteCertPhoneInfo(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, "삭제하였습니다.", LocalDateTime.now());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MberCertPhoneVO> selectMberCertPhoneListVO(MberCertPhoneVO mberCertPhoneVO) {
|
||||
return mjonMsgDataDAO.selectMberCertPhoneListVO(mberCertPhoneVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StatusResponse findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) {
|
||||
MberCertPhoneVO mberCertPhoneReturnVO = mjonMsgDataDAO.findByCertPhoneInfo(mberCertPhoneVO);
|
||||
return new StatusResponse(HttpStatus.OK, mberCertPhoneReturnVO, LocalDateTime.now());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -83,6 +83,8 @@ import itn.com.cmm.util.StringUtil;
|
||||
import itn.com.cmm.util.WebUtil;
|
||||
import itn.com.uss.olh.hpc.service.HackIpService;
|
||||
import itn.com.uss.olh.hpc.service.HackIpVO;
|
||||
import itn.let.cert.phone.service.CertPhoneService;
|
||||
import itn.let.cert.phone.service.MberCertPhoneVO;
|
||||
import itn.let.cop.bbs.service.BoardVO;
|
||||
import itn.let.mjo.event.service.MjonEventService;
|
||||
import itn.let.mjo.event.service.MjonEventVO;
|
||||
@ -109,7 +111,6 @@ import itn.let.uat.uap.service.EgovLoginPolicyService;
|
||||
import itn.let.uat.uap.service.LoginPolicyVO;
|
||||
import itn.let.uat.uia.service.AuthCertVO;
|
||||
import itn.let.uat.uia.service.EgovLoginService;
|
||||
import itn.let.uat.uia.service.MberCertPhoneVO;
|
||||
import itn.let.uss.umt.service.EgovMberManageService;
|
||||
import itn.let.uss.umt.service.EgovUserManageService;
|
||||
import itn.let.uss.umt.service.MberManageConfigVO;
|
||||
@ -237,6 +238,9 @@ public class EgovLoginController {
|
||||
|
||||
@Resource(name = "mberGrdService")
|
||||
MberGrdService mberGrdService;
|
||||
|
||||
@Resource(name = "CertPhoneService")
|
||||
private CertPhoneService certPhoneService;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(MjonMsgDataController.class);
|
||||
|
||||
@ -2054,7 +2058,7 @@ public class EgovLoginController {
|
||||
*/
|
||||
|
||||
|
||||
List<MberCertPhoneVO> mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneList(resultVO.getId());
|
||||
List<MberCertPhoneVO> mberCertPhoneList = certPhoneService.selectMberCertPhoneList(resultVO.getId());
|
||||
|
||||
|
||||
modelAndView.addObject("status", "success");
|
||||
@ -3633,7 +3637,7 @@ public class EgovLoginController {
|
||||
mberCertPhoneVO.setMberId(mjonMsgVO.getUserId());
|
||||
|
||||
|
||||
List<MberCertPhoneVO> mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneListVO(mberCertPhoneVO);
|
||||
List<MberCertPhoneVO> mberCertPhoneList = certPhoneService.selectMberCertPhoneList(mjonMsgVO.getUserId());
|
||||
|
||||
|
||||
|
||||
|
||||
@ -171,6 +171,7 @@ public class EgovMypageController {
|
||||
@RequestMapping(value="/web/user/mberInfoIndex.do")
|
||||
public String mberInfoIndex(
|
||||
ModelMap model
|
||||
, HttpServletRequest request
|
||||
, RedirectAttributes redirectAttributes) throws Exception {
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
@ -448,6 +449,27 @@ public class EgovMypageController {
|
||||
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
/**
|
||||
* 보안인증 본인인증 기능추가
|
||||
* 20241120 원영현 과장 추가
|
||||
* */
|
||||
KmcCertChecker kmcCertCheck = new KmcCertChecker();
|
||||
|
||||
//kmc 본인인증 실/개발 서버 구분
|
||||
String serverNm = "";
|
||||
if(request.getServerName().contains("192.168.0.60") || request.getServerName().contains("localhost")) {
|
||||
serverNm = request.getScheme() + "://192.168.0.60:8085";
|
||||
}else{
|
||||
serverNm = request.getScheme() + "://www.munjaon.co.kr";
|
||||
}
|
||||
|
||||
AuthCertVO certVO = kmcCertCheck.authCertCheckNine(serverNm + "/web/user/selectSecurityAuthn.do", loginVO.getId());
|
||||
model.addAttribute("certVO", certVO);
|
||||
}
|
||||
|
||||
|
||||
return "web/user/mberInfoIndex";
|
||||
}
|
||||
|
||||
@ -3494,4 +3516,254 @@ public class EgovMypageController {
|
||||
}
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 회원정보 조회 휴대폰 인증
|
||||
*/
|
||||
@RequestMapping("/web/user/selectSecurityAuthn.do")
|
||||
public String selectSecurityAuthn(
|
||||
HttpServletRequest request, ModelMap model
|
||||
, @RequestParam Map<String, Object> commandMap
|
||||
, @ModelAttribute("searchVO") KmcVO kmcVO ) throws Exception {
|
||||
|
||||
//개인회원일 시 mblDn 비교 후 본인 명의 휴대폰만 변경 가능하게끔
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String mblDn = userManageService.selectUserMblDnById(loginVO.getId());
|
||||
model.addAttribute("loginVO", loginVO);
|
||||
|
||||
String errMessage = ""; //에러메세지
|
||||
|
||||
String rec_cert = ""; // 결과값(암호화)
|
||||
String certNum = ""; // certNum
|
||||
|
||||
rec_cert = request.getParameter("rec_cert").trim();
|
||||
certNum = request.getParameter("certNum").trim();
|
||||
|
||||
kmcVO.setRecCert(rec_cert);
|
||||
kmcVO.setCertNum(certNum);
|
||||
// 파라미터 유효성 검증
|
||||
if( rec_cert.length() == 0 || certNum.length() == 0 ){
|
||||
errMessage = "비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
|
||||
// 변수선언 --------------------------------------------------------------------------------------------------------
|
||||
String k_certNum = ""; // 파라미터로 수신한 요청번호
|
||||
k_certNum = certNum;
|
||||
String date = ""; // 요청일시
|
||||
String CI = ""; // 연계정보(CI)
|
||||
String DI = ""; // 중복가입확인정보(DI)
|
||||
String phoneNo = ""; // 휴대폰번호
|
||||
String phoneCorp = ""; // 이동통신사
|
||||
String birthDay = ""; // 생년월일
|
||||
String gender = ""; // 성별
|
||||
String nation = ""; // 내국인
|
||||
String name = ""; // 성명
|
||||
String M_name = ""; // 미성년자 성명
|
||||
String M_birthDay = ""; // 미성년자 생년월일
|
||||
String M_Gender = ""; // 미성년자 성별
|
||||
String M_nation = ""; // 미성년자 내외국인
|
||||
String result = ""; // 결과값
|
||||
|
||||
String certMet = ""; // 인증방법
|
||||
String ip = ""; // ip주소
|
||||
String plusInfo = "";
|
||||
|
||||
String encPara = "";
|
||||
String encMsg1 = "";
|
||||
String encMsg2 = "";
|
||||
String msgChk = "";
|
||||
|
||||
com.icert.comm.secu.IcertSecuManager seed = new com.icert.comm.secu.IcertSecuManager();
|
||||
|
||||
//02. 1차 복호화
|
||||
//수신된 certNum를 이용하여 복호화
|
||||
rec_cert = seed.getDec(rec_cert, k_certNum);
|
||||
|
||||
//03. 1차 파싱
|
||||
int inf1 = rec_cert.indexOf("/",0);
|
||||
int inf2 = rec_cert.indexOf("/",inf1+1);
|
||||
|
||||
encPara = rec_cert.substring(0,inf1); //암호화된 통합 파라미터
|
||||
encMsg1 = rec_cert.substring(inf1+1,inf2); //암호화된 통합 파라미터의 Hash값
|
||||
|
||||
//04. 위변조 검증
|
||||
encMsg2 = seed.getMsg(encPara);
|
||||
kmcVO.setEncMsg2(encMsg2);
|
||||
if(encMsg2.equals(encMsg1)){
|
||||
msgChk="Y";
|
||||
}
|
||||
|
||||
if(!"Y".equals(msgChk)) {
|
||||
errMessage = "비정상접근입니다.";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
//05. 2차 복호화
|
||||
rec_cert = seed.getDec(encPara, k_certNum);
|
||||
kmcVO.setRecCert(rec_cert);
|
||||
//06. 2차 파싱
|
||||
int info1 = rec_cert.indexOf("/",0);
|
||||
int info2 = rec_cert.indexOf("/",info1+1);
|
||||
int info3 = rec_cert.indexOf("/",info2+1);
|
||||
int info4 = rec_cert.indexOf("/",info3+1);
|
||||
int info5 = rec_cert.indexOf("/",info4+1);
|
||||
int info6 = rec_cert.indexOf("/",info5+1);
|
||||
int info7 = rec_cert.indexOf("/",info6+1);
|
||||
int info8 = rec_cert.indexOf("/",info7+1);
|
||||
int info9 = rec_cert.indexOf("/",info8+1);
|
||||
int info10 = rec_cert.indexOf("/",info9+1);
|
||||
int info11 = rec_cert.indexOf("/",info10+1);
|
||||
int info12 = rec_cert.indexOf("/",info11+1);
|
||||
int info13 = rec_cert.indexOf("/",info12+1);
|
||||
int info14 = rec_cert.indexOf("/",info13+1);
|
||||
int info15 = rec_cert.indexOf("/",info14+1);
|
||||
int info16 = rec_cert.indexOf("/",info15+1);
|
||||
int info17 = rec_cert.indexOf("/",info16+1);
|
||||
int info18 = rec_cert.indexOf("/",info17+1);
|
||||
|
||||
certNum = rec_cert.substring(0,info1); kmcVO.setCertNum(certNum);
|
||||
date = rec_cert.substring(info1+1,info2); kmcVO.setDate(date);
|
||||
CI = rec_cert.substring(info2+1,info3); kmcVO.setCI(CI);
|
||||
phoneNo = rec_cert.substring(info3+1,info4); kmcVO.setPhoneNo(phoneNo);
|
||||
phoneCorp = rec_cert.substring(info4+1,info5); kmcVO.setPhoneCorp(phoneCorp);
|
||||
birthDay = rec_cert.substring(info5+1,info6); kmcVO.setBirthDay(birthDay);
|
||||
gender = rec_cert.substring(info6+1,info7); kmcVO.setGender(gender);
|
||||
nation = rec_cert.substring(info7+1,info8); kmcVO.setNation(nation);
|
||||
name = rec_cert.substring(info8+1,info9); kmcVO.setName(name);
|
||||
result = rec_cert.substring(info9+1,info10); kmcVO.setResult(result);
|
||||
certMet = rec_cert.substring(info10+1,info11); kmcVO.setCertMet(certMet);
|
||||
ip = rec_cert.substring(info11+1,info12); kmcVO.setIp(ip);
|
||||
M_name = rec_cert.substring(info12+1,info13); kmcVO.setMName(M_name);
|
||||
M_birthDay = rec_cert.substring(info13+1,info14); kmcVO.setMBirthDay(M_birthDay);
|
||||
M_Gender = rec_cert.substring(info14+1,info15); kmcVO.setMGender(M_Gender);
|
||||
M_nation = rec_cert.substring(info15+1,info16); kmcVO.setMNation(M_nation);
|
||||
plusInfo = rec_cert.substring(info16+1,info17); kmcVO.setPlusInfo(plusInfo);
|
||||
DI = rec_cert.substring(info17+1,info18); kmcVO.setDI(DI);
|
||||
|
||||
//07. CI, DI 복호화
|
||||
CI = seed.getDec(CI, k_certNum); kmcVO.setCI(CI);
|
||||
DI = seed.getDec(DI, k_certNum); kmcVO.setDI(DI);
|
||||
|
||||
if("Y".equals(result)) {
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
String regex = "";
|
||||
if( certNum.length() == 0 || certNum.length() > 40){
|
||||
errMessage = "요청번호 비정상.";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
regex = "[0-9]*";
|
||||
if( date.length() != 14 || !paramChk(regex, date) ){
|
||||
errMessage = "요청일시";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
regex = "[A-Z]*";
|
||||
if( certMet.length() != 1 || !paramChk(regex, certMet) ){
|
||||
errMessage = "본인인증방법 비정상" + certMet;
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
|
||||
regex = "[0-9]*";
|
||||
if( (phoneNo.length() != 10 && phoneNo.length() != 11) || !paramChk(regex, phoneNo) ){
|
||||
errMessage = "휴대폰번호 비정상" ;
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
regex = "[A-Z]*";
|
||||
if( phoneCorp.length() != 3 || !paramChk(regex, phoneCorp) ){
|
||||
errMessage = "이동통신사 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
regex = "[0-9]*";
|
||||
if( birthDay.length() != 8 || !paramChk(regex, birthDay) ){
|
||||
errMessage = "생년월일 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
regex = "[0-9]*";
|
||||
if( gender.length() != 1 || !paramChk(regex, gender) ){
|
||||
errMessage = "성별 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
regex = "[0-9]*";
|
||||
if( nation.length() != 1 || !paramChk(regex, nation) ){
|
||||
errMessage = "내/외국인 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
regex = "[\\sA-Za-z가-<2D>R.,-]*";
|
||||
if( name.length() > 60 || !paramChk(regex, name) ){
|
||||
errMessage = "성명 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
regex = "[A-Z]*";
|
||||
if( result.length() != 1 || !paramChk(regex, result) ){
|
||||
errMessage = "결과값 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
|
||||
regex = "[\\sA-Za-z가-?.,-]*";
|
||||
if( M_name.length() != 0 ){
|
||||
if( M_name.length() > 60 || !paramChk(regex, M_name) ){
|
||||
errMessage = "미성년자 성명 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
}
|
||||
|
||||
regex = "[0-9]*";
|
||||
if( M_birthDay.length() != 0 ){
|
||||
if( M_birthDay.length() != 8 || !paramChk(regex, M_birthDay) ){
|
||||
errMessage = "미성년자 생년월일 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
}
|
||||
|
||||
regex = "[0-9]*";
|
||||
if( M_Gender.length() != 0 ){
|
||||
if( M_Gender.length() != 1 || !paramChk(regex, M_Gender) ){
|
||||
errMessage = "미성년자 성별 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
}
|
||||
|
||||
regex = "[0-9]*";
|
||||
if( M_nation.length() != 0 ){
|
||||
if( M_nation.length() != 1 || !paramChk(regex, M_nation) ){
|
||||
errMessage = "미성년자 내/외국인 비정상";
|
||||
return returnPage(model , errMessage , kmcVO) ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//KMC 본인인증 로그
|
||||
AuthCertVO certVO = new AuthCertVO();
|
||||
certVO.setMberId(kmcVO.getPlusInfo());
|
||||
certVO.setCertNum(kmcVO.getCertNum());
|
||||
certVO.setCertDate(kmcVO.getDate());
|
||||
certVO.setCertDi(kmcVO.getDI());
|
||||
certVO.setCertPhone(kmcVO.getPhoneNo());
|
||||
certVO.setCertNation(kmcVO.getNation());
|
||||
certVO.setCertName(kmcVO.getName());
|
||||
certVO.setCertResult(kmcVO.getResult());
|
||||
certVO.setCertType("KMC_회원정보 변경");
|
||||
certVO.setCertIpaddr(kmcVO.getIp());
|
||||
certVO.setBirthDay(kmcVO.getBirthDay());
|
||||
certVO.setSexdstnCode(kmcVO.getGender());
|
||||
|
||||
model.addAttribute("kmcVO", kmcVO);
|
||||
|
||||
return "web/user/securityAuthnPage";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -586,4 +586,77 @@ public class KmcCertChecker {
|
||||
|
||||
return certVO;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 마이페이지 보안인증
|
||||
public AuthCertVO authCertCheckNine(String trUrl, String id) {
|
||||
|
||||
AuthCertVO certVO = new AuthCertVO();
|
||||
|
||||
//kmc step 01 데이터
|
||||
//날짜 생성
|
||||
Calendar today = Calendar.getInstance();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
|
||||
String day = sdf.format(today.getTime());
|
||||
|
||||
Random ran = new Random();
|
||||
//랜덤 문자 길이
|
||||
int numLength = 6;
|
||||
String randomStr = "";
|
||||
|
||||
for (int i = 0; i < numLength; i++) {
|
||||
//0 ~ 9 랜덤 숫자 생성
|
||||
randomStr += ran.nextInt(10);
|
||||
}
|
||||
|
||||
//reqNum은 최대 40byte 까지 사용 가능
|
||||
String reqNum = day + randomStr; //요청번호
|
||||
|
||||
String tr_cert = "";
|
||||
String cpId = "MJOM1001"; // 회원사ID
|
||||
String urlCode = "001014"; // URL코드
|
||||
//kmc 본인인증 실/개발 서버 구분
|
||||
if(trUrl.contains("192.168.0.60") || trUrl.contains("localhost")) {
|
||||
urlCode = "010001";
|
||||
}
|
||||
String certNum = reqNum; // 요청번호 ( 본인인증 요청시 중복되지 않게 생성해야함. (예-시퀀스번호) )
|
||||
String date = day; // 요청일시
|
||||
String certMet = "M"; // 본인인증방법 - M:휴대폰 본인인증, C:신용카드인증, P:공인인증서 인증
|
||||
String name = ""; // 성명
|
||||
String phoneNo = ""; // 휴대폰번호
|
||||
String phoneCorp = ""; // 이동통신사
|
||||
if(phoneCorp == null) phoneCorp = "";
|
||||
String birthDay = ""; // 생년월일
|
||||
String gender = ""; // 성별
|
||||
if(gender == null) gender = "";
|
||||
String nation = ""; // 내외국인 구분 - 0:내국인, 1:외국인
|
||||
String plusInfo = id; // 추가DATA정보
|
||||
String extendVar = "0000000000000000"; // 확장변수
|
||||
//End-tr_cert 데이터 변수 선언 ---------------------------------------------------------------
|
||||
|
||||
String tr_url = trUrl;//"http://www.munjaon.co.kr/web/cop/kmc/authRequestAjax.do"; // 본인인증서비스 결과수신 POPUP URL
|
||||
String tr_add = "N"; // IFrame사용여부
|
||||
|
||||
//01. 한국모바일인증(주) 암호화 모듈 선언
|
||||
IcertSecuManager seed = new IcertSecuManager();
|
||||
|
||||
//02. 1차 암호화 (tr_cert 데이터변수 조합 후 암호화)
|
||||
String enc_tr_cert = "";
|
||||
tr_cert = cpId +"/"+ urlCode +"/"+ certNum +"/"+ date +"/"+ certMet +"/"+ birthDay +"/"+ gender +"/"+ name +"/"+ phoneNo +"/"+ phoneCorp +"/"+ nation +"/"+ plusInfo +"/"+ extendVar;
|
||||
enc_tr_cert = seed.getEnc(tr_cert, "");
|
||||
|
||||
//03. 1차 암호화 데이터에 대한 위변조 검증값 생성 (HMAC)
|
||||
String hmacMsg = "";
|
||||
hmacMsg = seed.getMsg(enc_tr_cert);
|
||||
|
||||
//04. 2차 암호화 (1차 암호화 데이터, HMAC 데이터, extendVar 조합 후 암호화)
|
||||
tr_cert = seed.getEnc(enc_tr_cert + "/" + hmacMsg + "/" + extendVar, "");
|
||||
|
||||
certVO.setTr_cert(tr_cert);
|
||||
certVO.setTr_url(tr_url);
|
||||
certVO.setTr_add(tr_add);
|
||||
|
||||
return certVO;
|
||||
}
|
||||
}
|
||||
|
||||
@ -79,6 +79,8 @@ import itn.com.cmm.util.MJUtil;
|
||||
import itn.com.cmm.util.RedirectUrlMaker;
|
||||
import itn.com.cmm.util.StringUtil;
|
||||
import itn.com.utl.fcc.service.EgovStringUtil;
|
||||
import itn.let.cert.phone.service.CertPhoneService;
|
||||
import itn.let.cert.phone.service.MberCertPhoneVO;
|
||||
import itn.let.cop.bbs.service.BoardVO;
|
||||
import itn.let.fax.user.service.FaxGroupDataVO;
|
||||
import itn.let.fax.user.service.FaxService;
|
||||
@ -131,7 +133,6 @@ import itn.let.sym.site.service.EgovSiteManagerService;
|
||||
import itn.let.sym.site.service.JoinSettingVO;
|
||||
import itn.let.sym.site.service.SiteManagerVO;
|
||||
import itn.let.uat.uia.service.EgovLoginService;
|
||||
import itn.let.uat.uia.service.MberCertPhoneVO;
|
||||
import itn.let.uat.uia.web.EmailVO;
|
||||
import itn.let.uat.uia.web.SendLogVO;
|
||||
import itn.let.uat.uia.web.SendMail;
|
||||
@ -281,6 +282,10 @@ public class EgovUserManageController {
|
||||
@Resource(name = "MjonReservMsgService")
|
||||
private MjonReservMsgService mjonReservMsgService;
|
||||
|
||||
|
||||
@Resource(name = "CertPhoneService")
|
||||
private CertPhoneService certPhoneService;
|
||||
|
||||
@Autowired
|
||||
KakaoApiTemplate kakaoApiTemplate;
|
||||
|
||||
@ -1102,7 +1107,7 @@ public class EgovUserManageController {
|
||||
|
||||
|
||||
|
||||
List<MberCertPhoneVO> mberCertPhoneList = mjonMsgDataService.selectMberCertPhoneList(userId);
|
||||
List<MberCertPhoneVO> mberCertPhoneList = certPhoneService.selectMberCertPhoneList(userId);
|
||||
model.addAttribute("mberCertPhoneList", mberCertPhoneList);
|
||||
|
||||
//문자발송 단가 조회하기
|
||||
@ -1657,79 +1662,6 @@ public class EgovUserManageController {
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"/uss/umt/user/findByCertPhoneInfo.do"})
|
||||
public ResponseEntity<StatusResponse> findByCertPhoneInfo(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
return ResponseEntity.ok().body(mjonMsgDataService.findByCertPhoneInfo(mberCertPhoneVO));
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"/uss/umt/user/insertCertPhone.do"})
|
||||
public ResponseEntity<StatusResponse> insertCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setFrstRegisterId(userId);
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(mjonMsgDataService.insertMberCertPhoneInfo(mberCertPhoneVO));
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"/uss/umt/user/updateCertPhone.do"})
|
||||
public ResponseEntity<StatusResponse> updateCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setFrstRegisterId(userId);
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(mjonMsgDataService.updateMberCertPhoneInfo(mberCertPhoneVO));
|
||||
}
|
||||
|
||||
@RequestMapping(value = {"/uss/umt/user/deleteCertPhone.do"})
|
||||
public ResponseEntity<StatusResponse> deleteCertPhone(MberCertPhoneVO mberCertPhoneVO) throws Exception {
|
||||
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
modelAndView.setViewName("jsonView");
|
||||
|
||||
//로그인 권한정보 불러오기
|
||||
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
|
||||
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
|
||||
|
||||
if(userId == null) {
|
||||
if(StringUtils.isEmpty(userId)) return ResponseEntity.ok().body(new StatusResponse(HttpStatus.BAD_REQUEST, "로그인 후 이용해 주세요", LocalDateTime.now()));
|
||||
}
|
||||
mberCertPhoneVO.setLastUpdusrId(userId);
|
||||
|
||||
|
||||
|
||||
return ResponseEntity.ok().body(mjonMsgDataService.deleteCertPhoneInfo(mberCertPhoneVO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 회원정보 팝업 이벤트 정보 신규 추가 기능
|
||||
|
||||
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
|
||||
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
|
||||
|
||||
<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"/> <!-- 문자메세지 -->
|
||||
</sqlMapConfig>
|
||||
@ -0,0 +1,89 @@
|
||||
<?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="MjonCert">
|
||||
<typeAlias alias="mberCertIpVO" type="itn.let.cert.ip.service.MberCertIpVO"/>
|
||||
|
||||
<select id="MberCertIpVO.selectMberCertIpList" parameterClass="mberCertIpVO" resultClass="mberCertIpVO">
|
||||
/*MberCertIpVO.selectMberCertIpList*/
|
||||
SELECT
|
||||
MBER_ID as mberId
|
||||
, CERT_IP as certIp
|
||||
, CERT_MEMO as certMemo
|
||||
, CERT_USE_YN as certUseYn
|
||||
, FRST_REGIST_PNTTM as frstRegistPnttm
|
||||
, FRST_REGISTER_ID as frstRegisterId
|
||||
, LAST_UPDT_PNTTM as lastUpdtPnttm
|
||||
, LAST_UPDUSR_ID as lastUpdusrId
|
||||
FROM
|
||||
LETTNGNRLMBER_CERT_IP
|
||||
where
|
||||
MBER_ID = #mberId#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
order by FRST_REGIST_PNTTM desc
|
||||
</select>
|
||||
|
||||
<select id="MberCertIpVO.findByMberCertIpList" parameterClass="mberCertIpVO" resultClass="mberCertIpVO">
|
||||
/*MberCertIpVO.findByMberCertIpList*/
|
||||
SELECT
|
||||
MBER_ID as mberId
|
||||
, CERT_IP as certIp
|
||||
, CERT_MEMO as certMemo
|
||||
, CERT_USE_YN as certUseYn
|
||||
, FRST_REGIST_PNTTM as frstRegistPnttm
|
||||
, FRST_REGISTER_ID as frstRegisterId
|
||||
, LAST_UPDT_PNTTM as lastUpdtPnttm
|
||||
, LAST_UPDUSR_ID as lastUpdusrId
|
||||
FROM
|
||||
LETTNGNRLMBER_CERT_IP
|
||||
where
|
||||
MBER_ID = #mberId#
|
||||
AND CERT_IP = #certIp#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
</select>
|
||||
|
||||
|
||||
<insert id="MberCertIpVO.insertCertIp">
|
||||
/*MberCertIpVO.insertCertIp*/
|
||||
|
||||
INSERT INTO LETTNGNRLMBER_CERT_IP
|
||||
(
|
||||
MBER_ID
|
||||
, CERT_IP
|
||||
, CERT_MEMO
|
||||
, FRST_REGIST_PNTTM
|
||||
, FRST_REGISTER_ID
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#mberId#
|
||||
, #certIp#
|
||||
, #certMemo#
|
||||
, now()
|
||||
, #frstRegisterId#
|
||||
)
|
||||
</insert>
|
||||
|
||||
|
||||
<update id="MberCertIpVO.deleteCertIp">
|
||||
/*MberCertIpVO.deleteCertIp*/
|
||||
|
||||
|
||||
UPDATE LETTNGNRLMBER_CERT_IP
|
||||
SET
|
||||
CERT_USE_YN = 'N'
|
||||
, LAST_UPDT_PNTTM = now()
|
||||
, LAST_UPDUSR_ID = #lastUpdusrId#
|
||||
WHERE
|
||||
MBER_ID = #mberId#
|
||||
AND CERT_IP = #certIp#
|
||||
|
||||
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
</sqlMap>
|
||||
@ -0,0 +1,119 @@
|
||||
<?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="MjonCertPhone">
|
||||
<typeAlias alias="mberCertPhoneVO" type="itn.let.cert.phone.service.MberCertPhoneVO"/>
|
||||
|
||||
|
||||
<select id="mberCertPhoneVO.selectMberCertPhoneList" parameterClass="String" resultClass="mberCertPhoneVO">
|
||||
/* mberCertPhoneVO.selectMberCertPhoneList */
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum
|
||||
, '-' AS certMemo
|
||||
, '대표번호' AS certAlias
|
||||
, '-' AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber
|
||||
WHERE MBER_ID = #userId#
|
||||
UNION ALL
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum
|
||||
, CERT_MEMO AS certMemo
|
||||
, CERT_ALIAS AS certAlias
|
||||
, FRST_REGIST_PNTTM AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber_cert_phone
|
||||
WHERE MBER_ID = #userId#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
</select>
|
||||
|
||||
|
||||
<select id="mberCertPhoneVO.selectMberCertPhoneListVO" parameterClass="mberCertPhoneVO" resultClass="mberCertPhoneVO">
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum,
|
||||
'-' AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber
|
||||
WHERE MBER_ID = #mberId#
|
||||
UNION ALL
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum,
|
||||
FRST_REGIST_PNTTM AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber_cert_phone
|
||||
WHERE MBER_ID = #mberId#
|
||||
AND MBTLNUM = #mbtlnum#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
</select>
|
||||
|
||||
<select id="mberCertPhoneVO.findByCertPhoneInfo" parameterClass="mberCertPhoneVO" resultClass="mberCertPhoneVO">
|
||||
/*mberCertPhoneVO.findByMberCertIpList*/
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum
|
||||
, CERT_MEMO AS certMemo
|
||||
, CERT_ALIAS AS certAlias
|
||||
, FRST_REGIST_PNTTM AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber_cert_phone
|
||||
WHERE MBER_ID = #mberId#
|
||||
AND MBTLNUM = #mbtlnum#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
</select>
|
||||
|
||||
|
||||
<insert id="mberCertPhoneVO.insertCertPhone">
|
||||
/* mberCertPhoneVO.insertCertIp */
|
||||
INSERT
|
||||
INTO LETTNGNRLMBER_CERT_PHONE
|
||||
(
|
||||
MBER_ID
|
||||
, MBTLNUM
|
||||
, CERT_ALIAS
|
||||
, CERT_MEMO
|
||||
, FRST_REGIST_PNTTM
|
||||
, FRST_REGISTER_ID
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#mberId#
|
||||
, #mbtlnum#
|
||||
, #certAlias#
|
||||
, #certMemo#
|
||||
, now()
|
||||
, #frstRegisterId#
|
||||
)
|
||||
</insert>
|
||||
|
||||
|
||||
<update id="mberCertPhoneVO.deleteCertPhone" parameterClass="mberCertPhoneVO">
|
||||
|
||||
UPDATE LETTNGNRLMBER_CERT_PHONE
|
||||
SET CERT_USE_YN = 'N'
|
||||
, LAST_UPDUSR_ID = #lastUpdusrId#
|
||||
WHERE
|
||||
MBER_ID = #mberId#
|
||||
AND MBTLNUM = #mbtlnum#
|
||||
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
<update id="mberCertPhoneVO.updateMberCertPhone" parameterClass="mberCertPhoneVO">
|
||||
|
||||
UPDATE LETTNGNRLMBER_CERT_PHONE
|
||||
SET
|
||||
LAST_UPDUSR_ID = #lastUpdusrId#
|
||||
, CERT_MEMO = #certMemo#
|
||||
, CERT_ALIAS = #certAlias#
|
||||
WHERE
|
||||
MBER_ID = #mberId#
|
||||
AND MBTLNUM = #mbtlnum#
|
||||
|
||||
|
||||
</update>
|
||||
|
||||
|
||||
</sqlMap>
|
||||
@ -28,7 +28,7 @@
|
||||
WHERE 1=1
|
||||
<isNotEmpty property="searchKeyword">
|
||||
<isEqual property="searchCondition" compareValue="" >
|
||||
AND ( A.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')
|
||||
AND ( A.USER_ID LIKE CONCAT('%', #searchKeyword#, '%')MjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xmlMjonMsgCustom_SQL_mysql.xml
|
||||
OR CUSTOM_PHONE_NO LIKE CONCAT ('%', #searchKeyword#,'%') )
|
||||
</isEqual>
|
||||
<isEqual property="searchCondition" compareValue="1">
|
||||
|
||||
@ -21,7 +21,6 @@
|
||||
<typeAlias alias="mjonMsgResvVO" type="itn.let.mjo.reservmsg.service.MjonResvMsgVO"/>
|
||||
<typeAlias alias="mjonMsgStatVO" type="itn.let.mjo.msg.service.MjonMsgStatVO"/>
|
||||
<typeAlias alias="mjonMsgStatVO" type="itn.let.mjo.msg.service.MjonMsgStatVO"/>
|
||||
<typeAlias alias="mberCertPhoneVO" type="itn.let.uat.uia.service.MberCertPhoneVO"/>
|
||||
|
||||
|
||||
<!-- 공통 쿼리 부분 문자 발송 관련 -->
|
||||
@ -3757,110 +3756,6 @@
|
||||
|
||||
|
||||
|
||||
<select id="mjonMsgDataDAO.selectMberCertPhoneList" parameterClass="String" resultClass="mberCertPhoneVO">
|
||||
/* mjonMsgDataDAO.selectMberCertPhoneList */
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum
|
||||
, '-' AS certMemo
|
||||
, '대표번호' AS certAlias
|
||||
, '-' AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber
|
||||
WHERE MBER_ID = #userId#
|
||||
UNION ALL
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum
|
||||
, CERT_MEMO AS certMemo
|
||||
, CERT_ALIAS AS certAlias
|
||||
, FRST_REGIST_PNTTM AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber_cert_phone
|
||||
WHERE MBER_ID = #userId#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
</select>
|
||||
|
||||
<select id="mjonMsgDataDAO.selectMberCertPhoneListVO" parameterClass="mberCertPhoneVO" resultClass="mberCertPhoneVO">
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum,
|
||||
'-' AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber
|
||||
WHERE MBER_ID = #mberId#
|
||||
UNION ALL
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum,
|
||||
FRST_REGIST_PNTTM AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber_cert_phone
|
||||
WHERE MBER_ID = #mberId#
|
||||
AND MBTLNUM = #mbtlnum#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
</select>
|
||||
|
||||
<select id="mjonMsgDataDAO.findByCertPhoneInfo" parameterClass="mberCertPhoneVO" resultClass="mberCertPhoneVO">
|
||||
/*mjonMsgDataDAO.findByCertPhoneInfo*/
|
||||
SELECT
|
||||
MBTLNUM AS mbtlnum
|
||||
, CERT_MEMO AS certMemo
|
||||
, CERT_ALIAS AS certAlias
|
||||
, FRST_REGIST_PNTTM AS frstRegistPnttm
|
||||
FROM
|
||||
lettngnrlmber_cert_phone
|
||||
WHERE MBER_ID = #mberId#
|
||||
AND MBTLNUM = #mbtlnum#
|
||||
AND CERT_USE_YN = 'Y'
|
||||
</select>
|
||||
|
||||
|
||||
<insert id="mjonMsgDataDAO.insertMberCertPhoneInfo" parameterClass="mberCertPhoneVO">
|
||||
|
||||
INSERT
|
||||
INTO LETTNGNRLMBER_CERT_PHONE
|
||||
(
|
||||
MBER_ID
|
||||
, MBTLNUM
|
||||
, CERT_ALIAS
|
||||
, CERT_MEMO
|
||||
, FRST_REGIST_PNTTM
|
||||
, FRST_REGISTER_ID
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
#mberId#
|
||||
, #mbtlnum#
|
||||
, #certAlias#
|
||||
, #certMemo#
|
||||
, now()
|
||||
, #frstRegisterId#
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="mjonMsgDataDAO.deleteCertPhoneInfo" parameterClass="mberCertPhoneVO">
|
||||
|
||||
UPDATE LETTNGNRLMBER_CERT_PHONE
|
||||
SET CERT_USE_YN = 'N'
|
||||
, LAST_UPDUSR_ID = #lastUpdusrId#
|
||||
WHERE
|
||||
MBER_ID = #mberId#
|
||||
AND MBTLNUM = #mbtlnum#
|
||||
</update>
|
||||
|
||||
|
||||
|
||||
<update id="mjonMsgDataDAO.updateMberCertPhoneInfo" parameterClass="mberCertPhoneVO">
|
||||
|
||||
UPDATE LETTNGNRLMBER_CERT_PHONE
|
||||
SET
|
||||
LAST_UPDUSR_ID = #lastUpdusrId#
|
||||
, CERT_MEMO = #certMemo#
|
||||
, CERT_ALIAS = #certAlias#
|
||||
WHERE
|
||||
MBER_ID = #mberId#
|
||||
AND MBTLNUM = #mbtlnum#
|
||||
|
||||
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 발신번호 등록 여부 조회 -->
|
||||
<select id="mjonMsgDAO.selectSendPhonNumCheck" parameterClass="mjonMsgVO" resultClass="int">
|
||||
|
||||
@ -2096,7 +2096,7 @@ function fn_certPhoneReg(){
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/uss/umt/user/insertCertPhone.do",
|
||||
url: "/cert/phone/insertCertPhone.do",
|
||||
data: params,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
@ -2106,6 +2106,7 @@ function fn_certPhoneReg(){
|
||||
location.reload();
|
||||
}else if(returnData.status == 'CONFLICT'){
|
||||
alert(returnData.message);
|
||||
return false;
|
||||
}else{
|
||||
alert("오류가 발생하였습니다.");
|
||||
}
|
||||
@ -2134,7 +2135,7 @@ function fn_certPhoneUdt(){
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/uss/umt/user/updateCertPhone.do",
|
||||
url: "/cert/phone/updateCertPhone.do",
|
||||
data: params,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
@ -2161,7 +2162,7 @@ function fn_certPhoneUpdatePopOpen(mbtlnum){
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/uss/umt/user/findByCertPhoneInfo.do",
|
||||
url: "/cert/phone/findByCertPhoneInfo.do",
|
||||
data: params,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
@ -2187,41 +2188,6 @@ function fn_certPhoneUpdatePopOpen(mbtlnum){
|
||||
}
|
||||
|
||||
|
||||
//이벤트 수정하기
|
||||
function fn_certPhoneDel(mbtlnum){
|
||||
var mberId = $('#cashUserId').val();
|
||||
var mbtlnum = mbtlnum;
|
||||
|
||||
var params = {
|
||||
"mberId" : mberId
|
||||
, "mbtlnum" : mbtlnum
|
||||
}
|
||||
console.log('params : ', params);
|
||||
|
||||
if(!confirm(mbtlnum+" 번호를 정말 삭제하시겠습니까?")){
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/uss/umt/user/deleteCertPhone.do",
|
||||
data: params,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (returnData) {
|
||||
|
||||
console.log('returnData : ', returnData);
|
||||
if(returnData.status == 'OK'){
|
||||
alert(returnData.message);
|
||||
location.reload();
|
||||
}else{
|
||||
alert("오류가 발생하였습니다.");
|
||||
}
|
||||
},
|
||||
error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
//이벤트 수정하기
|
||||
function fn_certPhoneDel(mbtlnum){
|
||||
@ -2242,7 +2208,7 @@ function fn_certPhoneDel(mbtlnum){
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/uss/umt/user/deleteCertPhone.do",
|
||||
url: "/cert/phone/deleteCertPhone.do",
|
||||
data: params,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
|
||||
@ -39,15 +39,14 @@ $(document).ready(function() {
|
||||
|
||||
|
||||
//개인정보처리방침 팝업 날짜 설정
|
||||
var agreePrivateSDate = "2024-11-06";
|
||||
var agreePrivateSDate = "2024-11-23";
|
||||
var agreePrivateNow = new Date();
|
||||
agreePrivateNow = leadingZeros(agreePrivateNow.getFullYear(), 4) + '-' + leadingZeros(agreePrivateNow.getMonth() + 1, 2) + '-' + leadingZeros(agreePrivateNow.getDate(), 2);
|
||||
|
||||
if (agreePrivateNow < agreePrivateSDate) {
|
||||
$("#agreePrivatePop_20241105").show();
|
||||
$("#agreePrivatePop_20241119").show();
|
||||
$("#agreePrivatePop_20241106").hide();
|
||||
}else{
|
||||
$("#agreePrivatePop_20241105").hide();
|
||||
$("#agreePrivatePop_20241119").hide();
|
||||
$("#agreePrivatePop_20241106").show();
|
||||
}
|
||||
|
||||
@ -1211,7 +1210,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
|
||||
</div>
|
||||
|
||||
<!-- 20241028 이용약관, 개인정보처리방침 팝업 -->
|
||||
<div class="layer_popup agreePrivatePop" id="agreePrivatePop_20241105">
|
||||
<div class="layer_popup agreePrivatePop" id="agreePrivatePop_20241105" style="display: none;">
|
||||
<div class="layer_popup_cont">
|
||||
<img src="/publish/images/main/popup04_241028.jpg" alt="이용약관, 개인정보처리방침 개정 안내 변함없는 문자온 서비스 이용에 감사의 말씀 드립니다. 당사 이용약관 및 개인정보처리방침이 개정되오니 서비스 이용에 참고하시기 바랍니다. 이용약관 공지사항 개인정보처리방침 공지사항 항상 최선의 서비스를 제공할 수 있도록 노력하겠습니다. 감사합니다." usemap="#popup-service-map">
|
||||
<map name="popup-service-map">
|
||||
@ -1225,7 +1224,7 @@ function fn_click_banner_add_stat(bannerMenuCode){
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 20241105 이용약관 팝업 -->
|
||||
<!-- 20241105 이용약관 팝업 -->
|
||||
<div class="layer_popup agreePrivatePop" id="agreePrivatePop_20241106">
|
||||
<div class="layer_popup_cont">
|
||||
<img src="/publish/images/main/popup04_241105.jpg" alt="이용약관 개정 안내 변함없는 문자온 서비스 이용에 감사의 말씀 드립니다. 당사 이용약관이 개정되오니 서비스 이용에 참고하시기 바랍니다. 이용약관 공지사항 항상 최선의 서비스를 제공할 수 있도록 노력하겠습니다. 감사합니다." usemap="#popup-use-map">
|
||||
@ -1239,6 +1238,38 @@ function fn_click_banner_add_stat(bannerMenuCode){
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 세로가 짧은 팝업 2개일때 -->
|
||||
<div class="popup_range" id="agreePrivatePop_20241119">
|
||||
<!-- 20241119 보안강화 인증 수단 도입 안내 팝업 -->
|
||||
<div class="layer_popup agreePrivatePop" style="margin: 0 0 20px 30px;">
|
||||
<div class="layer_popup_cont">
|
||||
<img src="/publish/images/main/popup06_241119.jpg" alt="보안강화 인증수단 도입 안내 2024년 11월 17일자로 보안강화를 위해 서비스 로그인 시 휴대폰 본인인증 기능을 도입하였으니 서비스 이용에 참고하시기 바랍니다." usemap="#popup-user-map" style="height:220px; width:413px;">
|
||||
<map name="popup-user-map">
|
||||
<area href="https://www.munjaon.co.kr/web/cop/bbs/NoticeDetail.do?bbsId=BBSMSTR_000000000723&nttId=720" coords="65,148,345,182" shape="rect">
|
||||
</map>
|
||||
</div>
|
||||
<div class="popup_btm">
|
||||
<input type="checkbox" id="agreePrivatePop" name="agreePrivatePop" onclick="javascript:fnPopupChk('agreePrivatePop' , 'layer')"><label for="agreePrivatePop">3일간 열지 않음</label>
|
||||
<button type="button" class="popup_close agreePrivatePopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 20241119 이용약관 팝업 -->
|
||||
<div class="layer_popup agreePrivatePop">
|
||||
<div class="layer_popup_cont">
|
||||
<img src="/publish/images/main/popup04_241119.jpg" alt="이용약관 개정 안내 변함없는 문자온 서비스 이용에 감사의 말씀 드립니다. 당사 이용약관이 개정되오니 서비스 이용에 참고하시기 바랍니다." usemap="#popup-use-map1" style="height:220px; width:413px;">
|
||||
<map name="popup-use-map1">
|
||||
<area href="https://www.munjaon.co.kr/web/cop/bbs/NoticeDetail.do?bbsId=BBSMSTR_000000000721&nttId=700" coords="65,148,345,182" shape="rect">
|
||||
</map>
|
||||
</div>
|
||||
<div class="popup_btm">
|
||||
<input type="checkbox" id="agreePrivatePop" name="agreePrivatePop" onclick="javascript:fnPopupChk('agreePrivatePop' , 'layer')"><label for="agreePrivatePop">3일간 열지 않음</label>
|
||||
<button type="button" class="popup_close agreePrivatePopClose"><img src="/publish/images/main/btn_popup_close01.png" alt="팝업닫기"></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--// 세로가 짧은 팝업 2개일때 -->
|
||||
|
||||
<div class="layer_popup payEventPop">
|
||||
<div class="layer_popup_cont">
|
||||
<img src="/publish/images/main/popup01.jpg" alt="단 한 번! 인생 최저가! 저세상 파격 특가! 누구나 첫 결제시 단문 7.5원 장문 32원 그림 59원 문자온만의 파격적인 최저가 혜택 지금 바로 만나보세요 결제 바로가기 이벤트 혜택은 본 페이지에서 결제하시는 경우에만 적용됩니다." usemap="#popup-map">
|
||||
|
||||
@ -51,9 +51,6 @@ $(document).ready(function(){
|
||||
|
||||
|
||||
|
||||
$('#showLoginBtn').on('click', function() {
|
||||
$('.security_login').fadeIn(); // 서서히 나타나도록 설정
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
@ -64,17 +61,176 @@ $(document).ready(function(){
|
||||
|
||||
$('#showLoginBtn').on('click', function() {
|
||||
if ($('#securityLogin').is(':visible')) {
|
||||
$('#securityLogin').fadeOut(); // 서서히 사라짐
|
||||
$(this).text('보안 로그인 표시'); // 버튼 텍스트 변경
|
||||
$('#securityLogin').hide();
|
||||
} else {
|
||||
$('#securityLogin').fadeIn(); // 서서히 나타남
|
||||
$(this).text('보안 로그인 숨기기'); // 버튼 텍스트 변경
|
||||
$('#securityLogin').show();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
// IP 추가 버튼 클릭 시 tr 추가
|
||||
$(".btn_ip_plus").click(function () {
|
||||
// 추가할 HTML 구조
|
||||
const ipTr = `
|
||||
<tr class="ip-new">
|
||||
<td><input type="text" class="input_text"
|
||||
oninput="this.value = this.value.replace(/[^0-9.]/g, '');" maxlength="15"/></td>
|
||||
<td><input type="text" class="input_text"></td>
|
||||
<td>-</td>
|
||||
<td>
|
||||
<button type="button" class="btnType btnType5" id="ipRegBtn">등록</button>
|
||||
</td>
|
||||
</tr>
|
||||
`;
|
||||
|
||||
// 이미 추가된 `.ip-row`가 있는지 확인
|
||||
if ($(".ip_table tbody .ip-new").length === 0) {
|
||||
$(".ip_table tbody").prepend(ipTr); // 중복되지 않으면 추가
|
||||
} else {
|
||||
alert("이미 추가된 항목이 있습니다.");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// IP 등록버튼
|
||||
$(document).on('click', '#ipRegBtn', function () {
|
||||
// 현재 클릭된 버튼의 부모 tr 요소
|
||||
const $currentRow = $(this).closest('tr');
|
||||
|
||||
// 입력값 가져오기
|
||||
const ipValue = $currentRow.find('td:eq(0) input').val(); // 첫 번째 열 (IP)
|
||||
const memoValue = $currentRow.find('td:eq(1) input').val(); // 두 번째 열 (메모)
|
||||
|
||||
// 예외 처리
|
||||
if (!ipValue) {
|
||||
alert("등록할 IP를 입력해주세요.");
|
||||
$currentRow.find('td:eq(0) input').focus();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
|
||||
|
||||
if (!ipRegex.test(ipValue)) {
|
||||
alert("유효하지 않은 IP 주소입니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var params = {
|
||||
"certIp" : ipValue
|
||||
, "certMemo" : memoValue
|
||||
}
|
||||
|
||||
if(!confirm("IP를 등록 하시겠습니까?")){
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/cert/ip/insertCertIp.do",
|
||||
data: params,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (returnData) {
|
||||
if(returnData.status == 'OK'){
|
||||
findAllCertIp();
|
||||
}else if(returnData.status == 'CONFLICT'){
|
||||
alert(returnData.message);
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("오류가 발생하였습니다.");
|
||||
}
|
||||
},
|
||||
error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
findAllCertIp();
|
||||
});
|
||||
|
||||
|
||||
function findAllCertIp(){
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/cert/ip/selectMberCertIpList.do",
|
||||
data: null,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (returnData) {
|
||||
if (returnData.status === "OK") {
|
||||
const objects = returnData.object; // 배열 데이터
|
||||
|
||||
// tbody의 기존 내용 삭제
|
||||
const $tbody = $(".ip_table tbody");
|
||||
$tbody.empty();
|
||||
|
||||
// 배열 데이터를 기반으로 tr 생성 후 tbody에 추가
|
||||
$.each(objects, function(index, obj) {
|
||||
const $tr = $("<tr></tr>"); // tr 요소 생성
|
||||
|
||||
// 각 td 요소 생성
|
||||
const $certIp = $("<td></td>").text(obj.certIp || "");
|
||||
const $certMemo = $("<td></td>").text(obj.certMemo || "");
|
||||
const $frstRegistPnttm = $("<td></td>").text(obj.frstRegistPnttm || "등록되지 않음");
|
||||
const $deleteBtn = $("<button></button>")
|
||||
.addClass("btnType btn_text btn_lightgray fill btn_28")
|
||||
.text("삭제")
|
||||
.attr("type", "button")
|
||||
.attr("id", "ipDelBtn")
|
||||
.on("click", function() {
|
||||
deleteRow(obj.certIp); // 삭제 버튼 클릭 시 실행
|
||||
});
|
||||
|
||||
// 관리 버튼을 감쌀 td 생성
|
||||
const $deleteTd = $("<td></td>").append($deleteBtn);
|
||||
|
||||
// tr에 td 추가
|
||||
$tr.append($certIp, $certMemo, $frstRegistPnttm, $deleteTd);
|
||||
|
||||
// tbody에 tr 추가
|
||||
$tbody.append($tr);
|
||||
});
|
||||
} else {
|
||||
alert("데이터를 불러오는 데 실패했습니다.");
|
||||
}
|
||||
},
|
||||
error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
||||
});
|
||||
}
|
||||
|
||||
// IP 삭제
|
||||
function deleteRow(p_ip){
|
||||
|
||||
var params = {
|
||||
"certIp" : p_ip
|
||||
}
|
||||
if(!confirm("IP를 삭제 하시겠습니까?")){
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/cert/ip/deleteCertIp.do",
|
||||
data: params,
|
||||
dataType:'json',
|
||||
async: false,
|
||||
success: function (returnData) {
|
||||
if(returnData.status == 'OK'){
|
||||
findAllCertIp();
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("오류가 발생하였습니다.");
|
||||
}
|
||||
},
|
||||
error: function (e) { alert("오류가 발생하였습니다."); console.log("ERROR : ", e); }
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//기간 요일 지정
|
||||
function setCalVal(val,targetObj){
|
||||
$('input[name='+targetObj+']').val(val) ;
|
||||
@ -280,8 +436,47 @@ function getMberGrdChk() {
|
||||
});
|
||||
}
|
||||
|
||||
//휴대푠 번호 등록 [시작]--------------------------------------------------------------------------------------------
|
||||
window.name = "kmcis_web_sample";
|
||||
var KMCIS_window;
|
||||
//휴대폰 인증팝업 열기
|
||||
function openKMCISWindow(){
|
||||
var UserAgent = navigator.userAgent;
|
||||
/* 모바일 접근 체크*/
|
||||
// 모바일일 경우 (변동사항 있을경우 추가 필요)
|
||||
if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null) {
|
||||
document.reqKMCISForm.target = 'KMCISWindow'; // 모바일
|
||||
} else { // 모바일이 아닐 경우
|
||||
KMCIS_window = window.open('', 'KMCISWindow', 'width=425, height=550, resizable=0, scrollbars=no, status=0, titlebar=0, toolbar=0, left=435, top=250' );
|
||||
|
||||
if(KMCIS_window == null){
|
||||
alert(" ※ 윈도우 XP SP2 또는 인터넷 익스플로러 7 사용자일 경우에는 \n 화면 상단에 있는 팝업 차단 알림줄을 클릭하여 팝업을 허용해 주시기 바랍니다. \n\n※ MSN,야후,구글 팝업 차단 툴바가 설치된 경우 팝업허용을 해주시기 바랍니다.");
|
||||
}
|
||||
|
||||
document.reqKMCISForm.target = 'KMCISWindow';
|
||||
}
|
||||
|
||||
document.reqKMCISForm.action = 'https://www.kmcert.com/kmcis/web/kmcisReq.jsp';
|
||||
document.reqKMCISForm.submit();
|
||||
}
|
||||
|
||||
// /web/user/selectSecurityAuthn.do 리다이렉트 URL
|
||||
|
||||
//자식창에서 호출
|
||||
function callTo() {
|
||||
alert("호출입니다.");
|
||||
}
|
||||
|
||||
//휴대푠 번호 등록 [끝]--------------------------------------------------------------------------------------------
|
||||
|
||||
</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 id="levelForm" name="levelForm" method="post">
|
||||
<input type="hidden" id="pageType" name="pageType" value=""/>
|
||||
<input type="hidden" id="pageIndex" name="pageIndex" value=""/>
|
||||
@ -511,8 +706,8 @@ function getMberGrdChk() {
|
||||
<!-- 보안로그인 -->
|
||||
<!-- 보안로그인 -->
|
||||
<!-- 보안로그인 -->
|
||||
<!-- <div class="security_login" id="showLoginBtn" style="display: none;"> -->
|
||||
<div class="security_login" id="securityLogin" style="display: none;">
|
||||
<!-- <div class="security_login" id="securityLogin" style="display: none;"> -->
|
||||
<div class="security_login" id="securityLogin">
|
||||
|
||||
<ul class="explanation_wrap box info">
|
||||
<li>· 사이트 부정로그인으로 인한 피해를 방지할 수 있는 2차 로그인 인증 서비스입니다. </li>
|
||||
@ -529,7 +724,7 @@ function getMberGrdChk() {
|
||||
<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" onclick="openKMCISWindow()">ON</a>
|
||||
<a href="#none">OFF</a>
|
||||
</div>
|
||||
</div>
|
||||
@ -544,7 +739,7 @@ function getMberGrdChk() {
|
||||
<p>접속 IP를 미리 등록할 경우 2차 로그인 인증 없이 접속이 가능합니다. <br>
|
||||
<span>(공용 PC는 보안상의 이유로 등록을 권장하지 않습니다.)</span></p>
|
||||
</div>
|
||||
<button type="button" class="btn_plus btn_ip_plus"><img src="/publish/images/content/mypage_plus.png" alt="더보기"></button>
|
||||
<button type="button" class="btn_plus btn_ip_plus"><img src="/publish/images/content/mypage_plus.png" alt="등록버튼"></button>
|
||||
</div>
|
||||
|
||||
<div class="table_wrap ip_table">
|
||||
@ -565,16 +760,7 @@ function getMberGrdChk() {
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><input type="text" class="input_text"></td>
|
||||
<td><input type="text" class="input_text"></td>
|
||||
<td>-</td>
|
||||
<td><button type="button" class="btnType btnType5">등록</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>192.168.0.0</td>
|
||||
<td>dadfadfjadkfjalkdjfajflajdlfjaldjflajd</td>
|
||||
<td>2024-11-11 11:11</td>
|
||||
<td><button type="button" class="btnType btn_text btn_lightgray fill btn_28">삭제</button></td>
|
||||
<td colspan="4">등록된 IP 주소가 없습니다.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
29
src/main/webapp/WEB-INF/jsp/web/user/securityAuthnPage.jsp
Normal file
29
src/main/webapp/WEB-INF/jsp/web/user/securityAuthnPage.jsp
Normal file
@ -0,0 +1,29 @@
|
||||
<%@ page contentType="text/html; charset=utf-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%
|
||||
//************************************************************************
|
||||
// //
|
||||
// 본 샘플소스는 개발 및 테스트를 위한 목적으로 만들어졌으며, //
|
||||
// //
|
||||
// 실제 서비스에 그대로 사용하는 것을 금합니다. //
|
||||
// //
|
||||
//************************************************************************
|
||||
%>
|
||||
<!-- [본인인증서비스 테스트 결과 수신 Sample] <br> <br> -->
|
||||
<script src="<c:url value='/js/jquery.js' />"></script>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="robots" content="noindex">
|
||||
|
||||
<script language=javascript>
|
||||
opener.callTo();
|
||||
self.close();
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
Binary file not shown.
@ -2233,6 +2233,58 @@ button.check_validity:hover {border: 1px solid #a3a3a3;box-shadow: 0px 0px 5px
|
||||
.clause_new ol.conlist8 li {font-weight: 300; position: relative; padding:0px 7px 2px 0; line-height: 1.4; font-size:16px; }
|
||||
.clause_new ol.conlist8 li::before {content:"";}
|
||||
|
||||
/* 불법스팸방지정책_2024*/
|
||||
.spam_content .title .red{margin: 0 0 0 3px; font-size: 16px; color: #e40000; font-weight: 500; }
|
||||
.spam_content .spam_conbox .blue{color: #002c9a; font-weight: 400;}
|
||||
.spam_content .spam_conbox .bold{font-weight: 500;}
|
||||
.spam_content .spam_conbox .text{margin: 0 0 0 -8px;}
|
||||
.spam_content .spam_conbox .tri_te span{font-size: 14px;}
|
||||
.spam_content .spam_conbox .le{margin: 0 0 0 -8px;}
|
||||
/*.spam_content .spam_conbox.spam_table{padding: 0;}*/
|
||||
|
||||
/*4번 수정후*/
|
||||
.spam_content .spam_conbox .spam_clause .tit{width: 200px; padding: 6px 0 7px 0; margin: 0 0 10px 9px; background-color: #002c9a; color: #ffffff; text-align: center; font-size: 15px; font-weight: 500; border-radius: 100px;}
|
||||
.spam_content .spam_conbox .spam_clause{padding: 22px 16px; margin: 20px 0 0 0; border: 1px solid #d5d5d5; border-radius: 5px;}
|
||||
.spam_content .spam_conbox .spam_clause .spam_clause_cen{margin: 12px 0;}
|
||||
.spam_content .spam_conbox .spam_clause ul li{padding: 0 7px 0 18px; font-size: 15px; line-height: 1.4;}
|
||||
.spam_content .spam_conbox .spam_clause ul li::before{content: none;}
|
||||
.spam_content .spam_conbox .spam_clause ul .str strong{margin: 0 0 0 -15px; display: inline;}
|
||||
.spam_content .spam_conbox .spam_clause ul .str strong::before{content: "제";}
|
||||
.spam_content .spam_conbox .spam_clause .spam_clause_gray{margin: 7PX 0 7px 0; padding: 18px 23px 15px 23px; border-radius: 5px; background-color: #f5f5f5;}
|
||||
.spam_content .spam_conbox .spam_clause ul li strong{font-size: 14px;}
|
||||
.spam_content .spam_conbox .spam_clause .spam_clause_gray li{font-size: 14px; color: #666666;}
|
||||
.spam_content .spam_conbox .spam_clause .conlist8{padding: 0; margin: 0 0 0 -7px;}
|
||||
|
||||
.spam_content .spam_conbox .tType1{margin: 15px 0 0 0;}
|
||||
.spam_content .spam_conbox .tType1 tbody tr{border-bottom: 1px solid #d5d5d5;}
|
||||
.spam_content .spam_conbox .tType1 tbody tr th{padding: 0 0 0 22px; font-weight: 500; background-color: #e8f0ff;}
|
||||
.spam_content .spam_conbox .tType1 tbody tr td{padding: 16px 10px 16px 30px; line-height: 1.5;}
|
||||
.spam_content .spam_conbox .tType1 tbody tr td .conlist7{letter-spacing: -0.25px;}
|
||||
.spam_content .spam_conbox .tType1 tbody tr td li{font-size: 16px;}
|
||||
.spam_content .spam_conbox .tType1 tbody tr td li strong{display: inline; margin: 0 7px 0 -16px; font-size: 17px;}
|
||||
.spam_content .spam_conbox .tType1 tbody tr td li .conlist8{padding: 0 0 0 10px;}
|
||||
.spam_content .spam_conbox .spam_title{margin: 9px 0 -5px 0; font-weight: 500;}
|
||||
.spam_content .spam_conbox .spam_list.spam_list_tw{margin: 21px 0 0 5px;}
|
||||
.spam_content .spam_conbox ul.spam_list{margin: 15px 0 0 7px;}
|
||||
.spam_content .spam_conbox .spam_list li{margin: 0 0 0 18px;}
|
||||
.spam_content .spam_conbox .spam_list .center{margin: 13px 0 5px 18px;}
|
||||
.spam_content .spam_conbox .spam_list .last{margin: 17px 0 0 18px;}
|
||||
.spam_content .spam_conbox .spam_gray{margin: 12px 25px 0 0; padding: 20px 12px; border-radius: 5px; background-color: #f5f5f5;}
|
||||
.spam_content .spam_conbox ul.spam_gray li{font-size: 15px;}
|
||||
.spam_content .spam_conbox ul.conlist2 li .spam_gray li::marker{content: "·";}
|
||||
.spam_content .spam_conbox ul.conlist2 li .spam_gray .mark::marker{content: none;}
|
||||
.spam_content .spam_conbox ul.conlist2 li .spam_gray .mark{ margin: 0 0 6px 35px; text-indent: -18px; color: #666666;}
|
||||
.spam_content .spam_conbox ul.conlist2 li .spam_gray li .bold{font-weight: 500;}
|
||||
.spam_content .spam_conbox ul.conlist2 li .spam_gray_tw li::marker{content: none;}
|
||||
.spam_content .spam_conbox ul.conlist2 li .spam_gray_tw li .sub_tit{font-size: 16px; font-weight: 500;}
|
||||
.spam_content .spam_conbox ul.conlist2 li .spam_gray_tw li .sub_te li::marker{content: "·";}
|
||||
.spam_content .spam_conbox ul.conlist2 li .spam_gray_tw li .sub_te{margin: 7px 0 -4px -14px;}
|
||||
.spam_content .spam_conbox ul.conlist2 li .spam_gray_tw li .sub_te_on{margin: 7px 0 8px -14px;}
|
||||
|
||||
.spam_content .spam_conbox .spam_table thead tr th{font-weight: 400;}
|
||||
.spam_content .spam_conbox .spam_table tbody tr th{font-weight: 300;}
|
||||
.spam_content .spam_conbox .spam_table tbody tr td{text-align: left;}
|
||||
.spam_content .spam_conbox .spam_table tbody tr td li .conlist8{padding: 0 0 0 18px;}
|
||||
|
||||
@keyframes rotate-loading {
|
||||
0% {transform:rotate(0)}
|
||||
|
||||
@ -58,6 +58,7 @@
|
||||
.layer_popup_wrap02 .layer_popup:first-child{margin-left: 0;}
|
||||
.layer_popup_wrap02 .layer_popup:last-child{margin-right: 0;}
|
||||
.layer_popup_wrap02 .popup_inner{position: relative; display: flex; width: 100%; height: 100%; vertical-align: middle; justify-content: center; align-items: center;}
|
||||
.layer_popup_wrap .popup_range {display:flex; flex-direction:column;}
|
||||
|
||||
/* layer_tType1 */
|
||||
.popTable_wrap {border: 1px solid #ccc; border-radius: 5px;}
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
<!-- <p>***<span class="font1"> (컨텐츠)</span> : 반복적으로 사용 안함</p>
|
||||
<p>***<span class="font2"> (보드)</span> : 반복적으로 사용</p> -->
|
||||
<ul class="page">
|
||||
<li><a href="/publish/service3_spam_2024.html">service3_spam_2024.html</a>불법스팸방지정책 (2024.11.29)</li>
|
||||
<li><a href="/publish/service1_2024.html">service1_2024.html</a>이용약관 (2024.11.29)</li>
|
||||
<li><a href="/publish/service1_2023.html">service1_2023.html</a>이용약관 (2023.04.26~2024.11.28)</li>
|
||||
<li><a href="/publish/service1_2022.html">service1_2022.html</a>이용약관 (2022.08.01~2023.04.25)</li>
|
||||
|
||||
BIN
src/main/webapp/publish/images/main/popup04_241119.jpg
Normal file
BIN
src/main/webapp/publish/images/main/popup04_241119.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
BIN
src/main/webapp/publish/images/main/popup06_241119.jpg
Normal file
BIN
src/main/webapp/publish/images/main/popup06_241119.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
892
src/main/webapp/publish/service3_spam_2024.html
Normal file
892
src/main/webapp/publish/service3_spam_2024.html
Normal file
@ -0,0 +1,892 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ko">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>문자온</title>
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100;300;400;500;700;900&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="/publish/css/reset.css">
|
||||
<link rel="stylesheet" href="/publish/css/jquery.mCustomScrollbar.css">
|
||||
<link rel="stylesheet" href="/publish/css/common.css">
|
||||
<link rel="stylesheet" href="/publish/css/button.css">
|
||||
<link rel="stylesheet" href="/publish/css/content.css">
|
||||
<link rel="stylesheet" href="/publish/css/mem.css">
|
||||
<link rel="stylesheet" href="/publish/css/font.css">
|
||||
<link rel="stylesheet" href="/publish/css/popupLayer.css">
|
||||
|
||||
|
||||
<script src="/publish/js/jquery-3.5.0.js"></script>
|
||||
<script src="/publish/js/jquery.mCustomScrollbar.concat.min.js"></script>
|
||||
<script src="/publish/js/common.js"></script>
|
||||
<script src="/publish/js/content.js"></script>
|
||||
<script src="/publish/js/calendar.js"></script>
|
||||
<script src="/publish/js/popupLayer.js"></script>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$(".version_change_select").change(function () {
|
||||
window.open("/publish/popup_clause_list.html", "_blank", "width=650, height=700, top=100, left=100, fullscreen=no, menubar=no, status=no, toolbar=no, titlebar=yes, location=no, scrollbars=yes");
|
||||
});
|
||||
|
||||
$(".privacy_index_box a").click(function(){
|
||||
var idxHref = $(this).attr("href");
|
||||
var idxSct = $(idxHref).offset().top - 196;
|
||||
$("html,body").animate({
|
||||
scrollTop:idxSct
|
||||
},400)
|
||||
});
|
||||
|
||||
})
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="mask"></div>
|
||||
<!-- skip 메뉴 -->
|
||||
<div class="skip_menu">
|
||||
<a href="#cont" title="본문 바로가기" class="contGo">본문 바로가기</a>
|
||||
</div>
|
||||
<!--// skip 메뉴 -->
|
||||
<!-- quick 메뉴 -->
|
||||
<div class="quickMenu">
|
||||
<div>
|
||||
<p class="quick_title">QUICK<br>MENU</p>
|
||||
<p class="quick_title2">QUICK</p>
|
||||
<ul class="quickMenuIn">
|
||||
<li>
|
||||
<a href="/publish/index.html"><i class="quick1"></i><span>이용안내</span></a>
|
||||
<div class="hover_cont">이용안내</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="quick2"></i><span>채팅상담</span></a>
|
||||
<div class="hover_cont">채팅상담</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="quick3"></i><span>원격지원</span></a>
|
||||
<div class="hover_cont">원격지원</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="quick4"></i><span>맞춤제작</span></a>
|
||||
<div class="hover_cont">맞춤제작</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="quick5"></i><span>주소록 등록</span></a>
|
||||
<div class="hover_cont">주소록 등록</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="quick6"></i><span>엑셀 전송</span></a>
|
||||
<div class="hover_cont">엑셀 대량전송</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="quick7"></i><span>견적서</span></a>
|
||||
<div class="hover_cont">견적서</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="quick8"></i><span>결제</span></a>
|
||||
<div class="hover_cont">결제</div>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#"><i class="quick9"></i><span>영수증/계산서</span></a>
|
||||
<div class="hover_cont">영수증/계산서</div>
|
||||
</li>
|
||||
</ul>
|
||||
<button type="button" class="goTop" title="맨 위로 이동">TOP<i></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<!--// quick 메뉴 -->
|
||||
<!-- header 영역 -->
|
||||
<header id="header" class="header">
|
||||
<!-- header top 영역 -->
|
||||
<div class="header_top">
|
||||
<div class="inner">
|
||||
<ul class="menu_left">
|
||||
<li><a href="#"><i class="hdTop_fav"></i>즐겨찾기추가</a></li>
|
||||
<li><a href="#"><i class="hdTop_mypage"></i>마이페이지</a></li>
|
||||
<li><a href="#"><i class="hdTop_center"></i>고객센터</a></li>
|
||||
</ul>
|
||||
<ul class="menu_right">
|
||||
<li><a href="#">충전하기</a></li>
|
||||
<li class="SortLine"><a href="#">요금안내</a></li>
|
||||
<li class="SortLine"><a href="#">이용안내</a></li>
|
||||
<li class="SortLine"><a href="#">1:1고객상담</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div><!-- header top 영역 -->
|
||||
<!-- header body 영역 -->
|
||||
<div class="header_body">
|
||||
<div class="inner table">
|
||||
<h1 class="logo"><a href="/publish/index.html" alt="문자온 메인 바로가기"><img src="/publish/images/CI.png" alt="문자온 CI"></a></h1>
|
||||
<ul class="gnbWrap table_cell">
|
||||
<li><a href="#">문자발송</a></li>
|
||||
<li><a href="#">선거문자</a></li>
|
||||
<li><a href="#">맞춤제작</a></li>
|
||||
<li><a href="#">비즈톡</a></li>
|
||||
<li><a href="#">주소록 관리</a></li>
|
||||
<li><a href="#">발송결과</a></li>
|
||||
<li><a href="#">예약관리</a></li>
|
||||
<li><a href="#">결제내역</a></li>
|
||||
</ul>
|
||||
<div class="s_menu">
|
||||
<i class="allSearch_info"><span>문자검색</span></i>
|
||||
<button type="button" title="전체검색" class="allSearch" onclick="searchToggle();"><img src="/publish/images/search.png" alt="검색영역 열기" class="allMenu"></button>
|
||||
<button type="button" title="전체메뉴"><img src="/publish/images/all_menu.png" alt="전체메뉴 열기"></button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- search popup 영역 -->
|
||||
<div class="pop_search">
|
||||
<div class="inner">
|
||||
<div class="area_search">
|
||||
<select name="" id="">
|
||||
<option value="">그림문자</option>
|
||||
<option value="">단문문자</option>
|
||||
<option value="">장문문자</option>
|
||||
<option value="">GIF</option>
|
||||
</select>
|
||||
<input type="text" placeholder="문자샘플 검색하기">
|
||||
<button><img src="/publish/images/search02.png" alt=""></button>
|
||||
</div>
|
||||
<div class="area_popular">
|
||||
<p><i></i>인기검색어</p>
|
||||
<ul class="popular_tag">
|
||||
<li><a href="#">#정월대보름</a></li>
|
||||
<li class="on"><a href="#">#추석</a></li>
|
||||
<li><a href="#">#가을인사</a></li>
|
||||
<li><a href="#">#좋은하루</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<button class="btn_close" onclick="searchToggle();"><img src="/publish/images/btn_searchclose.png" alt=""></button>
|
||||
</div>
|
||||
</div>
|
||||
<!--// search popup 영역 -->
|
||||
</div>
|
||||
<!--// header body 영역 -->
|
||||
<div id="login" class="login">
|
||||
<div class="inner table">
|
||||
<div class="login_left table_cell">
|
||||
<div class="login_put">
|
||||
<label for="id_text" class="label"></label>
|
||||
<input type="text" placeholder="아이디를 입력해주세요" id="id_text" class="id_text" maxlength="30" size="18">
|
||||
<label for="password_text" class="label"></label>
|
||||
<input type="password" placeholder="비밀번호를 입력해주세요" id="password_text" class="password_text" maxlength="30" size="18">
|
||||
<label for="login_button" class="label"></label>
|
||||
<button type="submit" class="btnType btnType1" class="login_button">로그인</button>
|
||||
</div>
|
||||
<div class="login_save">
|
||||
<input type="checkbox" id="save_id">
|
||||
<label for="save_id">아이디 저장</label>
|
||||
</div>
|
||||
<div class="login_find">
|
||||
<a href="#">아이디찾기 /</a>
|
||||
<a href="#">비밀번호 찾기</a>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" class="btnType btnType2">회원가입</button>
|
||||
<button type="button" class="btnType btnType3">둘러보기</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="login_right">
|
||||
<span><i></i>이달의 이벤트</span>
|
||||
<button type="button" class="btnType btnType4">바로가기</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--// login 영역 -->
|
||||
</header>
|
||||
<!--// header 영역 -->
|
||||
<!-- login 영역 -->
|
||||
<!-- content 영역 -->
|
||||
<div id="container" class="cont sub">
|
||||
<div class="inner">
|
||||
<!-- send top -->
|
||||
<div class="send_top">
|
||||
<!-- tab button -->
|
||||
<ul class="tabType4">
|
||||
<li class="tab"><button type="button" onclick="TabType5(this,'1');">공지사항</button></li>
|
||||
<li class="tab active"><button type="button" onclick="TabType5(this,'2');">이용안내</button></li>
|
||||
<li class="tab"><button type="button" onclick="TabType5(this,'3');">자주하는 질문</button></li>
|
||||
<li class="tab"><button type="button" onclick="TabType5(this,'4');">1:1 문의</button></li>
|
||||
<li class="tab"><button type="button" onclick="TabType5(this,'5');">이벤트</button></li>
|
||||
</ul>
|
||||
<!--// tab button -->
|
||||
<!-- 고객센터 - 이용약관 -->
|
||||
<div class="serv_content current" id="tab5_2">
|
||||
<div class="heading">
|
||||
<h2>이용안내</h2>
|
||||
</div>
|
||||
<div class="pay_tab_wrap">
|
||||
<!-- tab button -->
|
||||
<ul class="tabType1">
|
||||
<li class="tab"><button type="button" onclick="TabType1(this,'1');">이용약관 v2.0</button></li>
|
||||
<li class="tab"><button type="button" onclick="TabType1(this,'2');">개인정보처리방침 v2.0</button></li>
|
||||
<li class="tab active"><button type="button" onclick="TabType1(this,'3');">불법스팸방지안내</button></li>
|
||||
</ul>
|
||||
<!--// tab button -->
|
||||
</div>
|
||||
|
||||
<!-- 불법스팸방지정책 -->
|
||||
<div class="pay_cont current spam_cont_wrap" id="tab1_3">
|
||||
<div class="kisa_guidebook">
|
||||
<!--<a href="/download/msg/불법스팸_방지_안내서_제5차_개정판.pdf" target="_blank" class="download_button">KISA 불법 스팸방지를 위한 정보통신망법 안내서</a>-->
|
||||
<a href="/download/msg/K003_불법스팸_방지_안내서_제6차_개정판(수정_2024년).pdf" target="_blank" class="download_button">KISA 불법 스팸방지를 위한 정보통신망법 안내서</a>
|
||||
</div>
|
||||
<div class="titBox_type01">
|
||||
주식회사 아이티앤(이하 "회사”라 한다)은 편리한 서비스 이용과 스팸, 불법스팸으로 인한 폐해를 방지하기 위해 스팸방지정책을 수립하여 운영하고 있습니다. 회사가 제공하는 인터넷
|
||||
서비스 문자온(www.munjaon.co.kr, 이하 “서비스”)을 이용함에 있어, 아래와 같이 불법스팸(문자, 팩스, 음성, 메일)을 발송한 이용자에 대해서는 이용정지 및 해지, 형사고발 등의
|
||||
조치를 취하겠습니다.
|
||||
</div>
|
||||
<div class="privacy_index">
|
||||
<p class="title">목차</p>
|
||||
<p class="info">불법스팸방지정책은 다음과 같은 내용을 담고 있습니다.</p>
|
||||
<div class="privacy_index_box">
|
||||
<ul>
|
||||
<li><a href="#spam01">1. 용어의 정의</a></li>
|
||||
<li><a href="#spam02">2. 이용자의 의무</a></li>
|
||||
<li><a href="#spam03">3. 발송 시 유의사항</a></li>
|
||||
<li><a href="#spam04">4. 스팸방지 관련 약관 공지</a></li>
|
||||
<li><a href="#spam05">5. 명시적인 사전 동의</a></li>
|
||||
<li><a href="#spam06">6. 거래관계를 통한 사전 동의 의무 예외</a></li>
|
||||
<li><a href="#spam07">7. 수신거부 및 사전동의 철회</a></li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li><a href="#spam08">8. 야간광고 전송제한 및 예외</a></li>
|
||||
<li><a href="#spam09">9. 광고성 정보 전송 시 명시사항</a></li>
|
||||
<li><a href="#spam10">10. 광고성 정보 전송자 금지사항</a></li>
|
||||
<li><a href="#spam11">11. 수신거부 및 수신동의 철회 시 비용 발생 금지</a></li>
|
||||
<li><a href="#spam12">12. 수신동의 여부 확인</a></li>
|
||||
<li><a href="#spam13">13. 법률에서 금지하는 광고성 정보의 전송 금지</a></li>
|
||||
<li><a href="#spam14">14. 불법스팸 신고</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam01">1. 용어의 정의</p>
|
||||
<div class="conbox spam_conbox">
|
||||
<p>이 불법스팸방지정책에서 사용하는 용어의 정의는 다음과 같습니다.</p>
|
||||
<ul class="conlist2 ">
|
||||
<li>스팸 : 정보통신망을 통해 수신자의 명시적인 사전 동의없이 일방적으로 전송되는 영리목적의 광고성 정보</li>
|
||||
<li>불법스팸 :「정보통신망 이용촉진 및 정보보호 등에 관한 법률(이하 “정보통신망법”이라 한다)」 제50조부터 제50조의8을 위반하여 전송 또는 게시되는 영리목적의 광고성 정보</li>
|
||||
<li>영리목적의 광고성 정보 : 전송자가 널리 경제적 이득을 취할 목적으로 전송하는 전송자 등에 관한 정보 및 전송자 등이 제공할 재화나 서비스에 관한 정보</li>
|
||||
<li>전자적 전송매체 : 정보통신망을 통하여 부호ㆍ문자ㆍ음성ㆍ화상 또는 영상 등을 수신자에게 전자문서 등의 전자적 형태로 전송하는 매체</li>
|
||||
<li>수신동의(Opt-in) : 사전에 수신을 동의한 고객에게만 광고성 정보를 전송할 수 있는 방식</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam02">2. 이용자의 의무</p>
|
||||
<div class="conbox spam_conbox">
|
||||
<p>영리목적의 광고성 정보를 전송하려는 경우, 불법스팸 방지를 위한 이용자의 의무는 다음과 같습니다.</p>
|
||||
<ul class="conlist2">
|
||||
<li>이용자는 영리목적의 광고성 정보 전송 시 「정보통신망법」의 의무사항 및 회사의 이용약관을 준수하여야 합니다.</li>
|
||||
<li>이용자는 「전기통신사업법」제84조의2(전화번호의 거짓표시 금지 및 이용자 보호)에 따라 발신번호 사전등록 후 등록된 번호로만 문자 메시지를 발송하여야 합니다.</li>
|
||||
<li>이용자는 스팸메시지, 문자피싱메시지 발송 등 불법행위를 하거나 「전기통신사업법」 등 관련법령을 준수하지 않아 발생하는 모든 민ㆍ형사상의 책임을 부담합니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam03">3. 발송 시 유의사항</p>
|
||||
<div class="conbox spam_conbox">
|
||||
<p class="text">「정보통신망법」제50조에 의한 영리목적의 광고성 문자, 팩스, 음성, 메일 발송 시 유의사항에 대해 안내 드립니다.</p>
|
||||
<ul class="conlist2">
|
||||
<li>반드시 수신자의 명시적인 사전 동의를 얻어야 합니다.</li>
|
||||
<li>수신자의 사전 동의를 얻었다 하더라도 수신자가 수신거부의사를 표시하거나 사전 동의를 철회한 경우에는 전송할 수 없습니다.</li>
|
||||
<li>수신자의 사전 동의를 얻었다 하더라도 오후 9시부터 다음 날 오전 8시 사이에 광고성 문자를 보낼 경우 별도로 사전 동의를 얻어야 합니다.</li>
|
||||
<li>전자적 전송매체의 내용에 전송자의 명칭 및 연락처, 수신 거부(또는 수신동의의 철회) 조치 및 방법에 관한 사항을 표시하여야 합니다.</li>
|
||||
<li>수신자의 수신 거부 시 기술적으로 수신거부를 회피ㆍ방해하는 등 법령에서 금지하는 행위를 해서는 안됩니다.</li>
|
||||
<li>수신자가 수신거부(또는 수신동의 철회)를 할 때 발생하는 전화요금 등 금전적 비용을 부담하지 않도록 수신거부(또는 수신동의 철회)용 무료전화서비스 등을 제공하고 그 내용을 명시해야 합니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam04">4. 스팸방지 관련 약관 공지</p>
|
||||
<div class="conbox spam_conbox">
|
||||
<p>가입하신 이용자는 모두 아래 약관에 동의한 것입니다.</p>
|
||||
<div class="clause_new spam_clause">
|
||||
<p class="tit">약관 중 불법스팸 관련 사항</p>
|
||||
<ul class="conlist7">
|
||||
<li class="str"><strong>15조(서비스 이용의 제한 또는 정지)</strong>① 회사는 이용자가 이 약관의 의무를 위반하거나 서비스의 정상적인 운영을 방해한 경우 서비스 이용을 제한하거나 정지할 수 있습니다.</li>
|
||||
<li>② 제1항에도 불구하고 「주민등록법」을 위반한 명의도용 및 결제도용, 「저작권법」을 위반한 불법프로그램의 제공 및 운영방해, 「정보통신망법」을 위반한 불법스팸 발송 및 불법통신, 해킹, 악성프로그램의 배포, 접속권한 초과행위 등과 같이 관련 법을 위반한 경우에는 즉시 영구 이용정지 할 수 있습니다.</li>
|
||||
<li>③ 제2항에 따른 영구 이용정지 시 서비스 내의 금액, 포인트, 혜택 및 권리 등은 모두 소멸되며 회사는 이에 대해 별도로 보상하지 않습니다.</li>
|
||||
<li>
|
||||
④ 회사는 이용자가 다음 각 호의 어느 하나에 해당하는 경우, 30일간 당해 서비스의 이용을 즉시 정지(전부 또는 일부) 할 수 있으며, 이용정지 등의 원인이 된 사유가 완전히 해소되기 전까지는 이용정지 등의 조치를 해제하지 아니할 수 있습니다.
|
||||
<ol class="conlist8">
|
||||
<li>1. 방송통신위원회ㆍ한국인터넷진흥원ㆍ과학기술정보통신부ㆍ전송사 등(이하 “관계기관”이라 한다)이 불법스팸 등 불법행위의 전송사실을 확인하여 이용정지를 요청하는 경우</li>
|
||||
<li>3. 이용자가 전송하는 광고의 수신자가 불법스팸으로 신고하는 경우</li>
|
||||
<li>4. 이용자에게 제공하는 서비스가 불법스팸 전송에 이용되고 있는 경우</li>
|
||||
<li>5. 전송한 광고성 정보가 불법스팸임이 확인된 경우</li>
|
||||
<li>6. 불법스팸 전송으로 과태료가 부과된 경우</li>
|
||||
<li>7. 회사에게 증빙서류 등을 통해 불법스팸 전송이 아님을 확인하여 주지 않고 1일 500건을 초과하는 메시지를 전송하는 경우</li>
|
||||
<li>8. 이용자가 발신번호를 변작하는 등 거짓으로 표시한 경우</li>
|
||||
<li>9. 관계기관이 발신번호 변작 등을 확인하여 이용 정지를 요청하는 경우</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>⑤ 회사는 불법스팸을 전송하였다고 확인된 이용자가 이용 중인 다른 번호가 불법스팸에 악용되고 있거나, 악용될 우려가 있다는 객관적 정황이 있는 경우에는 그 다른 번호도 이용 정지할 수 있습니다.</li>
|
||||
</ul>
|
||||
<ul class="conlist7 spam_clause_cen">
|
||||
<li class="str"><strong>16조(발송량의 제한)</strong>① 회사는「정보통신망법」에서 금지하는 대량의 불법스팸 전송을 방지하기 위하여 이용자의 아이디당 1일 500건을 초과하는 문자 메시지 발송을 제한할 수 있습니다. 단, 이용자가 제출하는 증빙서류 등을 통해 불법스팸 전송이 아님을 확인할 수 있는 경우 초과 전송이 가능하도록 예외를 인정할 수 있습니다.</li>
|
||||
<li>② 제1항 단서에 따라 이용자가 제출한 증빙서류 등을 통해 불법스팸 전송이 아님을 확인하였음에도, 이용자의 메시지 발송량이 과다할 경우 회사는 발송을 제한할 수 있습니다.</li>
|
||||
</ul>
|
||||
<ul class="conlist7">
|
||||
<li class="str"><strong>17조(계약의 해지)</strong>① 회사는 이용자가 다음 각 호의 어느 하나에 해당하는 경우, 이용자의 동의 없이 이용계약을 해지할 수 있습니다.</li>
|
||||
<li>
|
||||
② 회사는 이용자가 다음 각 호의 어느 하나에 해당하는 경우, 이용자의 동의 없이 이용계약을 해지할 수 있습니다.
|
||||
<ol class="conlist8">
|
||||
<li>1. 이용자가 약관을 위반하고 일정 기간 이내에 위반 내용을 해소하지 않는 경우</li>
|
||||
<li>3. 관계기관이 불법스팸 등 불법행위의 전송사실을 확인하여 계약해지를 요청하는 경우</li>
|
||||
<li>
|
||||
4. 약관 제11조에 따른 이용자의 의무를 위반한 경우
|
||||
<!-- 제 11조 -->
|
||||
<ul class="conlist7 spam_clause_gray">
|
||||
<li class="str">
|
||||
<strong>11조(이용자의 의무)</strong>① 이용자는 다음 각 호의 어느 하나에 해당하는 행위를 하여서는 안됩니다.
|
||||
<ol class="conlist8">
|
||||
<li>11. 불법스팸, 불법정보, 발신번호 조작 등으로 인지되는 메시지를 발송하는 행위</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>② 이용자는 영리목적의 광고성 정보 전송 시 「정보통신망법」에 따라 수신자의 명시적인 사전 동의를 얻고 광고표기 의무 등을 준수하여야 하며, 회사를 통해 전달되는 수신거부 요청에 대해서는 즉각적으로 처리하고 24시간 이내에 처리결과를 회사에 회신해야 합니다.</li>
|
||||
<li>③ 이용자는 「전기통신사업법」 제84조의2(전화번호의 거짓표시 금지 및 이용자 보호)에 의거 발신번호를 사전에 등록하고 등록된 번호로만 문자를 발송하여야 합니다. 단, 「전기통신사업법」 등의 관련 법률에서 예외로 허용한 경우는 제외하며, 만약 정당하지 않은 방법으로 전화번호를 변경하여 발신하는 경우 관련 법규에 따라 처벌받을 수 있습니다.</li>
|
||||
<li>④ 이용자는 알림톡 또는 친구톡 서비스를 이용 시, 수신자가 발신자를 정확하게 식별할 수 있는 발신프로필을 사용하여야 하며 해당사항에 틀림이 없는지 지속적으로 확인해야 합니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>5. 약관 제15조제4항에 따른 이용정지를 당한 이후 1년 이내에 이용정지 사유가 재발한 경우</li>
|
||||
<li>6. 약관 제15조제4항에 따른 이용정지 기간 내에 이용 정지 사유를 해소하지 않고, 이용 정지일로부터 12개월이 경과한 경우</li>
|
||||
<li>9. 불특정 다수를 대상으로 무차별적으로 불법스팸을 전송한 사실이 확인된 경우</li>
|
||||
<li>10. 이용자가 전송한 광고성 정보에 대해 회사가 한국인터넷진흥원에 불법스팸 유무확인을 요청하여 불법스팸임이 확인된 경우</li>
|
||||
<li>11. 수신처를 자동으로 생성하여 불특정 다수에게 광고성 메시지를 전송한 경우</li>
|
||||
<li>12. 전송자를 확인하지 못하게 할 목적으로 발신번호를 변작하여 영리목적의 광고성 정보를 전송한 사실이 확인된 경우</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>② 회사는 불법스팸을 전송하였다고 확인된 이용자가 이용 중인 다른 번호가 불법스팸에 악용되고 있거나 악용될 우려가 있다는 객관적 정황이 있는 경우에는 그 다른 번호에 대한 서비스도 해지할 수 있습니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam05">5. 명시적인 사전 동의<span class="red">(위반시 3천만원 이하 과태료)</span></p>
|
||||
<div class="conbox spam_conbox">
|
||||
<table class="tType1">
|
||||
<caption>정보통신망법, 시행령에 대한 표</caption>
|
||||
<colgroup>
|
||||
<col style="width: 200px;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">정보통신망법</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제50조(영리목적의 광고성 정보 전송 제한)</strong>① 누구든지 전자적 전송매체를 이용하여 <span class="blue">영리목적의 광고성 정보</span>를 전송하려면 <span class="blue">그 수신자의 명시적인 사전 동의</span>를 받아야 한다. 다만, 다음 각 호의 어느 하나에 해당하는 경우에는 사전 동의를 받지 아니한다.
|
||||
<ol class="conlist8">
|
||||
<li>1. 재화 등의 거래관계를 통하여 수신자로부터 직접 연락처를 수집한 자가 대통령령으로 정한 기간 이내에 자신이 처리하고 수신자와 거래한 것과 동종의 재화 등에 대한 영리목적의 광고성 정보를 전송하려는 경우</li>
|
||||
<li>2. <span class="le">「방문판매 등에 관한 법률」</span>에 따른 전화권유판매자가 육성으로 수신자에게 개인정보의 수집출처를 고지하고 전화권유를 하는 경우</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">시행령</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제61조(영리목적의 광고성 정보 전송기준)</strong>① 법 제50조제1항제1호에서 “대통령령으로 정한 기간”이란 해당 재화등의 <span class="blue">거래가 종료된 날부터 6개월</span>을 말한다.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="contitle1 spam_title">[영리목적의 광고성 정보]</p>
|
||||
<ul class="conlist2 spam_list">
|
||||
<li>
|
||||
영리목적으로 사업을 하는 자가 고객에게 보내는 정보는 원칙적으로 모두 광고성 정보에 해당합니다.
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>영업사원이 고객관리 차원에서 보내는 안부인사, 사업자가 고객에게 보내는 무료 뉴스레터 및 일방적으로 제공(회원가입 기념 쿠폰, 생일 기념 쿠폰, 1주년 기념 쿠폰 등)한 쿠폰 및 마일리지 등(이에 대한 소멸안내 포함)도 원칙적으로 영리목적 광고성 정보에 해당 합니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="center">전송자의 이미지 홍보에 해당하는 경우에도 광고성 정보로 볼 수 있으며, 주된 정보가 광고성 정보가 아니라고 하더라도 부수적으로 광고성 정보가 포함되어 있으면 해당 정보 전체가 광고성 정보에 해당합니다.</li>
|
||||
<li>
|
||||
단, 다음의 경우에는 광고성 정보의 예외로 봅니다.
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>전송자와 수신자간 체결된 계약이행 등과 관련한 정보</li>
|
||||
<li class="mark">※ 수신자가 금전적 대가를 지불하고 제공받는 정보(유료 뉴스레터, 주식정보, 축산물 거래정보 등)와 같이 전송자가 계약상 의무이행을 위해 전송하는 정보, 수신자가 신청한 경품 및 사은품 지급을 위한 정보 등을 말합니다. </li>
|
||||
<li>공익목적을 위한 광고성 정보</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="contitle1 spam_title">[명시적인 사전 동의]</p>
|
||||
<ul class="conlist2 spam_list">
|
||||
<li>향후 전송될 광고의 내용 및 전송매체(방법)에 대해 정확히 고지하고 이에 대한 수신자의 동의를 받아야 합니다.</li>
|
||||
<li><span class="le">「개인정보의 수집ㆍ이용 및 이용목적에 대한 동의」</span>와 「광고성 정보 수신 동의」는 구분되므로 각 동의를 별개로 받아야 합니다.</li>
|
||||
<li>하나의 사업자가 여러 종류의 서비스를 제공할 경우, 해당 사업자가 전송하는 모든 광고수신에 대해 포괄적으로 동의 받는 것은 안 되며, 유형별 서비스를 모두 고지하고 개별적 동의를 받아야 합니다.</li>
|
||||
<li>수신동의를 얻기 위한 목적으로 문자, 이메일, 팩스 등을 전송하거나 전화를 거는 행위는 수신동의 없이 광고성 정보를 전송하는 것으로 법 위반에 해당할 수 있습니다.</li>
|
||||
<li>스팸신고가 접수되거나 수신동의 여부에 대한 분쟁이 발생하는 경우 이에 대한 입증책임은 광고성 정보 전송자에게 있습니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam06">6. 거래관계를 통한 사전 동의 의무 예외</p>
|
||||
<div class="conbox spam_conbox">
|
||||
<ul class="conlist2 spam_list">
|
||||
<li>
|
||||
기존 거래관계가 있었거나 현재 거래관계가 지속중인 이용자에게는 그 거래관계에서 취급했던 재화 및 서비스에 대한 광고에 한해 별도의 동의 절차 없이 보낼 수 있습니다.
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>거래관계란, 재화(財貨) 또는 용역(service)을 대상으로 하여 이루어지는 매매행위를 의미하는 것으로, 단순한 문의나 회원가입 등은 거래관계가 존재한다고 볼 수 없습니다.</li>
|
||||
<li>사업자가 사업자(B2B)와의 거래관계 형성을 위해 명함 등 서면으로 직접 연락처를 제공한 경우, 사전동의 예외로서의 거래관계가 있다고 볼 수 있습니다. 단, 언제 어디서 명함 등을 직접 제공받았는지를 증명할 수 있어야 합니다.</li>
|
||||
<li>기존 거래관계나 사전 수신동의를 얻은 업체가 동일업체 명으로 재화나 서비스 제공 형태(콘텐츠는 동종)를 변경하였더라도 이전에 획득한 이용자 정보로 새로운 재화나 서비스를 광고할 수 없습니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam07">7. 수신거부 및 사전동의 철회<span class="red">(위반시 3천만원 이하 과태료)</span></p>
|
||||
<div class="conbox spam_conbox">
|
||||
<table class="tType1">
|
||||
<caption>정보통신망법에 대한 표</caption>
|
||||
<colgroup>
|
||||
<col style="width: 200px;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">정보통신망법</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제50조(영리목적의 광고성 정보 전송 제한)</strong>② 전자적 전송매체를 이용하여 영리목적의 광고성 정보를 전송하려는 자는 제1항에도 불구하고 <span class="blue">수신자가 수신거부의사를 표시하거나 사전 동의를 철회</span>한 경우에는 영리목적의 광고성 정보를 <span class="blue">전송하여서는 아니 된다.</span></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul class="conlist2 spam_list spam_list_tw">
|
||||
<li>
|
||||
수신자가 특별히 범위를 정하여 수신동의 철회 및 수신거부 의사표시를 한 것이 아니라면, 그 효력은 당해 광고만이 아니라 당해 전송자가 보내는 모든 광고에 적용됩니다.
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>다만, 각 재화나 서비스 분야로 동의를 받은 경우 수신거부시 그 해당분야에 한합니다.</li>
|
||||
<li>성인전화나 대리운전 광고 등의 경우 수신자가 수신거부를 하면 전송자가 전송하는 해당 서비스 분야 모두가 수신거부 대상이 됩니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="last">본사와 지사, 본사와 대리점에서 고객 정보를 공유할 경우 수신거부의사도 공유하는 것으로 봅니다. 즉, 한 번의 수신거부로 해당 본사 및 지사, 대리점에서 전송하는 광고에 대한 수신 거부 효력이 발생합니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam08">8. 야간광고 전송제한 및 예외<span class="red">(위반시 3천만원 이하 과태료)</span></p>
|
||||
<div class="conbox spam_conbox">
|
||||
<table class="tType1">
|
||||
<caption>정보통신망법, 시행령에 대한 표</caption>
|
||||
<colgroup>
|
||||
<col style="width: 200px;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">정보통신망법</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제50조(영리목적의 광고성 정보 전송 제한)</strong>③ <span class="blue">오후 9시부터 그 다음 날 오전 8시까지의 시간</span>에 전자적 전송매체를 이용하여 영리목적의 광고성 정보를 전송하려는 자는 제1항에도 불구하고 그 수신자로부터 <span class="blue">별도의 사전 동의</span>를 받아야 한다. 다만, 대통령령으로 정하는 매체의 경우에는 그러하지 아니하다.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">시행령</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제61조(영리목적의 광고성 정보 전송기준)</strong>② 법 제50조제3항 단서에서 “대통령령으로 정하는 매체”란 <span class="blue">전자우편</span>을 말한다.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul class="conlist2 spam_list spam_list_tw">
|
||||
<li>광고성 정보 전송에 대하여 수신동의를 받았거나 거래관계에 의한 수신동의 예외가 인정되더라도 오후 9시부터 그 다음 날 오전 8시까지(이하 “야간시간”이라 한다) 광고성 정보를 전송하려면 별도의 수신동의를 받아야 합니다.</li>
|
||||
<li>야간시간에 광고성 정보 전송금지 기준은 수신자에게 도달하는 시각을 기준으로 합니다.(국외에서 전송되는 광고성 정보도 동일함)</li>
|
||||
<li>전자우편은 다른 매체에 비해 광고 수신확인의 즉시성이 떨어져 이용자의 통제가 비교적 용이하므로 “오후 9시부터 그 다음 날 오전 8시까지” 수신자의 별도 동의가 없더라도 전송이 가능합니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam09">9. 광고성 정보 전송 시 명시사항<span class="red">(위반시 3천만원 이하 과태료)</span></p>
|
||||
<div class="conbox spam_conbox">
|
||||
<table class="tType1">
|
||||
<caption>정보통신망법, 시행령에 대한 표</caption>
|
||||
<colgroup>
|
||||
<col style="width: 200px;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">정보통신망법</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제50조(영리목적의 광고성 정보 전송 제한)</strong>④ 전자적 전송매체를 이용하여 영리목적의 광고성 정보를 전송하는 자는 대통령령으로 정하는 바에 따라 다음 각 호의 사항 등을 <span class="blue">광고성 정보에</span> 구체적으로 <span class="blue">밝혀야 한다</span>.
|
||||
<ol class="conlist8">
|
||||
<li>1. <span class="blue">전송자의 명칭 및 연락처</span></li>
|
||||
<li>2. <span class="blue">수신의 거부 또는 수신동의의 철회 의사표시를 쉽게 할 수 있는 조치 및 방법에 관한 사항</span></li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">시행령</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제61조(영리목적의 광고성 정보 전송기준)</strong>③ 법 제50조제4항에 따라 전자적 전송매체를 이용하여 영리목적의 광고성 정보를 전송하는 자가 해당 정보에 명시하여야 할 사항과 그 방법은 별표 6과 같다.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="contitle1 spam_title">[전송자의 명칭 및 연락처]</p>
|
||||
<ul class="conlist2 spam_list">
|
||||
<li>
|
||||
전송자의 명칭
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>전송자의 명칭은 수신자가 재화나 서비스를 이용하였거나 수신동의를 하였다고 식별할 수 있는 정도의 구체적인 표현을 사용해야 합니다.</li>
|
||||
<li class="mark">※ 수신자가 용이하게 식별할 수 있는 명칭으로 업체명(00네 마트, 00안경원 등)ㆍ서비스명(00대리운전, 00퀵 등) 등을 사용할 수 있습니다.</li>
|
||||
<li>전송자가 표기한 명칭만으로 수신자가 전송자를 식별할 수 없는 경우에는 전송자의 명칭을 표기한 것이라 볼 수 없습니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="last">
|
||||
전송자의 연락처
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>연락처는 전자우편주소, 전화번호, 주소 등 광고성 정보를 전송한 자와 직접적으로 연락이 될 수 있는 것이어야 합니다.</li>
|
||||
<li>직접적으로 연락이 되지 않거나 다른 연락처를 재안내하거나, 또는 허위 연락처인 경우에는 연락처를 명시하지 않은 것으로 봅니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p class="contitle1 spam_title">[수신의 거부 또는 수신동의의 철회 의사표시를 쉽게 할 수 있는 조치 및 방법에 관한 사항]</p>
|
||||
<ul class="conlist2 spam_list">
|
||||
<li>광고성 정보의 본문에 표기하여 구체적으로 밝혀야 합니다.</li>
|
||||
<li class="center">
|
||||
동 조치 및 방법으로 수신의 거부 또는 수신동의 철회가 쉽게 이루어지지 않거나 불가능할 경우에는 이를 밝히지 않은 것으로 봅니다.
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>전자우편 수신거부시 웹사이트에 로그인하도록 하는 등 수신거부 및 수신동의 철회를 어렵게 하는 것은 법률을 위반하는 행위입니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="center">
|
||||
전자적 전송매체(전자우편 제외)를 통해 광고성 정보 전송시 수신거부 및 수신동의 철회를 할 때 수신자에게 금전적 비용 부담이 발생하지 않는다는 내용을 “명시”하여야 합니다.
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>문자광고 전송시 “무료”와 같이 비용이 발생하지 않음을 안내하는 문구가 포함되어 있어야 합니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!-- 전송매체별 명시사항 및 명시방법 테이블 -->
|
||||
<p class="contitle1 tri_te"><span class="tri">▶</span> 전송매체별 명시사항 및 명시방법</p>
|
||||
<ul class="conlist2">
|
||||
<li>(광고)를 표시하는 경우에는 수신자의 수신의 거부 또는 수신동의의 철회를 회피하기 위한 목적으로 빈칸ᆞ부호ᆞ문자 등을 삽입하거나 표시방법을 조작하는 조치를 해서는 안됩니다.</li>
|
||||
<li>수신자가 수신의 거부 또는 수신동의의 철회를 하는 때에 전송에 이용된 수신자의 연락처 외의 개인정보를 전송자에게 제공하도록 요구하는 내용을 명시하여 수신의 거부 또는 수신동의의 철회를 어렵게 하여서는 아니 됩니다.</li>
|
||||
</ul>
|
||||
<table class="tType2 spam_table">
|
||||
<caption>전자우편, 팩스, 그 밖의 전자적 전송매체 대한 표</caption>
|
||||
<colgroup>
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 80%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>매체구분</th>
|
||||
<th>명시사항 및 명시방법</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>전자우편</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li>1. <span class="blue">제목</span>이 시작되는 부분에 <span class="blue">(광고)를 표시</span>해야 한다.</li>
|
||||
<li>2. 본문에는 다음 사항을 표시해야 한다.
|
||||
<ol class="conlist8">
|
||||
<li>가. <span class="blue">전송자의 명칭ㆍ전자우편주소ㆍ전화번호 및 주소</span></li>
|
||||
<li>나. 수신자가 수신의 거부 또는 수신동의의 철회 의사를 쉽게 표시할 수 있도록 하기 위한 안내문을 명시하고 수신의 거부 또는 수신동의의 철회 여부를 간편하게 선택할 수 있도록 기술적 조치를 해야 한다. 이 경우 그 안내문과 기술적 조치는 한글과 영문으로 명시해야 한다.</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>팩스</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li>1. 광고성 정보가 <span class="blue">시작되는 부분에 (광고), 전송자의 명칭, 전화번호 및 주소를 표시</span>해야 한다.</li>
|
||||
<li>2. 수신의 거부 또는 수신동의의 철회용 <span class="blue">자동응답전화번호 등의</span> 전화번호 또는 전화를 갈음하여 쉽게 수신의 거부 또는 수신동의의 철회를 할 수 있는 방식을 해당 광고에 표시된 최대 글자의 <span class="blue">3분의 1 이상의 크기로 명시</span>하고, 그 전화번호나 방식을 이용하여 수신의 거부 또는 수신동의의 철회를 하는 때에 수신자가 <span class="blue">비용을 부담하지 않는다는 것을 함께 명시</span>해야 한다.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>그 밖의 전자적 전송매체</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li>1. 음성형태로 전송되는 광고의 경우
|
||||
<ol class="conlist8">
|
||||
<li>가. 광고성 정보가 시작되는 부분에 광고를 의미하는 음성, 전송자의 명칭, 전화번호 또는 주소, 수신의 거부 또는 수신동의의 철회를 할 수 있는 방식을 안내해야 한다.</li>
|
||||
<li>나. 수신의 거부 또는 수신동의의 철회용 자동응답전화번호 등의 전화번호 또는 전화를 갈음하여 쉽게 수신의 거부 또는 수신동의의 철회를 할 수 있는 방식을 이용하여 수신의 거부 또는 수신동의의 철회를 하는 때에 수신자가 비용을 부담하지 않는다는 것을 함께 안내해야 한다.</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li><span class="blue">2. 음성 외의 형태로 전송되는 광고의 경우</span>
|
||||
<ol class="conlist8">
|
||||
<li>가. 광고성 정보가 <span class="blue">시작되는 부분에 (광고), 전송자의 명칭과 전화번호 또는 주소</span>를 표시해야 한다.</li>
|
||||
<li>나. 수신의 거부 또는 수신동의의 철회용 <span class="blue">자동응답전화번호 등의 전화번호</span> 또는 전화를 갈음하여 쉽게 수신의 거부 또는 수신동의의 철회를 할 수 있는 방식을 <span class="blue">정보가 끝나는 부분에 명시</span>하고, 그 전화번호나 방식을 이용하여 수신의 거부 또는 수신동의의 철회를 하는 때에 <span class="blue">수신자가 비용을 부담하지 않는다는 것을 함께 명시</span>해야 한다.</li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam10">10. 광고성 정보 전송자 금지사항<span class="red">(위반시 징역 1년 이하 또는 1천만원 이하의 벌금)</span></p>
|
||||
<div class="conbox spam_conbox">
|
||||
<table class="tType1">
|
||||
<caption>정보통신망법에 대한 표</caption>
|
||||
<colgroup>
|
||||
<col style="width: 200px;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">정보통신망법</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제50조(영리목적의 광고성 정보 전송 제한)</strong>⑤ 전자적 전송매체를 이용하여 영리목적의 광고성 정보를 전송하는 자는 다음 각 호의 어느 하나에 해당하는 행위를 하여서는 <span class="blue">아니 된다</span>.
|
||||
<ol class="conlist8">
|
||||
<li>1. 광고성 정보 수신자의 <span class="blue">수신거부 또는 수신동의의 철회를 회피ㆍ방해하는 행위</span></li>
|
||||
<li>2. 숫자ㆍ부호 또는 문자를 조합하여 전화번호ㆍ전자우편주소 등 <span class="blue">수신자의 연락처를 자동으로 만들어 내는 행위</span></li>
|
||||
<li>3. 영리목적의 광고성 정보를 전송할 목적으로 <span class="blue">전화번호 또는 전자우편주소를 자동으로 등록하는 행위</span></li>
|
||||
<li>4. 광고성 정보 전송자의 신원이나 광고 전송 <span class="blue">출처를 감추기 위한 각종 행위</span></li>
|
||||
<li>5. 영리목적의 광고성 정보를 전송할 목적으로 <span class="blue">수신자를 기망하여 회신을 유도하는 각종 행위</span></li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul class="conlist2 spam_list spam_list_tw">
|
||||
<li>
|
||||
수신거부 또는 수신동의 철회를 회피ㆍ방해하는 행위의 금지
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>이메일을 이용하여 광고성 정보를 전송할 때 수신거부가 되지 않도록 하거나(예: 페이지 오류로 나타나게 함), 문자로 광고성 정보를 전송할 때 연락이 되지 않는 수신거부번호를 제공하는 등의 행위를 의미합니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="center">
|
||||
수신자의 연락처를 자동으로 만들어 내는 행위의 금지
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>프로그램 등을 이용하여 숫자ㆍ부호 또는 문자를 조합하여 <span class="bold">자동으로</span> 수신자의 전화번호나 전자우편 주소 등의 <span class="bold">연락처를 만들어 내는 행위*</span>를 의미합니다.</li>
|
||||
<li class="mark">※ 오토콜 프로그램이 전화번호를 자동으로 생성하여 전화를 걸거나, 엑셀 프로그램 등으로 전화번호 일부 또는 전체를 자동으로 만들어 내는 것 등을 의미합니다.</li>
|
||||
<li>광고성 정보를 전송하는 자는 광고성 정보의 전송여부와 상관없이 연락처를 자동으로 만들어내는 행위만으로도 처벌됩니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="center">
|
||||
전화번호 또는 전자우편주소를 자동으로 등록하는 행위의 금지
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>광고성 정보 수신자의 <span class="bold">연락처를</span> 확보하기 위하여 프로그램을 이용하여 수신자의 전화번호 또는 전자우편주소를 <span class="bold">자동으로 등록하는 행위*</span>를 하여서는 안됩니다.</li>
|
||||
<li>“자동으로 등록하는 행위”란 고객에게 받은 연락처를 전산 상에 자동으로 등록하는 것을 의미하는 것이 아니라 인터넷상 혹은 정보저장장치 등에 있는 전화번호 또는 전자우편주소를 프로그램을 이용하여 정보주체의 의사와 관계없이 자동으로 수집하여 등록하는 것을 의미합니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="center">
|
||||
전송자의 신원이나 광고 전송 출처를 감추기 위한 각종 행위
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>발신번호는 전송자를 확인할 수 없는 번호로 변작(변경, 조작 등)하여 사용해서는 안됩니다.</li>
|
||||
<li>이메일의 경우 발신자의 이메일 주소를 확인할 수 없게 하거나 다른 이메일 주소로 위ㆍ변조 하여서는 안됩니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="last">
|
||||
수신자를 속이거나 착오에 빠지게 하여 회신을 유도하는 각종 행위
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>벨이 1~2번 울린 후 수신자가 받기 전에 끊거나 받은 후 바로 끊는 방식으로 수신자의 전화를 유도하는 행위를 하여서는 안됩니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam11">11. 수신거부 및 수신동의 철회 시 비용 발생 금지<span class="red">(위반시 3천만원 이하 과태료)</span></p>
|
||||
<div class="conbox spam_conbox">
|
||||
<table class="tType1">
|
||||
<caption>정보통신망법, 시행령에 대한 표</caption>
|
||||
<colgroup>
|
||||
<col style="width: 200px;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">정보통신망법</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제50조(영리목적의 광고성 정보 전송 제한)</strong>⑥ 전자적 전송매체를 이용하여 영리목적의 광고성 정보를 전송하는 자는 수신자가 <span class="blue">수신거부나 수신동의의 철회를 할 때</span> 발생하는 전화요금 등의 <span class="blue">금전적 비용을 수신자가 부담하지 아니하도록</span> 대통령령으로 정하는 바에 따라 필요한 <span class="blue">조치</span>를 하여야 한다.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">시행령</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제62조(수신거부 또는 수신동의 철회용 무료전화서비스 등의 제공)</strong>법 제50조제6항에 따라 전자적 전송매체를 이용하여 영리목적의 광고성 정보를 전송하는 자는 별표 6에서 정하는 바에 따라 <span class="blue">수신거부 및 수신동의 철회용 무료전화서비스 등을 해당 정보에 명시</span>하여 수신자에게 이를 제공하여야 한다.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul class="conlist2 spam_list spam_list_tw">
|
||||
<li>광고성 정보 전송자는 수신자가 금전적인 비용 부담없이 수신거부 또는 수신동의 철회를 할 수 있는 방법(ex: 수신자 부담 080 착신과금서비스) 등을 제공하고 수신자가 비용을 부담하지 않는다는 내용을 명시해야 합니다.</li>
|
||||
<li>광고내용 안에 고지된, 080등 수신동의철회 전화번호가 항상 통화중이거나 신호만 울리고 받지 않는 등 제대로 작동하지 않게 조치하여서는 안되며, 해당 전화번호로 전화연결 시 요금이 부과되도록 하여서도 안됩니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam12">12. 수신동의 여부 확인<span class="red">(위반시 3천만원 이하 과태료)</span></p>
|
||||
<div class="conbox spam_conbox">
|
||||
<table class="tType1">
|
||||
<caption>정보통신망법, 시행령에 대한 표</caption>
|
||||
<colgroup>
|
||||
<col style="width: 200px;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">정보통신망법</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제50조(영리목적의 광고성 정보 전송 제한)</strong>⑧ 제1항 또는 제3항에 따라 수신동의를 받은 자는 대통령령으로 정하는 바에 따라 <span class="blue">정기적</span>으로 광고성 정보 수신자의 <span class="blue">수신동의 여부를 확인</span>하여야 한다.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">시행령</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제62조의3(수신동의 여부 확인 방식)</strong>① 법 제50조제1항 또는 제3항에 따라 수신자의 사전 동의를 받은 자는 같은 조 제8항에 따라 <span class="blue">그 수신동의를 받은 날부터 2년마다</span>(매 2년이 되는 해의 수신동의를 받은 날과 같은 날 전까지를 말한다) 해당 수신자의 수신동의 여부를 <span class="blue">확인</span>하여야 한다.</li>
|
||||
<li>② 제1항에 따라 수신동의 여부를 확인하려는 자는 수신자에게 다음 각 호의 사항을 밝혀야 한다.
|
||||
<ol class="conlist8">
|
||||
<li><span class="blue">1. 전송자의 명칭</span></li>
|
||||
<li><span class="blue">2. 수신자의 수신동의 사실과 수신에 동의한 날짜</span></li>
|
||||
<li><span class="blue">3. 수신동의에 대한 유지 또는 철회의 의사를 표시하는 방법</span></li>
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul class="conlist2 spam_list spam_list_tw">
|
||||
<li>수신동의 날짜는 수신동의를 한 날짜를 특정하여 명시하여야 하며, 수신동의를 한 특정 날짜를 명시하지 않은 경우 법위반에 해당합니다.</li>
|
||||
<li class="center">
|
||||
수신동의 여부 확인은 수신동의에 대한 의사 표시(동의 유지·철회) 방법에 따라 아래와 같은 방식으로 구분할 수 있습니다.
|
||||
<ul class="conlist3 spam_gray spam_gray_tw">
|
||||
<li>
|
||||
<span class="sub_tit"><수신동의 유지 의사 표시방법을 안내할 경우></span>
|
||||
<ul class="sub_te sub_te_on">
|
||||
<li>수신자가 수신동의 유지 의사를 표시할 기한을 설정하여 그 방법과 함께 안내하여야 합니다.</li>
|
||||
<li>수신자가 기한 내 수신동의에 대한 유지 의사를 표시하지 않을 경우 동의를 철회한 것으로 봅니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<span class="sub_tit"><수신동의 철회 의사 표시방법을 안내할 경우></span>
|
||||
<ul class="sub_te">
|
||||
<li>전송자는 수신자가 수신동의 철회 의사를 표시할 기한을 별도로 설정하지 않으나, 의사 표시 즉시 철회 의사를 반영해야 합니다.</li>
|
||||
<li>수신자가 수신동의 여부 안내를 받은 후 아무런 의사표시를 하지 않는 경우 수신동의 의사가 그대로 유지되는 것으로 봅니다.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="center">
|
||||
수신동의 후 특정일에 상관없이 수신동의를 받은 날부터 2년 이내에 수신동의 사실을 안내해주면 됩니다.
|
||||
<ul class="conlist3 spam_gray">
|
||||
<li>수신동의 확인은 최초 수신동의 시점부터 2년마다 기산하면 됩니다(안내한 날부터 새로 기산되는 것이 아님에 주의)</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="last">수신동의 여부 확인은 수신자의 확인 용이성을 고려하여 연락처가 있는 경우 문자 메시지로 알리는 것을 권장합니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam13">13. 법률에서 금지하는 광고성 정보의 전송 금지<span class="red">(위반시 3년 이하의 징역이나 3천만원 이하의 벌금)</span></p>
|
||||
<div class="conbox spam_conbox">
|
||||
<table class="tType1">
|
||||
<caption>정보통신망법에 대한 표</caption>
|
||||
<colgroup>
|
||||
<col style="width: 200px;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">정보통신망법</th>
|
||||
<td>
|
||||
<ul class="conlist7">
|
||||
<li><strong>제50조의8(불법행위를 위한 광고성 정보 전송금지)</strong>누구든지 정보통신망을 이용하여 <span class="blue">이 법 또는 다른 법률에서</span> 이용, 판매, 제공, 유통, 그 밖에 이와 유사한 행위를 <span class="blue">금지하는 재화 또는 서비스</span>에 대한 <span class="blue">광고성 정보</span>를 <span class="blue">전송하여서는 아니 된다</span>.</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<ul class="conlist2 spam_list spam_list_tw">
|
||||
<li><span class="bold">마약, 불법대출, 도박, 성매매, 불법의약품, 청소년유해물 등</span> 법률에서 금지하는 재화 또는 서비스(허가받지 않은 사업자가 운영하는 재화 및 서비스도 포함합니다)에 대해서는 누구든지 광고성 정보를 전송하여서는 안됩니다.</li>
|
||||
<li>정보통신서비스 제공자는 자사의 서비스를 통해 법률에서 금지하는 재화 및 서비스에 대한 광고성 정보를 전송되는 경우 수신동의 및 표기의무 사항 준수와 상관없이 역무제공 거부(서비스 계약해지 등) 또는 차단 등의 조치를 할 수 있습니다.</li>
|
||||
<li>다른 법령(예 : 약사법 제61조, 국민체육진흥법 제26조 등)에서 광고에 대한 처벌 규정이 적용되더라도 정보통신망법에 의한 이 규정을 위반하는 경우 별도로 본 규정도 적용됩니다.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="privacy_content spam_content">
|
||||
<p class="title" id="spam14">14. 불법스팸 신고</p>
|
||||
<div class="conbox spam_conbox">
|
||||
<p>불법스팸에 대한 신고는 한국인터넷진흥원 불법스팸대응센터(spam.kisa.or.kr / 국번없이 118)를 통해 가능합니다.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--// 불법스팸장지정책 -->
|
||||
|
||||
</div>
|
||||
<!--// 고객센터 - 이용약관 -->
|
||||
</div>
|
||||
<!--// send top -->
|
||||
</div>
|
||||
</div>
|
||||
<!--// content 영역 -->
|
||||
<!-- footer 영역 -->
|
||||
<!-- footer 영역 -->
|
||||
<footer id="footer" class="footer">
|
||||
<div class="footer_top">
|
||||
<div class="inner table">
|
||||
<ul class="table_cell">
|
||||
<li><a href="#">이용약관</a></li>
|
||||
<li class="SortLine fwRg c_white"><a href="#">개인정보취급방침</a></li>
|
||||
<li class="SortLine fwRg c_white"><a href="#">스팸관리정책</a></li>
|
||||
<li class="SortLine"><a href="#">불법스팸예방안내</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer_body">
|
||||
<div class="inner table">
|
||||
<div class="table_cell">
|
||||
<a href="#" class="footer_logo"><img src="/publish/images/CI_white.png" alt="문자온 CI"></a>
|
||||
<div class="footer_info">
|
||||
<p>주소 : 경기도 남양주시 다산중앙로 19번길 21 1027호, 1028호(블루웨일 지식산업센터 1차)</p>
|
||||
<p>사업자번호 : 653-87-00858 | 대표 : 유인식 | 통신판매등록번호 : 제 다산-12345호 | 문의전화 : 070-4786-0007</p>
|
||||
<p>Copyright 2020 ⓒ MUNJAON co. Ltd, All rights reserved.</p>
|
||||
</div>
|
||||
<div class="footer_service_center">
|
||||
<i></i>
|
||||
<div>
|
||||
<p>고객센터</p>
|
||||
<span class="footer_service_num">070-4786-0008</span>
|
||||
<span>E-mail : help@iten.co.kr</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<!--// footer 영역 -->
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
Reference in New Issue
Block a user