Compare commits

..

2 Commits

Author SHA1 Message Date
김현욱
8fd320df3f Merge remote-tracking branch 'origin/master' 2025-12-26 18:29:32 +09:00
김현욱
5bceea8e2a 회원정보수정 이메일 인증 추가(1) 2025-12-26 18:29:18 +09:00
3 changed files with 751 additions and 157 deletions

View File

@@ -12,11 +12,11 @@ public class MyMbrEmailChngVO extends AbstractVO {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/*id*/ /*id*/
@NotBlank(message = "아이디") // @NotBlank(message = "아이디")
private String id; private String id;
/*도메인*/ /*도메인*/
@NotBlank(message = "도메인") // @NotBlank(message = "도메인")
private String domain; private String domain;
/*이메일주소*/ /*이메일주소*/

View File

@@ -37,7 +37,8 @@
<script> <script>
$(document).ready(function() { $(document).ready(function() {
fn_show_editContent(); fn_show_editContent();
fn_show_phoneAuth(); fn_show_emailAuth();
// fn_show_phoneAuth();
first = 0; first = 0;
$(".signUp__inputBox__alertText").hide(); $(".signUp__inputBox__alertText").hide();
@@ -45,16 +46,17 @@
fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw'); fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw');
fn_alert_hide($("#newPassword"), $("#newPasswordAlert"), 'pw'); fn_alert_hide($("#newPassword"), $("#newPasswordAlert"), 'pw');
fn_alert_hide($("#checkPassword"), $("#checkPasswordAlert"), 'pw'); fn_alert_hide($("#checkPassword"), $("#checkPasswordAlert"), 'pw');
fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert")); // fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert"));
fn_alert_hide($("#email"), $("#emailAlert"));
fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert")); fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert"));
fn_alert_hide($("#id"), $("#emailAlert")); // fn_alert_hide($("#id"), $("#emailAlert"));
fn_alert_hide($("#dtlAdres"), $("#postcodeAlert")); fn_alert_hide($("#dtlAdres"), $("#postcodeAlert"));
// fn_alert_hide_selected(); // fn_alert_hide_selected();
//휴대폰번호 포매팅 //휴대폰번호 포매팅
if($("#lagacyMbtlnb").text() !== ''){ // if($("#lagacyMbtlnb").text() !== ''){
fn_set_lagacyMbtlnb($("#lagacyMbtlnb").text()); // fn_set_lagacyMbtlnb($("#lagacyMbtlnb").text());
} // }
}); });
/* ******************************************************** /* ********************************************************
@@ -108,6 +110,84 @@
} }
} }
/* ********************************************************
* 기존 가입 여부 조회(이메일)
******************************************************** */
const fn_check_mbrwithdrawal_email = function() {
let mbrNm = $('#mbrNm').val();
// let mbtlnb = $('#lagacyEmail').text().trim().replace(/-/g, '')
let email = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': email
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectMbrwithdrawalSearchEmail"/>',
data : params,
success : function(result) {
let mbrWithDrawalList = JSON.parse(result.resBody.result).mbrWithDrawalList;
fn_make_rejoinInforList_email(mbrWithDrawalList);
}
});
}
/* ********************************************************
* 기존 가입 내역(이메일)
******************************************************** */
const fn_make_rejoinInforList_email = function(_data) {
let tbodyClone;
let isExtMember = false;
let isDupEmail = false;
if (_data.length > 0) {
$('#rejoinContainer').show();
for (let i = 0; i < _data.length; i++) {
if (_data[i].mbrId.startsWith('M-')) {
isExtMember = true;
tbodyClone +='<tr>';
tbodyClone +=' <td style="display : none;">' + _data[i].mbrInnb + '</td>';
tbodyClone +=' <td>' + _data[i].brand + '</td>';
tbodyClone +=' <td>' + _data[i].extrlIntrlckDv + '</td>';
tbodyClone +=' <td>' + _data[i].emailAdres + '</td>';
tbodyClone +='</tr>';
} else {
$('#rejoinContainer').hide();
isExtMember = false;
isDupEmail = true;
break;
}
}
tbodyClone +='<tr style="display:none;"><td><input type="text" name="extMember" value="'+_data[0].mbrInnb+'"/></td></tr>';
if (isExtMember) {
alert('계정정보 연동을 진행합니다.');
}
$('#rejoinSelect').html(tbodyClone);
}
if (isDupEmail) {
alert('이미 가입된 이메일 정보가 있습니다. \n 다른 이메일을 입력해 주세요.');
} else {
$('#emailAuthContent').show();
$('#mbtlCert').focus();
fn_email_sending_number();
}
}
/* ******************************************************** /* ********************************************************
* 기존 가입 여부 조회 * 기존 가입 여부 조회
******************************************************** */ ******************************************************** */
@@ -293,7 +373,8 @@
seconds--; seconds--;
} else { } else {
fn_stop_timer(); fn_stop_email_timer();
// fn_stop_timer();
alert('인증번호 유효시간이 만료되었습니다.'); alert('인증번호 유효시간이 만료되었습니다.');
} }
} }
@@ -357,6 +438,65 @@
timerRunning = true; timerRunning = true;
} }
/* ********************************************************
* 이메일 인증 번호 발송
******************************************************** */
first = 0;
mbtlCert = '';
const fn_email_sending_number = function() {
if(timerRunning){
return;
}
if(mbtlCert === $('#email').val()){
first++;
}else{
first = 0;
}
mbtlCert = $('#email').val();
let mbrNm = $('#mbrNm').val();
let email = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': email
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/insertEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
if (first > 0) {
alert('인증번호가 재발송되었습니다.');
} else if (first === 0) {
alert('인증번호가 발송되었습니다.');
first++;
} else {
return;
}
$('#sndngInnb').val(result.sndngInnb);
}else {
alert('인증번호 발송에 실패했습니다.');
fn_stop_email_timer();
return;
}
}
});
$('#email').attr("readonly", true);
clearInterval(countdown);
seconds = 300;
fn_set_timeOut();
countdown = setInterval(fn_set_timeOut, 1000);
timerRunning = true;
}
/* ******************************************************** /* ********************************************************
* 타이머 정지 함수 * 타이머 정지 함수
******************************************************** */ ******************************************************** */
@@ -371,6 +511,20 @@
} }
} }
/* ********************************************************
* 타이머 정지 함수(이메일)
******************************************************** */
const fn_stop_email_timer = function() {
if (timerRunning) {
clearInterval(countdown);
$('#timer').text('05:00');
$('#mbtlCert').val('');
$('#emailAuthContent').hide();
$('#email').attr("readonly", false);
timerRunning = false;
}
}
/* ******************************************************** /* ********************************************************
* 휴대폰 인증 확인 * 휴대폰 인증 확인
******************************************************** */ ******************************************************** */
@@ -458,63 +612,155 @@
} }
}; };
/********************************************** /* ********************************************************
* 이메일 형식 유효성 체크 (올바른 이메일 형식일 때 True) * 이메일 인증 확인
***********************************************/ ******************************************************** */
const fn_check_email = function(email) { isChkd_own_email = false;
const fn_confim_own_email = function() {
var regular = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i; if (first <= 0) return;
let sndngInnb = $('#sndngInnb').val();
let email = $('#email').val().trim().replace(/-/g, '');
let crtnb = $('#mbtlCert').val();
fn_stop_email_timer();
let params = {
'sndngInnb': sndngInnb,
'email': email,
'crtnb' : crtnb
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
$('#emailAuthOkBtn').show();
$('#emailAuthBtn').hide();
isChkd_own_email = true;
fn_change_email();
$('#email').attr("readonly", true);
}else {
alert('인증번호가 일치하지 않습니다.');
return;
}
}
});
if(regular.test(email)){
return true;
}else{
return false;
}
} }
/* ******************************************************** /* ********************************************************
* email 합치기 * 이메일 인증 버튼 클릭시, 이메일 인증 박스 노출
******************************************************** */ ******************************************************** */
const fn_make_email = function() { const fn_show_emailAuth = function() {
let emailAuthBtn = $('#emailAuthBtn');
let emailAuthContent = $('#emailAuthContent');
let domain = $('#domain').val(); emailAuthContent.hide();
let id = $('#id').val().trim();
$('[name=email]').val(id + '@' + domain);
return $('[name=email]').val(); emailAuthBtn.click(function () {
if(!$('#email').val()){
alert('이메일 주소를 입력해 주세요.');
$('#email').focus();
return;
}
// 기존 가입 여부 확인
fn_check_mbrwithdrawal_email();
// $('#emailAuthContent').show();
// $('#mbtlCert').focus();
// fn_email_sending_number();
});
} }
/* ******************************************************** /* ********************************************************
* 회원 정보 수정(이메일 변경) * 회원 정보 수정(이메일 변경)
******************************************************** */ ******************************************************** */
const fn_change_email = function() { const fn_change_email = function() {
let email = fn_make_email(); if (confirm('이메일 주소를 <spring:message code="confirm.common.update"/>')) {
if(!fn_check_email(email)) {
alert('올바른 이메일 형식이 아닙니다.');
$('#id').focus();
return;
}
if (confirm('이메일을 <spring:message code="confirm.common.update"/>')) {
$.ajax({ $.ajax({
type: "post", type: "post",
url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>', url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>',
data: { data: {
id : $("#id").val().trim(), email : $("#email").val()
domain: $("#domain").val().trim(),
email : email
}, },
success: function (data) { success: function (data) {
let newEmail = JSON.parse(data.resBody.result); let newEmail = JSON.parse(data.resBody.result);
newEmail = newEmail.paramVO.email; newEmail = newEmail.paramVO.email;
$("#lagacyEmail").text(newEmail); $("#lagacyEmail").text(newEmail);
$("#inputEmail").val(newEmail);
alert('<spring:message code="success.common.update"/>'); alert('<spring:message code="success.common.update"/>');
$("#emailChngBtn").click(); $("#emailChngBtn").click();
} }
}); });
} }
} };
/**********************************************
* 이메일 형식 유효성 체크 (올바른 이메일 형식일 때 True)
***********************************************/
// const fn_check_email = function(email) {
//
// var regular = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
//
// if(regular.test(email)){
// return true;
// }else{
// return false;
// }
// }
/* ********************************************************
* email 합치기
******************************************************** */
// const fn_make_email = function() {
//
// let domain = $('#domain').val();
// let id = $('#id').val().trim();
// $('[name=email]').val(id + '@' + domain);
//
// return $('[name=email]').val();
// }
/* ********************************************************
* 회원 정보 수정(이메일 변경)
******************************************************** */
<%--const fn_change_email = function() {--%>
<%-- let email = fn_make_email();--%>
<%-- if(!fn_check_email(email)) {--%>
<%-- alert('올바른 이메일 형식이 아닙니다.');--%>
<%-- $('#id').focus();--%>
<%-- return;--%>
<%-- }--%>
<%-- if (confirm('이메일을 <spring:message code="confirm.common.update"/>')) {--%>
<%-- $.ajax({--%>
<%-- type: "post",--%>
<%-- url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>',--%>
<%-- data: {--%>
<%-- id : $("#id").val().trim(),--%>
<%-- domain: $("#domain").val().trim(),--%>
<%-- email : email--%>
<%-- },--%>
<%-- success: function (data) {--%>
<%-- let newEmail = JSON.parse(data.resBody.result);--%>
<%-- newEmail = newEmail.paramVO.email;--%>
<%-- $("#lagacyEmail").text(newEmail);--%>
<%-- alert('<spring:message code="success.common.update"/>');--%>
<%-- $("#emailChngBtn").click();--%>
<%-- }--%>
<%-- });--%>
<%-- }--%>
<%--}--%>
/* ******************************************************** /* ********************************************************
* 우편번호 찾기 * 우편번호 찾기
@@ -658,20 +904,30 @@
//초기화 //초기화
first = 0; first = 0;
fn_stop_timer(); fn_stop_email_timer();
// fn_stop_timer();
$('.update-text').val(''); $('.update-text').val('');
$('.editAccount__editContent .signUp__inputBox__alertText').hide(); $('.editAccount__editContent .signUp__inputBox__alertText').hide();
$('select[name="domain"]').val('직접입력').niceSelect('update'); // $('select[name="domain"]').val('직접입력').niceSelect('update');
fn_set_domain('직접입력'); // fn_set_domain('직접입력');
if(isChkd_own){ if(isChkd_own_email){
$('.update-text').attr("readonly", false); $('.update-text').attr("readonly", false);
$('#phoneAuthBtn').show(); $('#emailAuthBtn').show();
$('#phoneAuthOkBtn').hide(); $('#emailAuthOkBtn').hide();
$('#resIdForm').hide(); $('#resIdForm').hide();
$('#resPswdForm').hide(); $('#resPswdForm').hide();
isChkd_own = false; isChkd_own_email = false;
} }
// if(isChkd_own){
// $('.update-text').attr("readonly", false);
// $('#phoneAuthBtn').show();
// $('#phoneAuthOkBtn').hide();
// $('#resIdForm').hide();
// $('#resPswdForm').hide();
// isChkd_own = false;
// }
} }
/* ******************************************************** /* ********************************************************
@@ -875,31 +1131,63 @@
</c:choose> </c:choose>
</td> </td>
</tr> </tr>
<%-- <tr>--%>
<%-- <th>--%>
<%-- <span class="editAccount__title">휴대폰번호</span>--%>
<%-- </th>--%>
<%-- <td>--%>
<%-- <span class="editAccount__text" id="lagacyMbtlnb"><c:out value="${ resultMap.result.mbtlnb}"/></span>--%>
<%-- <button type="button" class="btn md gray2 editAccount__editBtn" id="mbtlnbChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>--%>
<%-- <div class="editAccount__editContent" id="phoneInputContent">--%>
<%-- <div class="inputWithBtn">--%>
<%-- <input type="text" class="input-text full number update-text" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13">--%>
<%-- <input type="hidden" name="mbtlnb" value="<c:out value="${resultMap.result.mbtlnb}"/>" id="inputMbtlnb">--%>
<%-- <button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button>--%>
<%-- <!-- 인증완료시 버튼 -->--%>
<%-- <button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>--%>
<%-- </div>--%>
<%-- <p class="signUp__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p>--%>
<%-- <div class="phoneAuth" id="phoneAuthContent">--%>
<%-- <input type="hidden" id="sndngInnb">--%>
<%-- <div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <div class="inputTimer">--%>
<%-- <input type="text" class="input-text full number update-text" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">--%>
<%-- <span class="inputTimer__time" id="timer">03:00</span>--%>
<%-- </div>--%>
<%-- <button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button>--%>
<%-- </div>--%>
<%-- <p class="signUp__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </td>--%>
<%-- </tr>--%>
<tr> <tr>
<th> <th>
<span class="editAccount__title">휴대폰번호</span> <span class="editAccount__title">이메일</span>
</th> </th>
<td> <td>
<span class="editAccount__text" id="lagacyMbtlnb"><c:out value="${ resultMap.result.mbtlnb}"/></span> <span class="editAccount__text" id="lagacyEmail"><c:out value="${ resultMap.result.email}"/></span>
<button type="button" class="btn md gray2 editAccount__editBtn" id="mbtlnbChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button> <button type="button" class="btn md gray2 editAccount__editBtn" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>
<div class="editAccount__editContent" id="phoneInputContent"> <div class="editAccount__editContent" id="emailInputContent">
<div class="inputWithBtn"> <div class="inputWithBtn">
<input type="text" class="input-text full number update-text" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" maxlength="13"> <input type="text" class="input-text full update-text" id="email" title="이메일" placeholder="이메일을 입력해 주세요" maxlength="190">
<input type="hidden" name="mbtlnb" value="<c:out value="${resultMap.result.mbtlnb}"/>" id="inputMbtlnb"> <input type="hidden" name="email" value="<c:out value="${resultMap.result.email}"/>" id="inputEmail">
<button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button> <button type="button" class="btn md theme outline" id="emailAuthBtn"><spring:message code="button.certificationEmail"/></button>
<!-- 인증완료시 버튼 --> <!-- 인증완료시 버튼 -->
<button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button> <button type="button" class="btn md outline" id="emailAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>
</div> </div>
<p class="signUp__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p> <p class="signUp__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>
<div class="phoneAuth" id="phoneAuthContent"> <div class="phoneAuth" id="emailAuthContent">
<input type="hidden" id="sndngInnb"> <input type="hidden" id="sndngInnb">
<div> <div>
<div class="inputWithBtn"> <div class="inputWithBtn">
<div class="inputTimer"> <div class="inputTimer">
<input type="text" class="input-text full number update-text" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6"> <input type="text" class="input-text full number update-text" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">
<span class="inputTimer__time" id="timer">03:00</span> <span class="inputTimer__time" id="timer">05:00</span>
</div> </div>
<button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button> <button type="button" class="btn md gray" onclick="fn_confim_own_email();"><spring:message code="button.ok"/></button>
</div> </div>
<p class="signUp__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p> <p class="signUp__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>
</div> </div>
@@ -907,36 +1195,36 @@
</div> </div>
</td> </td>
</tr> </tr>
<tr> <%-- <tr>--%>
<th> <%-- <th>--%>
<span class="editAccount__title">이메일</span> <%-- <span class="editAccount__title">이메일</span>--%>
</th> <%-- </th>--%>
<td> <%-- <td>--%>
<span class="editAccount__text" id="lagacyEmail"><c:out value="${ resultMap.result.email }"/></span> <%-- <span class="editAccount__text" id="lagacyEmail"><c:out value="${ resultMap.result.email }"/></span>--%>
<button type="button" class="btn md gray2 editAccount__editBtn" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button> <%-- <button type="button" class="btn md gray2 editAccount__editBtn" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>--%>
<div class="editAccount__editContent"> <%-- <div class="editAccount__editContent">--%>
<div class="editAccount__innerBox"> <%-- <div class="editAccount__innerBox">--%>
<input type="hidden" name="email" value=""/> <%-- <input type="hidden" name="email" value=""/>--%>
<div class="inputEmail"> <%-- <div class="inputEmail">--%>
<input class="input-text full update-text" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="25"> <%-- <input class="input-text full update-text" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="25">--%>
<span class="inputEmail__at">@</span> <%-- <span class="inputEmail__at">@</span>--%>
<input class="input-text full" type="text" id="domain" title="이메일 domain" maxlength="25"> <%-- <input class="input-text full" type="text" id="domain" title="이메일 domain" maxlength="25">--%>
<div class="select-box"> <%-- <div class="select-box">--%>
<select name="domain" title="이메일 자동발송 발신주소" onchange="fn_set_domain(this.value);"> <%-- <select name="domain" title="이메일 자동발송 발신주소" onchange="fn_set_domain(this.value);">--%>
<c:forEach var="email" items="${resultMap.email}" varStatus="status"> <%-- <c:forEach var="email" items="${resultMap.email}" varStatus="status">--%>
<option value="${email.cdNm}" ${f:setSelected(email.cd, '99')}><c:out value="${email.cdNm}"/></option> <%-- <option value="${email.cdNm}" ${f:setSelected(email.cd, '99')}><c:out value="${email.cdNm}"/></option>--%>
</c:forEach> <%-- </c:forEach>--%>
</select> <%-- </select>--%>
</div> <%-- </div>--%>
</div> <%-- </div>--%>
<p class="signUp__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p> <%-- <p class="signUp__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>--%>
<div class="editAccount__innerBtnContainer"> <%-- <div class="editAccount__innerBtnContainer">--%>
<button type="button" class="btn outline full lg" onclick="fn_change_email();"><spring:message code="button.ok"/></button> <%-- <button type="button" class="btn outline full lg" onclick="fn_change_email();"><spring:message code="button.ok"/></button>--%>
</div> <%-- </div>--%>
</div> <%-- </div>--%>
</div> <%-- </div>--%>
</td> <%-- </td>--%>
</tr> <%-- </tr>--%>
<tr> <tr>
<th> <th>
<span class="editAccount__title">생년월<span class="required-asterisk">*</span></span> <span class="editAccount__title">생년월<span class="required-asterisk">*</span></span>

View File

@@ -35,7 +35,8 @@
<script> <script>
$(document).ready(function() { $(document).ready(function() {
fn_show_editContent(); fn_show_editContent();
fn_show_phoneAuth(); fn_show_emailAuth();
// fn_show_phoneAuth();
first = 0; first = 0;
$(".userForm__inputBox__alertText").hide(); $(".userForm__inputBox__alertText").hide();
@@ -43,9 +44,10 @@
fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw'); fn_alert_hide($("#mbrPassword"), $("#mbrPasswordAlert"), 'pw');
fn_alert_hide($("#newPassword"), $("#newPasswordAlert"), 'pw'); fn_alert_hide($("#newPassword"), $("#newPasswordAlert"), 'pw');
fn_alert_hide($("#checkPassword"), $("#checkPasswordAlert"), 'pw'); fn_alert_hide($("#checkPassword"), $("#checkPasswordAlert"), 'pw');
fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert")); // fn_alert_hide($("#mbtlnb"), $("#mbtlnbAlert"));
fn_alert_hide($("#email"), $("#emailAlert"));
fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert")); fn_alert_hide($("#mbtlCert"), $("#mbtlCertAlert"));
fn_alert_hide($("#id"), $("#emailAlert")); // fn_alert_hide($("#id"), $("#emailAlert"));
fn_alert_hide($("#dtlAdres"), $("#postcodeAlert")); fn_alert_hide($("#dtlAdres"), $("#postcodeAlert"));
// fn_alert_hide_selected(); // fn_alert_hide_selected();
@@ -53,9 +55,9 @@
e.preventDefault(); e.preventDefault();
}); });
//휴대폰번호 포매팅 //휴대폰번호 포매팅
if($("#mbtlnb").val() !== ''){ // if($("#mbtlnb").val() !== ''){
fn_set_lagacyMbtlnb($("#mbtlnb").val()); // fn_set_lagacyMbtlnb($("#mbtlnb").val());
} // }
/* ******************************************************** /* ********************************************************
* 모달 배경화면 스크롤 방지 * 모달 배경화면 스크롤 방지
@@ -150,6 +152,81 @@
} }
} }
/* ********************************************************
* 기존 가입 여부 조회(이메일)
******************************************************** */
const fn_check_mbrwithdrawal_email = function() {
let mbrNm = $('#mbrNm').val();
let email = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': email
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectMbrwithdrawalSearchEmail"/>',
data : params,
success : function(result) {
let mbrWithDrawalList = JSON.parse(result.resBody.result).mbrWithDrawalList;
fn_make_rejoinInforList_email(mbrWithDrawalList);
}
});
}
/* ********************************************************
* 기존 가입 내역(이메일)
******************************************************** */
const fn_make_rejoinInforList_email = function(_data) {
let tbodyClone;
let isExtMember = false;
let isDupEmail = false;
if (_data.length > 0) {
$('#rejoinContainer').show();
for (let i = 0; i < _data.length; i++) {
if (_data[i].mbrId.startsWith('M-')) {
isExtMember = true;
tbodyClone +='<tr>';
tbodyClone +=' <td style="display : none;">' + _data[i].mbrInnb + '</td>';
tbodyClone +=' <td>' + _data[i].brand + '</td>';
tbodyClone +=' <td>' + _data[i].extrlIntrlckDv + '</td>';
tbodyClone +=' <td>' + _data[i].emailAdres + '</td>';
tbodyClone +='</tr>';
} else {
$('#rejoinContainer').hide();
isExtMember = false;
isDupEmail = true;
break;
}
}
tbodyClone +='<tr style="display:none;"><td><input type="text" name="extMember" value="'+_data[0].mbrInnb+'"/></td></tr>';
if (isExtMember) {
fn_alert_show('계정정보 연동을 진행합니다.');
}
$('#rejoinSelect').html(tbodyClone);
}
if (isDupEmail) {
alert('이미 가입된 이메일 정보가 있습니다. \n 다른 이메일을 입력해 주세요.');
} else {
$('#emailAuthContent').show();
$('#mbtlCert').focus();
fn_email_sending_number();
}
}
/* ******************************************************** /* ********************************************************
* 기존 가입 여부 조회 * 기존 가입 여부 조회
******************************************************** */ ******************************************************** */
@@ -335,7 +412,8 @@
seconds--; seconds--;
} else { } else {
fn_stop_timer(); fn_stop_email_timer();
// fn_stop_timer();
fn_alert_show('인증번호 유효시간이 만료되었습니다.'); fn_alert_show('인증번호 유효시간이 만료되었습니다.');
} }
} }
@@ -400,6 +478,66 @@
timerRunning = true; timerRunning = true;
} }
/* ********************************************************
* 이메일 인증 번호 발송
******************************************************** */
first = 0;
mbtlCert = '';
const fn_email_sending_number = function() {
if(timerRunning){
return;
}
fn_change_btn_text();
if(mbtlCert === $('#email').val()){
first++;
}else{
first = 0;
}
mbtlCert = $('#email').val();
let mbrNm = $('#mbrNm').val();
let email = $('#email').val().trim();
let params = {
'mbrNm' : mbrNm,
'email': email
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/insertEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
if (first > 0) {
fn_alert_show('인증번호가 재발송되었습니다.');
} else if (first === 0) {
fn_alert_show('인증번호가 발송되었습니다.');
first++;
} else {
return;
}
$('#sndngInnb').val(result.sndngInnb);
}else {
fn_alert_show('인증번호 발송에 실패했습니다.');
fn_stop_email_timer();
return;
}
}
});
$('#email').attr("readonly", true);
clearInterval(countdown);
seconds = 300;
fn_set_timeOut();
countdown = setInterval(fn_set_timeOut, 1000);
timerRunning = true;
}
/* ******************************************************** /* ********************************************************
* 타이머 정지 함수 * 타이머 정지 함수
******************************************************** */ ******************************************************** */
@@ -414,6 +552,20 @@
} }
} }
/* ********************************************************
* 타이머 정지 함수(이메일)
******************************************************** */
const fn_stop_email_timer = function() {
if (timerRunning) {
clearInterval(countdown);
$('#timer').text('05:00');
$('#mbtlCert').val('');
$('#emailAuthContent').hide();
$('#email').attr("readonly", false);
timerRunning = false;
}
}
/* ******************************************************** /* ********************************************************
* 휴대폰 인증 확인 * 휴대폰 인증 확인
******************************************************** */ ******************************************************** */
@@ -517,63 +669,182 @@
} }
}; };
/********************************************** /* ********************************************************
* 이메일 형식 유효성 체크 (올바른 이메일 형식일 때 True) * 이메일 인증 확인
***********************************************/ ******************************************************** */
const fn_check_email = function(email) { isChkd_own_email = false;
const fn_confim_own_email = function() {
var regular = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i; if (first <= 0) return;
let sndngInnb = $('#sndngInnb').val();
let email = $('#email').val().trim().replace(/-/g, '');
let crtnb = $('#mbtlCert').val();
fn_stop_email_timer();
let params = {
'sndngInnb': sndngInnb,
'email': email,
'crtnb' : crtnb
};
$.ajax({
type : 'post',
url : '<c:url value="/sopmal/mbr/selectEmailAuth"/>',
data : params,
success : function (Data) {
let result = JSON.parse(Data.resBody.result);
if(result.result == "success"){
$('#emailAuthOkBtn').show();
$('#emailAuthBtn').hide();
isChkd_own_email = true;
fn_change_email();
$('#email').attr("readonly", true);
}else {
fn_alert_show('인증번호가 일치하지 않습니다.');
return;
}
}
});
if(regular.test(email)){
return true;
}else{
return false;
}
} }
/* ******************************************************** /* ********************************************************
* email 합치기 * 이메일 인증 버튼 클릭시, 이메일 인증 박스 노출
******************************************************** */ ******************************************************** */
const fn_make_email = function() { const fn_show_emailAuth = function() {
let emailAuthBtn = $('#emailAuthBtn');
let emailAuthContent = $('#emailAuthContent');
let domain = $('input[name="emailSelect"]:checked').val(); emailAuthContent.hide();
let id = $('#id').val().trim();
$('[name=email]').val(domain == '직접입력' ? id : id + domain);
return $('[name=email]').val(); emailAuthBtn.click(function () {
if(!$('#email').val()){
fn_alert_show('휴대폰 번호를 입력해 주세요.');
$('#email').focus();
return;
}
// 기존 가입 여부 확인
fn_check_mbrwithdrawal_email();
// $('#emailAuthContent').show();
// $('#mbtlCert').focus();
// fn_email_sending_number();
});
} }
/* ******************************************************** /* ********************************************************
* 회원 정보 수정(이메일 변경) * 회원 정보 수정(이메일 변경)
******************************************************** */ ******************************************************** */
const fn_change_email = function() { const fn_change_email = function() {
let email = fn_make_email(); if (confirm('이메일 주소를 <spring:message code="confirm.common.update"/>')) {
if(!fn_check_email(email)) {
fn_alert_show('올바른 이메일 형식이 아닙니다.');
$('#id').focus();
return;
}
if (confirm('이메일을 <spring:message code="confirm.common.update"/>')) {
$.ajax({ $.ajax({
type: "post", type: "post",
url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>', url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>',
data: { data: {
id : $("#id").val().trim(), email : $("#email").val()
domain: $('input[name="emailSelect"]:checked').val().trim(),
email : email
}, },
success: function (data) { success: function (data) {
let newEmail = JSON.parse(data.resBody.result); let newEmail = JSON.parse(data.resBody.result);
newEmail = newEmail.paramVO.email; newEmail = newEmail.paramVO.email;
$("#lagacyEmail").val(newEmail);
$("#lagacyEmail").text(newEmail);
$("#inputEmail").val(newEmail);
fn_alert_show('<spring:message code="success.common.update"/>'); fn_alert_show('<spring:message code="success.common.update"/>');
$("#emailChngBtn").click(); // $("#emailChngBtn").click();
//초기화
first = 0;
fn_stop_email_timer();
// fn_stop_timer();
$('.update-text').val('');
$('.editContent .userForm__inputBox__alertText').hide();
// fn_set_domain('직접입력', 'reset');
if(isChkd_own_email){
$('.update-text').attr("readonly", false);
$('#email').attr("readonly", false);
$('#emailAuthBtn').show();
$('#emailAuthOkBtn').hide();
$('#resIdForm').hide();
$('#resPswdForm').hide();
isChkd_own_email = false;
}
// if(isChkd_own){
// $('.update-text').attr("readonly", false);
// $('#mbtlnb').attr("readonly", false);
// $('#phoneAuthBtn').show();
// $('#phoneAuthOkBtn').hide();
// $('#resIdForm').hide();
// $('#resPswdForm').hide();
// isChkd_own = false;
// }
} }
}); });
} }
} };
/**********************************************
* 이메일 형식 유효성 체크 (올바른 이메일 형식일 때 True)
***********************************************/
// const fn_check_email = function(email) {
//
// var regular = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i;
//
// if(regular.test(email)){
// return true;
// }else{
// return false;
// }
// }
/* ********************************************************
* email 합치기
******************************************************** */
// const fn_make_email = function() {
//
// let domain = $('input[name="emailSelect"]:checked').val();
// let id = $('#id').val().trim();
// $('[name=email]').val(domain == '직접입력' ? id : id + domain);
//
// return $('[name=email]').val();
// }
/* ********************************************************
* 회원 정보 수정(이메일 변경)
******************************************************** */
<%--const fn_change_email = function() {--%>
<%-- let email = fn_make_email();--%>
<%-- if(!fn_check_email(email)) {--%>
<%-- fn_alert_show('올바른 이메일 형식이 아닙니다.');--%>
<%-- $('#id').focus();--%>
<%-- return;--%>
<%-- }--%>
<%-- if (confirm('이메일을 <spring:message code="confirm.common.update"/>')) {--%>
<%-- $.ajax({--%>
<%-- type: "post",--%>
<%-- url: '<c:url value="/sopmal/mpage/mbr/updateMbrEmailInfoUpdt"/>',--%>
<%-- data: {--%>
<%-- id : $("#id").val().trim(),--%>
<%-- domain: $('input[name="emailSelect"]:checked').val().trim(),--%>
<%-- email : email--%>
<%-- },--%>
<%-- success: function (data) {--%>
<%-- let newEmail = JSON.parse(data.resBody.result);--%>
<%-- newEmail = newEmail.paramVO.email;--%>
<%-- $("#lagacyEmail").val(newEmail);--%>
<%-- fn_alert_show('<spring:message code="success.common.update"/>');--%>
<%-- $("#emailChngBtn").click();--%>
<%-- }--%>
<%-- });--%>
<%-- }--%>
<%--}--%>
/* ******************************************************** /* ********************************************************
* 우편번호 찾기 * 우편번호 찾기
@@ -723,19 +994,29 @@
//초기화 //초기화
first = 0; first = 0;
fn_stop_timer(); fn_stop_email_timer();
// fn_stop_timer();
$('.update-text').val(''); $('.update-text').val('');
$('.editContent .userForm__inputBox__alertText').hide(); $('.editContent .userForm__inputBox__alertText').hide();
fn_set_domain('직접입력', 'reset'); // fn_set_domain('직접입력', 'reset');
if(isChkd_own){ if(isChkd_own_email){
$('.update-text').attr("readonly", false); $('.update-text').attr("readonly", false);
$('#phoneAuthBtn').show(); $('#emailAuthBtn').show();
$('#phoneAuthOkBtn').hide(); $('#emailAuthOkBtn').hide();
$('#resIdForm').hide(); $('#resIdForm').hide();
$('#resPswdForm').hide(); $('#resPswdForm').hide();
isChkd_own = false; isChkd_own_email = false;
} }
// if(isChkd_own){
// $('.update-text').attr("readonly", false);
// $('#phoneAuthBtn').show();
// $('#phoneAuthOkBtn').hide();
// $('#resIdForm').hide();
// $('#resPswdForm').hide();
// isChkd_own = false;
// }
} }
/* ******************************************************** /* ********************************************************
@@ -928,49 +1209,74 @@
</div> </div>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
<%-- <div class="userForm__inputBox__item">--%>
<%-- <div class="userForm__inputBox__itemTitle">휴대폰번호<span class="required-asterisk">*</span></div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <input type="text" class="input-text full number" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)"--%>
<%-- value="<c:out value="${ resultMap.result.mbtlnb }"/>" maxlength="13">--%>
<%-- <input type="hidden" name="mbtlnb" value="<c:out value="${resultMap.result.mbtlnb}"/>" id="inputMbtlnb">--%>
<%-- <button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button>--%>
<%-- <!-- 인증완료시 버튼 -->--%>
<%-- <button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>--%>
<%-- </div>--%>
<%-- <p class="userForm__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p>--%>
<%-- <div class="phoneAuth" id="phoneAuthContent">--%>
<%-- <input type="hidden" id="sndngInnb">--%>
<%-- <div>--%>
<%-- <div class="inputWithBtn">--%>
<%-- <div class="inputTimer">--%>
<%-- <input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">--%>
<%-- <span class="inputTimer__time" id="timer">03:00</span>--%>
<%-- </div>--%>
<%-- <button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button>--%>
<%-- </div>--%>
<%-- <p class="userForm__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>--%>
<%-- </div>--%>
<%-- </div>--%>
<%-- </div>--%>
<div class="userForm__inputBox__item"> <div class="userForm__inputBox__item">
<div class="userForm__inputBox__itemTitle">휴대폰번호<span class="required-asterisk">*</span></div> <div class="userForm__inputBox__itemTitle">이메일<span class="required-asterisk">*</span></div>
<div class="inputWithBtn"> <div class="inputWithBtn">
<input type="text" class="input-text full number" id="mbtlnb" title="휴대폰" placeholder="휴대폰번호 입력 (’-’ 없이)" oninput="fn_set_event(this, 'keyup', fn_fmt_telno)" <input type="text" class="input-text full" id="email" title="이메일" placeholder="이메일을 입력해 주세요"
value="<c:out value="${ resultMap.result.mbtlnb }"/>" maxlength="13"> value="<c:out value="${ resultMap.result.email }"/>" maxlength="190">
<input type="hidden" name="mbtlnb" value="<c:out value="${resultMap.result.mbtlnb}"/>" id="inputMbtlnb"> <input type="hidden" name="email" value="<c:out value="${resultMap.result.email}"/>" id="inputEmail">
<button type="button" class="btn md theme outline" id="phoneAuthBtn"><spring:message code="button.certification"/></button> <button type="button" class="btn md theme outline" id="emailAuthBtn"><spring:message code="button.certificationEmail"/></button>
<!-- 인증완료시 버튼 --> <!-- 인증완료시 버튼 -->
<button type="button" class="btn md outline" id="phoneAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button> <button type="button" class="btn md outline" id="emailAuthOkBtn" style="display:none;"><spring:message code="button.certificationDone"/></button>
</div> </div>
<p class="userForm__inputBox__alertText" id="mbtlnbAlert">휴대폰 번호를 입력해 주세요.</p> <p class="userForm__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>
<div class="phoneAuth" id="phoneAuthContent"> <div class="phoneAuth" id="emailAuthContent">
<input type="hidden" id="sndngInnb"> <input type="hidden" id="sndngInnb">
<div> <div>
<div class="inputWithBtn"> <div class="inputWithBtn">
<div class="inputTimer"> <div class="inputTimer">
<input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6"> <input type="text" class="input-text full number" id="mbtlCert" title="인증번호" placeholder="인증번호 입력" maxlength="6">
<span class="inputTimer__time" id="timer">03:00</span> <span class="inputTimer__time" id="timer">05:00</span>
</div> </div>
<button type="button" class="btn md gray" onclick="fn_confim_own();"><spring:message code="button.ok"/></button> <button type="button" class="btn md gray" onclick="fn_confim_own_email();"><spring:message code="button.ok"/></button>
</div> </div>
<p class="userForm__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p> <p class="userForm__inputBox__alertText" id="mbtlCertAlert">인증번호를 입력해 주세요.</p>
</div> </div>
</div> </div>
</div> </div>
<div class="userForm__inputBox__item"> <%-- <div class="userForm__inputBox__item">--%>
<div class="userForm__inputBox__itemTitle">이메일<span class="required-asterisk">*</span></div> <%-- <div class="userForm__inputBox__itemTitle">이메일<span class="required-asterisk">*</span></div>--%>
<div class="inputWithBtn"> <%-- <div class="inputWithBtn">--%>
<input class="input-text full" type="email" id="lagacyEmail" title="이메일" placeholder="이메일" value="<c:out value='${ resultMap.result.email }'/>" readonly> <%-- <input class="input-text full" type="email" id="lagacyEmail" title="이메일" placeholder="이메일" value="<c:out value='${ resultMap.result.email }'/>" readonly>--%>
<button type="button" class="editBtn btn md gray2" type="button" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button> <%-- <button type="button" class="editBtn btn md gray2" type="button" id="emailChngBtn" onclick="fn_change_btn_text(this);return false;"><spring:message code="button.change"/></button>--%>
</div> <%-- </div>--%>
</div> <%-- </div>--%>
<div class="editContent"> <%-- <div class="editContent">--%>
<div class="editContent__innerBox"> <%-- <div class="editContent__innerBox">--%>
<input type="hidden" name="email" value=""/> <%-- <input type="hidden" name="email" value=""/>--%>
<div class="emailInput"> <%-- <div class="emailInput">--%>
<input class="input-text full" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="40"> <%-- <input class="input-text full" type="email" id="id" title="이메일 id" placeholder="이메일" maxlength="40">--%>
<button class="emailInput__btn" role="button" data-micromodal-trigger="emailSelectPop" id="emailSelectBtn">직접입력</button> <%-- <button class="emailInput__btn" role="button" data-micromodal-trigger="emailSelectPop" id="emailSelectBtn">직접입력</button>--%>
</div> <%-- </div>--%>
<p class="userForm__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p> <%-- <p class="userForm__inputBox__alertText" id="emailAlert">이메일을 입력해 주세요.</p>--%>
<button type="button" class="btn outline full lg" onclick="fn_change_email();"><spring:message code="button.ok"/></button> <%-- <button type="button" class="btn outline full lg" onclick="fn_change_email();"><spring:message code="button.ok"/></button>--%>
</div> <%-- </div>--%>
</div> <%-- </div>--%>
<div class="userForm__inputBox__item"> <div class="userForm__inputBox__item">
<div class="userForm__inputBox__itemTitle">생년월<span class="required-asterisk">*</span></div> <div class="userForm__inputBox__itemTitle">생년월<span class="required-asterisk">*</span></div>
<div class="inputHalf"> <div class="inputHalf">