mjon_git/src/main/webapp/WEB-INF/jsp/web/login/EgovLoginGnrlUsr.jsp
2024-12-16 19:32:40 +09:00

676 lines
24 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page import="itn.com.cmm.LoginVO" %>
<!-- 암화화 순서에 유의 -->
<link rel="stylesheet" href="/publish/css/mem.css">
<script src="/publish/js/content.js"></script>
<script type="text/javascript" src="/js/RSA/rsa.js"></script>
<script type="text/javascript" src="/js/RSA/jsbn.js"></script>
<script type="text/javascript" src="/js/RSA/prng4.js"></script>
<script type="text/javascript" src="/js/RSA/rng.js"></script>
<script src="/publish/js/jquery-3.5.0.js"></script>
<script type="text/javascript">
$(document).ready(function (){
if(${!empty message}){
alert("${message}");
}
getid(document.loginForm2);
});
function press(event) { if (event.keyCode == 13) actionLogin(); }
function actionLoginPage() {
// 아이디 공백 제거
document.loginForm2.id_text2.value = $.trim(document.loginForm2.id_text2.value);
if (document.loginForm2.id_text2.value =="") {
alert("아이디를 입력하세요");
return;
} else if (document.loginForm2.password_text2.value =="") {
alert("비밀번호를 입력하세요");
return;
} else {
//IP체크 삭제 후 바로 로그인처리 - 22.05.03
// ipCheck();
actionLogin();
/* var rsa = new RSAKey();
rsa.setPublic($('#RSAModulus2').val(),$('#RSAExponent2').val());
var id = $("#id_text2");
var pw = $("#password_text2");
document.loginForm2.id.value = rsa.encrypt(id.val());
document.loginForm2.password.value = rsa.encrypt(pw.val());
document.loginForm2.action="<c:url value='/web/user/login/actionSecurityLogin.do'/>";
saveid(document.loginForm2);
document.loginForm2.submit(); */
}
}
function ipCheck(){
//로그인 시 IP 체크
var id = $("#id_text2").val().toLowerCase();
var password = $("#password_text2").val();
var ip = "${userIp}";
var IPCnt;
$.ajax({
url : "<c:url value='/web/user/login/selectIPCntAjax.do' />",
type : 'POST',
data : {id : id, ip : ip},
dataType:'json',
async : false,
success : function(returnData, status){
if(status == "success") {
if(returnData.IPCheck == 0){
IPCnt = returnData.IPCheck;
$("#tr_certHeader").val(returnData.tr_cert);
$("#tr_urlHeader").val(returnData.tr_url);
$("#tr_addHeader").val(returnData.tr_add);
var KMCIS_window;
//등록된 IP가 없을 시 KMC 본인인증 팝업 오픈
KMCIS_window = window.open('', 'KMCISWindow', 'width=425, height=550, resizable=0, scrollbars=no, status=0, titlebar=0, toolbar=0, left=435, top=250' );
document.reqHeaderKMCISForm.target = 'KMCISWindow';
document.reqHeaderKMCISForm.action = 'https://www.kmcert.com/kmcis/web/kmcisReq.jsp';
document.reqHeaderKMCISForm.submit();
return false;
}else{
actionLogin();
}
}else{ alert("로그인 정보가 올바르지 않습니다.");return false;}
},
error : function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
// Whois IP 국가코드 Check
var isKoreaIpAddress = true;
function whoisIpCountry() {
$.ajax({
type:"POST",
url: "/web/whois/whoisIpCountryAjax.do",
data: {},
dataType:'json',
async: true,
timeout: 300,
success: function (data) {
if(data.isSuccess == true) {
if (data.rspCode == "10000") {
if (data.countryCode.toUpperCase() != "KR" && data.countryCode.toUpperCase() != "NONE" && data.countryCode.toUpperCase() != "") {
isKoreaIpAddress = false;
//alert("해당 IP는 해외 IP로 확인되어, 로그인이 제한되었습니다.\n문자온 고객센터로 문의 바랍니다.");
}
}
}
},
error: function (e) {
}
});
}
function actionLogin(){
console.log('actionLogin : actionLogin')
setTimeout(function() {
if (isKoreaIpAddress == false) {
alert("해외 IP로 감지되어 로그인이 제한되었습니다.\n문자온 고객센터로 문의 바랍니다.");
location.href='/web/uat/uia/actionLogout.do';
return false;
}
// 로그인 START
var rsa = new RSAKey();
rsa.setPublic($('#RSAModulus2').val(),$('#RSAExponent2').val());
/* rsa.setPublic(document.loginForm2.RSAModulus.value, document.loginForm2.RSAExponent.value); */
var id = $("#id_text2");
var pw = $("#password_text2");
/* var id = document.loginForm2.id_text;
var pw = document.loginForm2.password_text; */
/* $("#id").val(rsa.encrypt(id.val())); */
/* $("#password").val(rsa.encrypt(pw.val())); */
document.loginForm2.id.value = rsa.encrypt(id.val().toLowerCase());
document.loginForm2.password.value = rsa.encrypt(pw.val());
//document.loginForm2.action="<c:url value='/web/user/login/actionSecurityLogin.do'/>";
saveid(document.loginForm2);
//document.loginForm2.submit();
var checkForm = $("form[name=loginForm2]").serialize() ;
$.ajax({
type : "POST",
async : false,
url : "/web/user/login/actionSecurityLoginBeforeHpAjax.do",
data : checkForm,
dataType:'json',
success : function(data) {
//alert(data.status);
//alert(data.data.moblphonNo);
if (data.status=="success"){
document.loginForm2.passFlag.value = data.passFlag;
if(data.passFlag == "Y")
{
actionLogin_end();
}
else
{
//번호인증팝업 띄우기
$("#input_list_item_1").hide();
$("#input_list_item_2").hide();
$("#input_list_item_3").hide();
$("#input_list_item_0").hide();
$("#input_list_item_4").show();
$("#input_list_item_5").show();
$("#input_list_item_6").show();
// $("#hp_text2").val(data.data.moblphonNo);
var $select = $('#hp_text2');
data.mberCertPhoneList.forEach(function(item) {
$select.append($('<option>', {
value: item.mbtlnum, // option의 value 값
text: item.mbtlnum+'('+item.certAlias+')' // option의 화면에 보이는 텍스트
}));
});
}
}else if (data.status=="fail"){
if (data.dormantYn=="Y"){
document.loginForm2.action="<c:url value='/web/user/humanPage.do'/>";
document.loginForm2.submit();
}else{
$("#ret_msg").show();
$("#ret_msg_info").html('<i></i>'+data.msg);
}
}
//alert(JSON.stringify(data));
console.log("sucess data1 : " + JSON.stringify(data));
if (data.isSuccess == true) {
console.log("fn_click_banner_add_stat sucess data2 : " + JSON.stringify(data));
}
else {
console.log("data.isSuccess not true ");
console.log("sucess data.msg : " + data.msg);
console.log("sucess data1 : " + JSON.stringify(data));
}
},
error : function(xhr, status, error) {
console.log("fn_click_banner_add_stat error : " + error);
console.log("fn_click_banner_add_stat xhr : " + JSON.stringify(xhr) + "\r\status : " + JSON.stringify(status) + "\r\error : " + JSON.stringify(error));
return false;
}
});
}, 600);
}
//아이디/휴대폰 번호 체크
function actionLogin_end(){
if (isKoreaIpAddress == false) {
alert("해외 IP로 감지되어 로그인이 제한되었습니다.\n문자온 고객센터로 문의 바랍니다.");
location.href='/web/uat/uia/actionLogout.do';
return false;
}
// 로그인 START
var rsa = new RSAKey();
rsa.setPublic($('#RSAModulus2').val(),$('#RSAExponent2').val());
/* rsa.setPublic(document.loginForm2.RSAModulus.value, document.loginForm2.RSAExponent.value); */
//var id = $("#id_text2");
//var pw = $("#password_text2");
var hp = $("#hp_text2").val();
var num = $("#num_text2").val();
/* var id = document.loginForm2.id_text;
var pw = document.loginForm2.password_text; */
/* $("#id").val(rsa.encrypt(id.val())); */
/* $("#password").val(rsa.encrypt(pw.val())); */
//document.loginForm2.id.value = rsa.encrypt(id.val().toLowerCase());
//document.loginForm2.password.value = rsa.encrypt(pw.val());
document.loginForm2.hp.value = hp;
document.loginForm2.num.value = num;
document.loginForm2.action="<c:url value='/web/user/login/actionSecurityLoginAfterHp.do'/>";
saveid(document.loginForm2);
document.loginForm2.submit();
}
//아이디/휴대폰 번호 체크
function step1IdCheck(){
document.checkForm.callTo.value = $('#hp_text2').val();
document.checkForm.userId.value = $('#id_text2').val().toLowerCase();
//document.checkForm.searchNm.value = $('#findPw_userNm').val();
if ($('#id_text2').val()==''){
alert("아이디를 입력해주세요.");
return;
}else if ($('#hp_text2').val()==''){
alert("핸드폰번호를 입력해주세요.");
return;
}
var checkForm = $("form[name=checkForm]").serialize() ;
$.ajax({
url : "<c:url value='/web/user/sendSysMsgDataAjax.do' />",
type : 'POST',
data : checkForm,
dataType:'json',
success : function(returnData, status){
if(status == "success") {
alert(returnData.message);
if(returnData.result == "success") {
timer();
}
}else{ alert("실패");return;}
},
error : function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
var time = 300; //기준시간 작성
var min = ""; //분
var sec = ""; //초
//인증번호 타이머
function timer(){
//setInterval(함수, 시간) : 주기적인 실행
var x = setInterval(function() {
//parseInt() : 정수를 반환
min = parseInt(time/60);
sec = time%60; //나머지를 계산
document.getElementById("timer").innerHTML = min + "분" + sec + "초";
time--;
//타임아웃 시
if (time < 0) {
clearInterval(x); //setInterval() 실행을 끝냄
document.getElementById("timer").innerHTML = "시간초과";
}
}, 1000);
if(time != 300){
time = 300;
clearInterval(x);
}
}
function actionLogin_bak(){
// Whois IP 국가코드
//whoisIpCountry();
setTimeout(function() {
if (isKoreaIpAddress == false) {
alert("해외 IP로 감지되어 로그인이 제한되었습니다.\n문자온 고객센터로 문의 바랍니다.");
location.href='/web/uat/uia/actionLogout.do';
return false;
}
// 로그인 START
var rsa = new RSAKey();
rsa.setPublic($('#RSAModulus2').val(),$('#RSAExponent2').val());
/* rsa.setPublic(document.loginForm2.RSAModulus.value, document.loginForm2.RSAExponent.value); */
var id = $("#id_text2");
var pw = $("#password_text2");
/* var id = document.loginForm2.id_text;
var pw = document.loginForm2.password_text; */
/* $("#id").val(rsa.encrypt(id.val())); */
/* $("#password").val(rsa.encrypt(pw.val())); */
document.loginForm2.id.value = rsa.encrypt(id.val().toLowerCase());
document.loginForm2.password.value = rsa.encrypt(pw.val());
document.loginForm2.action="<c:url value='/web/user/login/actionSecurityLogin.do'/>";
saveid(document.loginForm2);
document.loginForm2.submit();
}, 600);
}
//인증번호 발송 1분마다 한번씩 보내기
function sendMsgYn(){
document.checkForm.receive.value = $('#hp_text2').val();
if ($('#hp_text2').val()==''){
alert("휴대폰 번호를 입력해주세요.");
return;
}
var checkForm = $("form[name=checkForm]").serialize() ;
$.ajax({
url : "<c:url value='/web/user/sendSysMsgSelectAjax.do' />",
type : 'POST',
data : checkForm,
dataType:'json',
success : function(returnData, status){
if(status == "success") {
if(returnData.compare){
step1IdCheck();
}else{
alert("인증번호 발송은 1분마다 가능합니다.");
return;
}
}else{ alert("실패");return;}
},
error : function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
function textClear(pram){
var area = pram;
$('#'+area).val('');
}
function saveid(form) {
var expdate = new Date();
// 기본적으로 30일동안 기억하게 함. 일수를 조절하려면 * 30에서 숫자를 조절하면 됨
if (form.checkId.checked)
expdate.setTime(expdate.getTime() + 1000 * 3600 * 24 * 30); // 30일
else
expdate.setTime(expdate.getTime() - 1); // 쿠키 삭제조건
setCookie("ncms_saveid", form.id_text2.value, expdate);
}
function setCookie (name, value, expires) {
document.cookie = name + "=" + escape (value) + "; path=/; expires=" + expires.toGMTString();
}
function getid(form){
if(getCookie("ncms_saveid") != ""){
form.checkId.checked = (form.id_text2.value = getCookie("ncms_saveid"));
}
/* form.checkId.checked = ((form.id_text.value = getCookie("ncms_saveid")) != ""); */
}
function getCookie(Name) {
var search = Name + "="
if (document.cookie.length > 0) { // 쿠키가 설정되어 있다면
offset = document.cookie.indexOf(search)
if (offset != -1) { // 쿠키가 존재하면
offset += search.length
// set index of beginning of value
end = document.cookie.indexOf(";", offset)
// 쿠키 값의 마지막 위치 인덱스 번호 설정
if (end == -1)
end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
}
return "";
}
//로그인 화면 비밀번호 보기 추가
function fn_passView(obj){
var passInputType = $('#password_text2').prop("type");
if(passInputType == 'text'){
$('#password_text2').prop("type", "password");
//비밀번호 보호 이미지
$(obj).find('img').attr('src', '/publish/images/content/password_protect.png');
}else{
$('#password_text2').prop("type", "text");
//비밀번호 비보호 이미지
$(obj).find('img').attr('src', '/publish/images/content/password_protect2.png');
}
}
//함수명: 배너 클릭하면 통계 추가 (2023-05-17 최남규) - 메인화면(mainPage.jsp)에도 같음 함수명 추가했음(단, 배너 갯수 다름)
//설명: 베너코드(ITN054)와 메뉴코드(ITN055) 조합코드 전달 후 Ajax.do 에서 '_' 분리후 날짜와 배너코드와 메뉴코드와 클릭수 +1
// 테이블(mj_banner_click_stat)에 최초 등록 후 이후 전체접속수(CLICK_A_CNT+1)를 수정
//배너 추가될때 배너코드를 공통코드(ITN054) 추가
//배너클릭통계-배너코드(ITN054): 원키퍼: 001, 간판다움: 002, NORDIC TOOLS: 003, 폰더하기: 004
//배너클릭통계-메뉴코드(ITN055): 메인:01, 로그인: 02
function fn_click_banner_add_stat(bannerMenuCode){
console.log("fn_click_banner_add_stat 배너 선택 "+ bannerMenuCode) ;
if (bannerMenuCode == "001_02")
{
window.open("https://www.one-keeper.co.kr/cp/munjaon/index.aspx"); // 새탭에서 열림
} else if (bannerMenuCode == "002_02")
{
window.open("http://ganpandaum.co.kr"); // 새탭에서 열림
}
var _param = { "bannerMenuCode" : bannerMenuCode }
$.ajax({
type : "POST",
async : false,
url : "/web/main/insertBannerClickStatAjax.do",
data : _param,
dataType:'json',
success : function(data) {
//alert(JSON.stringify(data));
console.log("sucess data1 : " + JSON.stringify(data));
if (data.isSuccess == true) {
console.log("fn_click_banner_add_stat sucess data2 : " + JSON.stringify(data));
}
else {
console.log("data.isSuccess not true ");
console.log("sucess data.msg : " + data.msg);
console.log("sucess data1 : " + JSON.stringify(data));
}
},
error : function(xhr, status, error) {
console.log("fn_click_banner_add_stat error : " + error);
console.log("fn_click_banner_add_stat xhr : " + JSON.stringify(xhr) + "\r\status : " + JSON.stringify(status) + "\r\error : " + JSON.stringify(error));
return false;
}
});
}
</script>
<div class="inner">
<form:form id="loginForm2" name="loginForm2" method="post">
<input type="hidden" name="beforeUrl" value="<c:out value='/web/user/login/login.do'/>"/>
<input type="hidden" name="userSe" value="USR"/>
<input type="hidden" id="RSAModulus2" value="${RSAModulus}"/>
<input type="hidden" id="RSAExponent2" value="${RSAExponent}"/>
<input type="hidden" id="id" name="id">
<input type="hidden" id="password" name="password">
<input type="hidden" name="goEventPay" value="${goEventPay}"/>
<input type="hidden" id="hp" name="hp">
<input type="hidden" id="num" name="num">
<input type="hidden" id="passFlag" name="passFlag">
<div class="send_top">
<div class="mypage_content current">
<div class="heading">
<h2>로그인</h2>
</div>
<div class="mem_cont_in widthS login_wrap">
<div class="input_list">
<p class="welcome">
<span>문자온</span>에 오신것을 환영합니다.<br>
<span class="c_222 fwMd">로그인</span>해주세요.
</p>
<div class="input_list_item" id="input_list_item_1">
<div class="input_left">아이디</div>
<div class="input_right">
<label for="list_inputType1" class="label">아이디</label>
<input type="text" id="id_text2" class="list_inputType1" placeholder="아이디를 입력해주세요"
onfocus="this.placeholder=''" onblur="this.placeholder='아이디를 입력해주세요'" onkeypress="press(event);" maxlength="20">
</div>
<div class="login_del">
<button type="button" onclick="textClear('id_text2')" tabindex="-1">
<img src="/publish/images/content/login_del.png" alt="입력 삭제">
</button>
</div>
</div>
<div class="input_list_item" id="input_list_item_2">
<div class="input_left">비밀번호</div>
<div class="input_right">
<label for="list_inputType1" class="label">비밀번호 입력</label>
<input type="password" id="password_text2" class="list_inputType1" placeholder="비밀번호를 입력해주세요"
onfocus="this.placeholder=''" onblur="this.placeholder='비밀번호를 입력해주세요'" onkeypress="if(event.keyCode==13) {actionLoginPage(); return false;}">
</div>
<div class="login_del">
<!-- <i class="password_protect"></i> -->
<button type="button" onclick="fn_passView(this); return false;" tabindex="-1">
<img id="passViewImg" src="/publish/images/content/password_protect.png" alt="비밀번호 보기">
</button>
<button type="button" onclick="textClear('password_text2')" tabindex="-1">
<img src="/publish/images/content/login_del.png" alt="입력 삭제">
</button>
</div>
</div>
<c:if test="${fail}">
<div class="pass_no2" id="input_list_item_0">
<p>
<i></i>아이디 또는 비밀번호가 일치하지 않습니다.
</p>
</div>
</c:if>
<c:if test="${fail2}">
<div class="pass_no2" id="input_list_item_0">
<p>
<i></i>인증번호가 일치하지 않습니다.
</p>
</div>
</c:if>
<div class="pass_no2" style="display:none;" id="ret_msg">
<p id="ret_msg_info">
<i></i>아이디 또는 비밀번호가 일치하지 않습니다.
</p>
</div>
<div class="mem_btnWrap2" id="input_list_item_3">
<button type="button" class="mem_btn5" onclick="javascript:actionLoginPage(); return false;">로그인</button>
</div>
<div class="input_list_item" id="input_list_item_4" style="display:none;">
<div class="input_left">휴대폰번호</div>
<div class="input_right">
<label for="list_inputType1" class="label">휴대폰번호</label>
<!-- <input type="text" id="hp_text2" class="list_inputType1" placeholder="가입휴대폰번호" style="width: 250px;" -->
<!-- onfocus="this.placeholder=''" onblur="this.placeholder='가입휴대폰번호'" maxlength="20" readonly> -->
<select id="hp_text2" class="list_selType1" style="width:70%;">
</select>
</div>
<div class="login_del">
<button type="button" class="btnType btnType3" onclick="sendMsgYn();">인증번호 받기</button>
</div>
</div>
<div class="input_list_item" id="input_list_item_5" style="display:none;">
<div class="input_left">인증번호 입력</div>
<div class="input_right">
<label for="list_inputType1" class="label">인증번호 입력</label>
<input type="text" id="num_text2" class="list_inputType1" placeholder="인증번호를 입력해주세요" maxlength="6"
onfocus="this.placeholder=''" onblur="this.placeholder='인증번호를 입력해주세요'" onkeypress="if(event.keyCode==13) {return false;}">
</div>
<div class="login_del">
<!-- <i class="password_protect"></i> -->
<button type="button" onclick="textClear('num_text2')" tabindex="-1">
<img src="/publish/images/content/login_del.png" alt="입력 삭제">
</button>
</div>
</div>
<div class="mem_btnWrap2" id="input_list_item_6" style="display:none;">
<button type="button" class="mem_btn5" onclick="javascript:actionLogin_end(); return false;">확인</button>
</div>
<div class="lgoin_bottom clearfix">
<div>
<div class="checkbox_wrap">
<input type="checkbox" id="save_id" name="checkId" title="아이디 저장" class="joinCheckbox type3">
<label for="save_id">아이디 저장</label>
</div>
</div>
<ul>
<li><a href="/web/user/login/selectUserDept.do">회원가입</a></li>
<li class="SortLine"><a href="/web/user/findUserId.do">아이디찾기</a></li>
<li class="SortLine"><a href="/web/user/rePassword.do">비밀번호찾기</a></li>
</ul>
</div>
<ul class="adv_list">
<!-- <li><a href="https://www.ubikey.co.kr/" target="_blank"><img src="/publish/images/adv/adv_login_ubikey.png" alt="인증서를 사용하는 곳이면 어디서나 편리하게! 휴대폰 인증서 서비스 UBIKEY"></a></li> -->
<!--
<li><a href="https://twww.one-keeper.co.kr/cp/munjaon/index.aspx" target="_blank"><img src="/publish/images/adv/adv_login_onekeeper.png" alt="소중한 내 개인정보! 원키퍼로 내가 지킨다!"></a></li>
<li><a href="http://ganpandaum.co.kr/" target="_blank"><img src="/publish/images/adv/adv_login_ganpandaum.png" alt="간판다움 간판 잘하는 청년들이 뭉쳤다 간판, 인테리어, 네온, 썬팅, 어닝, 실사"></a></li>
-->
<!--
<li><a href="#" target="_blank" onclick="fn_click_banner_add_stat('001_02'); return false;" ><img src="/publish/images/adv/adv_login_onekeeper.png" alt="소중한 내 개인정보! 원키퍼로 내가 지킨다!"></a></li>
<li><a href="#" target="_blank" onclick="fn_click_banner_add_stat('002_02'); return false;" ><img src="/publish/images/adv/adv_login_ganpandaum.png" alt="간판다움 간판 잘하는 청년들이 뭉쳤다 간판, 인테리어, 네온, 썬팅, 어닝, 실사"></a></li>
-->
</ul>
</div>
</div>
<!--// 비밀번호 확인 -->
</div>
</div>
<!--// 마이페이지 - 회원정보 변경 -->
</form:form>
<form name="checkForm" id="checkForm" method="post" action="#">
<input type="hidden" name="searchNm" value=""/>
<input type="hidden" name="userId" value=""/>
<input type="hidden" name="callTo" value=""/>
<input type="hidden" name="receive" value=""/>
</form>
</div>