Przeglądaj źródła

모바일 아이디 찾기, 비밀번호 찾기 개발 중

jsshin 5 lat temu
rodzic
commit
eaef093f12

+ 6 - 3
src/main/java/com/style24/front/biz/web/TsfCustomerController.java

@@ -138,12 +138,15 @@ public class TsfCustomerController extends TsfBaseController {
 	 * @author jsshin
 	 * @since 2021. 02. 05
 	 */
-	@GetMapping("/password/find/form")
-	public ModelAndView pwdFindForm() {
+	@RequestMapping("/password/find/form")
+	public ModelAndView pwdFindForm(@RequestParam(value = "sEncData", required = false) String sEncData
+			, @RequestParam(value = "authMethod", required = false) String authMethod) {
+
 		ModelAndView mav = new ModelAndView();
+		mav.addObject("sEncData", sEncData);
+		mav.addObject("authMethod", authMethod);
 
 		mav.setViewName(super.getDeviceViewName("customer/PasswordFindForm"));
-
 		return mav;
 	}
 

+ 3 - 0
src/main/webapp/WEB-INF/views/mob/SigninFormMob.html

@@ -47,6 +47,9 @@
 						</div>
 						<div class="right">
 							<ul>
+								<li>
+									<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);">회원가입</a>
+								</li>
 								<li>
 									<a href="javascript:void(0)" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</a>
 								</li>

+ 1 - 1
src/main/webapp/WEB-INF/views/mob/customer/IdFindFormMob.html

@@ -92,7 +92,7 @@
 									</div>
 								</div>
 							</div>
-							<div class="form_group hide" style="display: none;">
+							<div class="form_group" style="display: none;">
 								<div class="form_wrap form_full">
 									<div>
 										<div class="txt">

+ 85 - 0
src/main/webapp/WEB-INF/views/mob/customer/JoinTypeFormMob.html

@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/LoginLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : JoinTypeFormMob.html
+ * @desc    : 회원가입 유형 화면
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2021 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.13   jsshin     최초 작성
+ *******************************************************************************
+ -->
+
+<body>
+<th:block layout:fragment="content">
+	<main class="container mb">
+		<!-- ★ 컨텐츠 시작 -->
+		<section class="content mb_join_1">
+			<div class="inner">
+				<div class="close">
+					<a href="javascript:void(0);" class="btn_close" onclick="cfnGoToPage(_PAGE_MAIN);"><span></span><span></span></a>
+				</div>
+			</div>
+			<div class="inner">
+				<h2 class="title">회원가입</h2>
+			</div>
+			<div class="inner">
+					<form class="form_wrap form_full" role="form">
+						<div class="form_head">
+							<h3 class="title sr-only">본인인증</h3>
+						</div>
+						<div class="form_sign_up">
+							<p class="c_primary t_c">STYLE24 회원으로 가입</p>
+							<p class="t_c mt10">신규 가입 시 할인 쿠폰 등<br> 다양한 혜택을 받으실 수 있습니다.</p>
+						</div>
+					   <div class="ui_row mt20">
+						   <button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">회원가입</button>
+					   </div>
+					</form>
+					<div class="t_c sns_wrap">
+						<h3 class="sr-only">간편로그인</h3>
+						<ul class="login_utill">
+							<li class="lu_kakao">
+								<a href="javascript:void(0);" onclick="cfnLoginKakao();">
+									<div class="ico"></div>카카오로<br>시작하기
+								</a>
+							</li>
+							<li class="lu_naver">
+								<a href="javascript:void(0);" onclick="cfnLoginNaver();">
+									<div class="ico"></div>네이버로<br>시작하기
+								</a>
+							</li>
+							<li class="lu_yes24">
+								<a href="javascript:void(0);" onclick="cfnLoginYes24();">
+									<div class="ico"></div>YES24로<br>시작하기
+								</a>
+							</li>
+						</ul>
+					</div>
+			</div>
+
+		</section>
+		<!-- ★ 컨텐츠 종료 -->
+
+</main>
+
+<script th:inline="javascript">
+	/*<![CDATA[*/
+
+
+		$(document).ready(function(){
+
+		});
+
+	/*]]>*/
+</script>
+</th:block>
+</body>
+</html>

+ 256 - 0
src/main/webapp/WEB-INF/views/mob/customer/PasswordChangeFormMob.html

@@ -0,0 +1,256 @@
+<!DOCTYPE html>
+<html lang="ko"
+	xmlns:th="http://www.thymeleaf.org"
+	xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
+	layout:decorator="mob/common/layout/LoginLayoutMob">
+<!--
+ *******************************************************************************
+ * @source  : PasswordChangeFormMob.html
+ * @desc    : 비밀번호 변경 화면 Page
+ *============================================================================
+ * STYLE24
+ * Copyright(C) 2020 TSIT, All rights reserved.
+ *============================================================================
+ * VER  DATE         AUTHOR      DESCRIPTION
+ * ===  ===========  ==========  =============================================
+ * 1.0  2021.04.13   jsshin     최초 작성
+ *******************************************************************************
+ -->
+<body>
+<th:block layout:fragment="content">
+	<main class="container mb">
+		<!-- ★ 컨텐츠 시작 -->
+		<section class="content mb_idInquiry_5">
+			<div class="inner">
+				<div class="close">
+					<a href="javascript:void(0);" class="btn_close" onclick="cfnGoToPage(_PAGE_MAIN);">
+						<span></span><span></span>
+					</a>
+				</div>
+			</div>
+			<div class="inner">
+				<h2 th:if="${pageGb == 'find'}" class="title">아이디&#47;비밀번호찾기</h2>
+				<h2 th:if="${pageGb == 'temp'}" class="title">비밀번호 변경</h2>
+			</div>
+			<div class="inner">
+				<form id="resetPasswordForm" name="resetPasswordForm" class="form_wrap form_full" role="form" method="post">
+					<input type="hidden" name="custId" th:value="${custId}"/>
+					<div class="form_head">
+						<h2 class="sr-only">비밀번호재설정</h2>
+					</div>
+					<!-- 비밀번호 재설정 -->
+					<div class="find_result clear">
+						<div class="form_info">
+							<span class="ico_content_security"></span>
+							<p>안전을 위해 비밀번호를 변경하신 후<br> 이용이 가능합니다.</p>
+						</div>
+						<div class="form_field mt40">
+							<label class="input_label sr-only">신규 비밀번호</label>
+							<div class="ui_col_12">
+								<input type="password" id="passwd" name="passwd" placeholder="신규 비밀번호" class="form_control" minlength="8" maxlength="20"/>
+								<!-- case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
+								<div class="help_block">
+									<!-- 사용불가 비밀번호일경우 -->
+									<p class="mt10">
+										<span id="firstFailed" class="c_gray">
+											<i class="ico ico_check gray mr5"></i>영문(대/소문자), 숫자, 특수문자 중 2가지 이상 조합(8~20자)<br/>
+										</span>
+										<span id="secondFailed" class="c_gray">
+											<i class="ico ico_check gray mr5"></i>4개이상 연속되거나 동일한 문자/숫자 제외 <br/>
+										</span>
+										<span id="thirdFailed" class="c_gray">
+											<i class="ico ico_check gray mr5"></i>아이디 제외
+										</span>
+									</p>
+									<!-- //사용불가 비밀번호일경우 -->
+									<!-- 사용가능한 비밀번호일경우 -->
+									<p id="avlPwd" class="mt10" style="display: none;">
+										<span class="c_black2">
+											<i class="ico ico_check black mr5"></i>사용 가능한 비밀번호입니다
+										</span>
+									</p>
+									<!-- //사용가능한 비밀번호일경우 -->
+								</div>
+								<!-- //case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
+							</div>
+						</div>
+						<div class="form_field">
+							<label class="input_label sr-only">비밀번호 확인</label>
+							<div class="ui_col_12">
+								<input type="password" id="confirmPassword" name="confirmPassword" placeholder="비밀번호 확인" class="form_control" minlength="8" maxlength="20"/>
+								<!-- case (비밀번호확인 틀렸을경우,비밀번호 일치할경우) -->
+								<div class="help_block">
+									<!-- 비밀번호확인 틀렸을경우 -->
+									<p id="misPwd" class="t_err" style="display: none;">
+										새 비밀번호가 일치하지 않습니다.
+									</p>
+									<!-- //비밀번호확인 틀렸을경우 -->
+									<!-- 비밀번호 일치할경우 -->
+									<p id="avlConPwd" class="mt10" style="display: none;">
+										<span class="c_black2">
+											<i class="ico ico_check black mr5"></i>새 비밀번호가 일치합니다.
+										</span>
+									</p>
+									<!-- //비밀번호 일치할경우 -->
+								</div>
+								<!-- //case (비밀번호확인 틀렸을경우,비밀번호 일치할경우) -->
+							</div>
+						</div>
+						<div class="btn_group_block btn_group_md ui_row">
+							<div class="ui_col_12">
+								<button type="button" id="btnSavePassword" class="btn btn_dark" disabled="disabled">
+									<span th:if="${pageGb == 'find'}">변경 후 다시 로그인</span>
+									<span th:if="${pageGb == 'temp'}">변경하기</span>
+								</button>
+							</div>
+						</div>
+					</div>
+					<!-- //비밀번호 재설정 -->
+				</form>
+			</div>
+		</section>
+		<!-- ★ 컨텐츠 종료 -->
+	</main>
+<script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	const pageGb = [[${pageGb}]];
+
+	// 비밀번호 입력
+	$('#resetPasswordForm input[name=passwd]').on('focusout keyup keydown', function () {
+		fnCheckPassword();
+	});
+
+	// 비밀번호 확인 입력
+	$('#resetPasswordForm input[name=confirmPassword]').on('focusout keyup keydown', function () {
+		fnCheckConfirmPassword();
+	});
+
+	// 비밀번호 확인
+	var fnCheckPassword = function () {
+		const $firstFailed = $('#firstFailed');
+		const $secondFailed = $('#secondFailed');
+		const $thirdFailed = $('#thirdFailed');
+		const $avlPwd = $('#avlPwd');
+		const red = 'c_red2';
+		const gray = 'c_gray';
+		let custId = $('#resetPasswordForm input[name=custId]').val();
+		let password = $('#resetPasswordForm input[name=passwd]').val();
+		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
+		let pwdCheck = true;
+
+		// 영문, 숫자, 특수문자 2종 이상 혼용 || 길이
+		if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
+			pwdCheck = false;
+			$firstFailed.removeClass(gray);
+			$firstFailed.addClass(red);
+		} else {
+			$firstFailed.removeClass(red);
+			$firstFailed.addClass(gray);
+		}
+
+		// 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
+		if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
+			pwdCheck = false;
+			$secondFailed.removeClass(gray);
+			$secondFailed.addClass(red);
+		} else {
+			$secondFailed.removeClass(red);
+			$secondFailed.addClass(gray);
+		}
+
+		// 아이디 포함
+		if (fnValidationPwdSameId(password, custId)) {
+			pwdCheck = false;
+			$thirdFailed.removeClass(gray);
+			$thirdFailed.addClass(red);
+		} else {
+			$thirdFailed.removeClass(red);
+			$thirdFailed.addClass(gray);
+		}
+
+		if (pwdCheck) {
+			$firstFailed.hide();
+			$secondFailed.hide();
+			$thirdFailed.hide();
+			$avlPwd.show();
+		} else {
+			$firstFailed.show();
+			$secondFailed.show();
+			$thirdFailed.show();
+			$avlPwd.hide();
+		}
+
+		if (!gagajf.isNull(confirmPassword)) {
+			fnCheckConfirmPassword();
+		}
+
+	};
+
+	// 비밀번호체크
+	var fnCheckConfirmPassword = function () {
+		const $misPwd = $('#misPwd');
+		const $avlConPwd = $('#avlConPwd');
+		const $btnSavePassword = $('#btnSavePassword');
+		let password = $('#resetPasswordForm input[name=passwd]').val();
+		let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
+		let sameConfirmPwd = fnValidationPwdSameConfirmPwd(password, confirmPassword);
+
+		if (sameConfirmPwd) {
+			$misPwd.hide();
+			$avlConPwd.show();
+			$btnSavePassword.attr('disabled', false);
+		} else {
+			$avlConPwd.hide();
+			$misPwd.show();
+			$btnSavePassword.attr('disabled', true);
+		}
+
+	};
+
+	// 패스워드 저장
+	$('#btnSavePassword').on('click', function () {
+		let resetPasswordForm = $('#resetPasswordForm').serializeObject();
+
+		if (gagajf.isNull(resetPasswordForm.passwd)) {
+			mcxDialog.alert('신규 비밀번호를 입력하신 후 다시 시도해주세요.');
+			return;
+		}
+
+		if (gagajf.isNull(resetPasswordForm.confirmPassword)) {
+			mcxDialog.alert('비밀번호 확인을 입력하신 후 다시 시도해주세요.');
+			return;
+		}
+
+		if (resetPasswordForm.passwd != resetPasswordForm.confirmPassword) {
+			mcxDialog.alert('비밀번호가 일치하지 않습니다. 다시 확인해주세요.');
+			return;
+		}
+
+		fnCheckPassword();
+		fnCheckConfirmPassword();
+		let jsonData = JSON.stringify(resetPasswordForm);
+		gagajf.ajaxJsonSubmit('/customer/password/reset', jsonData, fnSavePasswordCallback);
+	});
+
+	var fnSavePasswordCallback = function (result) {
+		if (result.isSuccess) {
+		mcxDialog.alertC('비밀번호 변경이 완료 되었습니다.', {
+			sureBtnText: "확인",
+			sureBtnClick: function() {
+				if (pageGb === 'find') {
+					cfnGoToPage(_PAGE_LOGIN);
+				} else if (pageGb === 'temp') {
+					cfnGoToPage(_PAGE_MAIN);
+				}
+			}
+		});
+		} else {
+			mcxDialog.alert('비밀번호 변경이 실패 되었습니다.')
+		}
+	};
+/*]]>*/
+</script>
+</th:block>
+</body>
+</html>

+ 238 - 167
src/main/webapp/WEB-INF/views/mob/customer/PasswordFindFormMob.html

@@ -17,194 +17,265 @@
  *******************************************************************************
  -->
 <body>
-	<div class="app">
-
-		<a href="#mainCon" class="skipNav">본문바로가기</a>
-		<header></header>
-
-		<main role="" id="" class="container mb">
-			
-			<!-- ★ 컨텐츠 시작 -->
-			<section class="content mb_idInquiry_1">
-				<div class="inner">
-                    <div class="close">
-                        <a href="#none" class="btn_close"><span></span><span></span></a>
-                    </div>
+<th:block layout:fragment="content">
+    <main class="container mb">
+    <!-- ★ 컨텐츠 시작 -->
+        <section class="content mb_idInquiry_1">
+            <div class="inner">
+                <div class="close">
+                    <a href="javascript:void(0);" class="btn_close" onclick="cfnGoToPage(_PAGE_MAIN);"><span></span><span></span></a>
                 </div>
-				<div class="inner">
-					<h2 class="title">아이디/비밀번호찾기</h2>
-				</div>
-				<div class="inner">
-                        <div class="registration_nav">
-                            <ul class="tab_btn">
-                                <li class="active">아이디찾기</li>
-                                <li>비밀번호찾기</li>
+            </div>
+            <div class="inner">
+                <h2 class="title">아이디/비밀번호찾기</h2>
+            </div>
+            <div class="inner">
+                <div class="registration_nav">
+                    <ul class="tab_btn">
+                        <li onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">아이디찾기</li>
+                        <li class="active">비밀번호찾기</li>
+                    </ul>
+                </div>
+                <div class="registration_tap">
+                    <div class="form_group">
+                        <!-- 라디오탭 -->
+                        <div class="radio_nav">
+                            <ul class="form_field">
+                                <li class="ui_col_4 active">
+                                    <input type="radio" name="radio1" id="rdi1-1" value="1" checked><label for="rdi1-1"> <span>회원정보인증</span> </label>
+                                </li>
+                                <li class="ui_col_4">
+                                    <input type="radio" name="radio1" id="rdi1-2" value="2"><label for="rdi1-2"> <span>휴대폰인증</span> </label>
+                                </li>
+                                <li class="ui_col_4">
+                                    <input type="radio" name="radio1" id="rdi1-3" value="3"><label for="rdi1-3"> <span>아이핀인증</span> </label>
+                                </li>
                             </ul>
                         </div>
-                        <div class="registration_tap">
+                         <!-- //라디오탭 -->
+                          <!-- 라디오탭 -->
+                        <div class="radio_tap">
                             <div class="form_group">
-                                <!-- 라디오탭 -->
-                                <div class="radio_nav">
-                                    <ul class="form_field">
-                                        <li class="ui_col_4 active">
-                                            <input type="radio" name="radio1" id="rdi1-1" value="1" checked><label for="rdi1-1"> <span>회원정보인증</span> </label>
-                                        </li>
-                                        <li class="ui_col_4">
-                                            <input type="radio" name="radio1" id="rdi1-2" value="2"><label for="rdi1-2"> <span>휴대폰인증</span> </label>
-                                        </li>
-                                        <li class="ui_col_4">
-                                            <input type="radio" name="radio1" id="rdi1-3" value="3"><label for="rdi1-3"> <span>아이핀인증</span> </label> 
-                                        </li>
-                                    </ul>
-                                </div>
-                                 <!-- //라디오탭 -->
-                                  <!-- 라디오탭 -->
-                                <div class="radio_tap">
-                                    <div class="form_group">
-                                        <form class="form_wrap form_full">
-                                            <div>
-                                                <div class="form_field mt0"><input type="text" placeholder="이름" class="form_control"></div>
-                                                <div class="form_field"><input type="password" placeholder="생년월일 8자리(예:19880912)" class="form_control"></div>
-                                                <div class="form_field"><input type="text" placeholder="이메일" class="form_control"></div>
-                                                <div class="ui_row mt20"><button class="btn btn_dark">확인</button></div>
-                                            </div>
-                                        </form>
-                                    </div>
-                                    <div class="form_group">
-                                        <form class="form_wrap form_full">
-                                            <div>
-                                                <div class="txt">
-                                                    회원님의 명의로 등록된 휴대폰으로<br>
-                                                    본인확인을 진행합니다.
-                                                </div>
-                                                <div class="ui_row mt20"><button class="btn btn_dark">본인명의 휴대폰으로 인증</button></div>
-                                            </div>
-                                        </form>
+                                <form id="searchCustInfo" name="searchCustInfo" class="form_wrap form_full" method="post">
+                                    <div>
+                                        <div class="form_field mt0">
+                                            <input type="text" name="custId" placeholder="아이디" id="custId" class="form_control" minlength="4" maxlength="12"/>
+                                        </div>
+                                        <div class="form_field">
+                                            <input type="text" name="custNm" placeholder="이름" id="custNm" class="form_control" maxlength="30"/>
+                                        </div>
+                                        <div class="form_field">
+                                            <input type="text" name="email" placeholder="이메일" id="email" class="form_control" maxlength="30"/>
+                                        </div>
+                                        <div class="ui_row mt20">
+                                            <button type="button" id="btnInfoConfirm" class="btn btn_dark">확인</button>
+                                        </div>
                                     </div>
-                                    <div class="form_group">
-                                        <form class="form_wrap form_full">
-                                            <div>
-                                                <div class="txt">
-                                                    아이핀 인증을 통해 찾을 수 있습니다.
-                                                </div>
-                                                <div class="ui_row mt20"><button class="btn btn_dark">아이핀 인증</button></div>
-                                            </div>
-                                        </form>
+                                </form>
+                            </div>
+                            <div class="form_group" style="display: none;">
+                                <div class="form_wrap form_full">
+                                    <div>
+                                        <div class="txt">
+                                            회원님의 명의로 등록된 휴대폰으로<br>
+                                            본인확인을 진행합니다.
+                                        </div>
+                                        <div class="ui_row mt20">
+                                            <button type="button" id="btnCellPhoneCertify" class="btn btn_dark">본인명의 휴대폰으로 인증</button>
+                                        </div>
                                     </div>
                                 </div>
-                                 <!-- //라디오탭 -->
-                                
                             </div>
-                            <div class="form_group">
-                                <!-- 라디오탭 -->
-                                <div class="radio_nav">
-                                    <ul class="form_field">
-                                        <li class="ui_col_4 active">
-                                            <input type="radio" name="radios" id="rdi-4" value="4" checked><label for="rdi-4"> <span>회원정보인증</span> </label>
-                                        </li>
-                                        <li class="ui_col_4">
-                                            <input type="radio" name="radios" id="rdi-5" value="5"><label for="rdi-5"> <span>휴대폰인증</span> </label>
-                                        </li>
-                                        <li class="ui_col_4">
-                                            <input type="radio" name="radios" id="rdi-6" value="6"><label for="rdi-6"> <span>아이핀인증</span> </label> 
-                                        </li>
-                                    </ul>
-                                </div>
-                                 <!-- //라디오탭 -->
-                                  <!-- 라디오탭 -->
-                                <div class="radio_tap">
-                                    <div class="form_group">
-                                         <form class="form_wrap form_full">
-                                            <div>
-                                                <div class="form_field mt0"><input type="text" placeholder="이름" class="form_control"></div>
-                                                <div class="form_field"><input type="password" placeholder="생년월일 8자리(예:19880912)" class="form_control"></div>
-                                                <div class="form_field"><input type="text" placeholder="이메일" class="form_control"></div>
-                                                <div class="ui_row mt20"><button class="btn btn_dark">확인</button></div>
-                                            </div>
-                                        </form>
-                                    </div>
-                                    <div class="form_group">
-                                        <form class="form_wrap form_full">
-                                            <div>
-                                                <div class="txt">
-                                                    회원님의 명의로 등록된 휴대폰으로<br>
-                                                    본인확인을 진행합니다.
-                                                </div>
-                                                <div class="ui_row mt20"><button class="btn btn_dark">본인명의 휴대폰으로 인증</button></div>
-                                            </div>
-                                        </form>
-                                    </div>
-                                    <div class="form_group">
-                                        <form class="form_wrap form_full">
-                                            <div>
-                                                <div class="txt">
-                                                    아이핀 인증을 통해 찾을 수 있습니다.
-                                                </div>
-                                                <div class="ui_row mt20"><button class="btn btn_dark">아이핀 인증</button></div>
-                                            </div>
-                                        </form>
+                            <div class="form_group" style="display: none;">
+                                <div class="form_wrap form_full">
+                                    <div>
+                                        <div class="txt">
+                                            아이핀 인증을 통해 찾을 수 있습니다.
+                                        </div>
+                                        <div class="ui_row mt20">
+                                            <button type="button" id="btnIpinCertify" class="btn btn_dark">아이핀 인증</button>
+                                        </div>
                                     </div>
                                 </div>
-                                 <!-- //라디오탭 -->
-                                
                             </div>
                         </div>
+                         <!-- //라디오탭 -->
+                    </div>
+                </div>
+                <!-- 임시비밀번호 발급 -->
+                <div id="sendEmailDiv" class="find_result clear" style="display: none;">
+                    <div class="form_info">
+                        <span class="ico_content_mail"></span>
+                        <p>아래의 이메일로 임시비밀번호가 발급되었습니다.</p>
+                        <p class="t_info mt10">
+                            로그인 시 비밀번호를 새로 설정하신 후 이용하실 수 있습니다.
+                        </p>
+                    </div>
+                    <div class="form_print_bar mt40">
+                        <p id="sendEmail" class="c_primary bold" data-font="lato"></p>
+                    </div>
+                    <div class="btn_group_block btn_group_md ui_row">
+                        <div class="ui_col_12">
+                            <button type="button" class="btn btn_dark btn_block" onclick="cfnGoToPage(_PAGE_LOGIN);">
+                                <span>로그인 하기</span>
+                            </button>
+                        </div>
+                    </div>
+                </div>
+                <!-- //임시비밀번호 발급 -->
+                <!-- 회원정보로 비밀번호 찾기 실패일경우 -->
+                <div id="failCustId" class="form_wrap form_full" style="display: none;">
+                    <div class="find_result clear">
+                        <div class="form_info">
+                            <span class="ico_content_none"></span>
+                            <p>입력한 정보와 일치하는 아이디가 존재하지 않습니다.</p>
+                            <p class="t_info mt10">
+                                정확한 확인을 위해 휴대폰 인증/아이핀 인증을 통한<br>아이디 찾기를 진행해 주세요.
+                            </p>
+                        </div>
+                        <div class="btn_group_block btn_group_md ui_row">
+                            <div class="ui_col_6">
+                                <button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+                                    <span>회원가입</span>
+                                </button>
+                            </div>
+                            <div class="ui_col_6">
+                                <button type="button" class="btn btn_dark" onclick="cfnGoToPage(_PAGE_CUSTOMER_ID_FIND);">
+                                    <span>다시 찾기</span>
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <!-- //회원정보로 비밀번호 찾기 실패일경우 -->
+                <!-- 휴대폰,아이핀 본인인증으로 비밀번호찾기 실패일경우 -->
+                <div id="failAuthentication" class="form_wrap form_full" style="display: none;">
+                    <div class="find_result clear">
+                        <div class="form_info">
+                            <span class="ico_content_none"></span>
+                            <p>입력한 정보와 일치하는 아이디가 존재하지 않습니다.</p>
+                            <p class="t_info mt10">
+                                <span class="c_primary">STYLE24의 새로운 가족이 되어 주세요!</span>
+                            </p>
+                        </div>
+                        <div class="btn_group_block btn_group_md ui_row">
+                            <div class="ui_col_12">
+                                <button type="button" class="btn btn_primary" onclick="cfnGoToPage(_PAGE_CUSTOMER_JOIN);">
+                                    <span>회원가입</span>
+                                </button>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <!-- //휴대폰,아이핀 본인인증으로 비밀번호찾기 실패일경우 -->
+             </div>
+        </section>
+        <!-- ★ 컨텐츠 종료 -->
+    </main>
+<script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
+	const sEncData = [[${sEncData}]];   //인증 후 해당 페이지로 리다이렉트함
+	const authMethod = [[${authMethod}]]; //인증 후 해당 페이지로 리다이렉트함
 
-			</section>
-			<!-- ★ 컨텐츠 종료 -->	
+    $('#btnInfoConfirm').on('click', function () {
+        let custInfo = $('#searchCustInfo').serializeObject();
 
-		</main>
+        if(gagajf.isNull(custInfo.custId)) {
+            mcxDialog.alert("아이디를 입력해주세요.");
+            return;
+        }
 
-		<footer></footer>
+        if (gagajf.isNull(custInfo.custNm)) {
+            mcxDialog.alert('이름을 형식에 맞게 입력해주세요.');
+            return;
+        }
 
-	</div>
+        if (gagajf.isNull(custInfo.email)) {
+            mcxDialog.alert('이메일을 입력하여 주세요.');
+            return;
+        }
 
-    <script>
-        $(document).ready(function () {
-            /* 아이디/비밀번호 찾기_taps */
-            $('.registration_tap > .form_group').hide();	
-            $('.registration_tap > .form_group').eq(0).show();
-            $(document).on('click','.registration_nav > ul > li',function(e){
-                $(this).addClass('active').siblings().removeClass('active');
-                $('.registration_tap > .form_group').hide();		
-                $('.registration_tap > .form_group').eq($(this).index()).show();
-                return false;
-            });
+        if (!fnCheckValidationEmail(custInfo.email)) {
+            mcxDialog.alert('이메일 형식에 맞게 입력해주세요.');
+            return;
+        }
 
-            /* 회원정보인증/휴대폰인증/아이핀인증_taps */
-            $('.radio_tap > .form_group').hide();	
-            $('.radio_tap > .form_group').eq(0).show();
-            $('.radio_tap').each(function(){
-                $(this).find('.form_group').hide();
-                $(this).find('.form_group').eq(0).show();
-            });
+        custInfo.authMethod = 'custInfo';
+        let jsonData = JSON.stringify(custInfo);
+        //console.log('jsonData', jsonData);
+        gagajf.ajaxJsonSubmit('/customer/password/find/custinfo', jsonData, fnInfoConfirmCallBack);
+    });
 
-            $(document).on('click','.radio_nav > ul > li',function(e){
-                $(this).addClass('active').siblings().removeClass('active');
-                $(this).find('input').prop("checked", true);
-                $(this).parent().parent().parent().find('.radio_tap > .form_group').hide();		
-                $(this).parent().parent().parent().find('.radio_tap > .form_group').eq($(this).index()).show();
-                return false;
-            });
-        });
-    </script>
+    // 휴대폰 인증
+    $('#btnCellPhoneCertify').on('click', function () {
+        cfnOpenCellphoneCertify(_PAGE_CUSTOMER_PWD_FIND);
+    });
 
-    <script type="text/javascript">
-        $(document).ready(function(){
-            setHtop();
-        });
+    // 아이핀 인증
+    $('#btnIpinCertify').on('click', function () {
+        cfnOpenIpinCertify(_PAGE_CUSTOMER_PWD_FIND);
+    });
 
-        function setHtop() {
-            if($('header').hasClass('main')) {
-                $('#htopMain').show();
-                $('#htopSub').hide();
-            } else {
-                $('#htopMain').hide();
-                $('#gnb').hide();
-                $('#htopSub').show();
-            }
+        // 찾기결과
+    var fnInfoConfirmCallBack = function (result) {
+        $('#btnInfoConfirm').hide();
+        $('.form_field').hide();
+        $('.registration_cont').hide();
+        $('.registration_nav').hide();
+        $('#searchDiv').hide();
+        if (result.isFind) {
+            fnGetDisplaySucc(result.authMethod, result);
+        } else {
+            fnGetDisplayFail(result.authMethod);
         }
-    </script>
-</body>
+    };
 
+    // 찾기성공
+    var fnGetDisplaySucc = function (authMethod, custInfo) {
+        if (custInfo.authMethod === 'custInfo') {
+            $('#sendEmail').text(custInfo.maskingEmail)
+            $('#sendEmailDiv').show();
+        }
+        if (authMethod === 'mobile' || authMethod === 'ipin') {
+            cfnGoToPage(_PAGE_CUSTOMER_PWD_CHANGE_FIND);
+        }
+    };
+
+    // 나이스 본인인증 후 콜백
+    var fnNiceCallBack = function(encData, authMethod) {
+        if (!gagajf.isNull(encData)) {
+            let custInfo = {};
+            custInfo.encData = encData;
+            custInfo.authMethod = authMethod;
+            let jsonData = JSON.stringify(custInfo);
+            gagajf.ajaxJsonSubmit('/customer/password/find/certify', jsonData, fnInfoConfirmCallBack)
+        }
+    };
+
+    $(document).ready(function () {
+        if (!gagajf.isNull(sEncData)) {
+            fnNiceCallBack(sEncData, authMethod);
+        }
+
+        /* 회원정보인증/휴대폰인증/아이핀인증_taps */
+        $('.radio_tap > .form_group').hide();
+        $('.radio_tap > .form_group').eq(0).show();
+        $('.radio_tap').each(function(){
+            $(this).find('.form_group').hide();
+            $(this).find('.form_group').eq(0).show();
+        });
+
+        $(document).on('click','.radio_nav > ul > li',function(e){
+            $(this).addClass('active').siblings().removeClass('active');
+            $(this).find('input').prop("checked", true);
+            $(this).parent().parent().parent().find('.radio_tap > .form_group').hide();
+            $(this).parent().parent().parent().find('.radio_tap > .form_group').eq($(this).index()).show();
+            return false;
+        });
+    });
+/*]]>*/
+</script>
+</th:block>
+</body>
 </html>

+ 1 - 1
src/main/webapp/WEB-INF/views/web/customer/PasswordChangeFormWeb.html

@@ -28,9 +28,9 @@
 			</div>
 			<div class="cont_body show">
 				<form id="resetPasswordForm" name="resetPasswordForm" class="form_wrap form_col_c" role="form" method="post">
+					<input type="hidden" name="custId" th:value="${custId}"/>
 					<!-- 비밀번호 재설정 -->
 					<div class="find_result clear" >
-						<input type="hidden" name="custId" th:value="${custId}"/>
 						<div class="form_info">
 							<span class="ico_content_security"></span>
 							<p>안전을 위해 비밀번호를 변경하신 후 이용이 가능합니다.</p>

+ 87 - 88
src/main/webapp/WEB-INF/views/web/customer/PasswordFindFormWeb.html

@@ -186,110 +186,109 @@
 			</div>
 		</div>
 	</div>
-	<script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
-	<script th:inline="javascript">
-		/*<![CDATA[*/
+<script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
+<script th:inline="javascript">
+/*<![CDATA[*/
 
-		$('#btnInfoConfirm').on('click', function () {
-			let custInfo = $('#searchCustInfo').serializeObject();
+	$('#btnInfoConfirm').on('click', function () {
+		let custInfo = $('#searchCustInfo').serializeObject();
 
-			if(gagajf.isNull(custInfo.custId)) {
-				mcxDialog.alert("아이디를 입력해주세요.");
-				return;
-			}
+		if(gagajf.isNull(custInfo.custId)) {
+			mcxDialog.alert("아이디를 입력해주세요.");
+			return;
+		}
 
-			if (gagajf.isNull(custInfo.custNm)) {
-				mcxDialog.alert('이름을 형식에 맞게 입력해주세요.');
-				return;
-			}
+		if (gagajf.isNull(custInfo.custNm)) {
+			mcxDialog.alert('이름을 형식에 맞게 입력해주세요.');
+			return;
+		}
 
-			if (gagajf.isNull(custInfo.email)) {
-				mcxDialog.alert('이메일을 입력하여 주세요.');
-				return;
-			}
+		if (gagajf.isNull(custInfo.email)) {
+			mcxDialog.alert('이메일을 입력하여 주세요.');
+			return;
+		}
 
-			if (!fnCheckValidationEmail(custInfo.email)) {
-				mcxDialog.alert('이메일 형식에 맞게 입력해주세요.');
-				return;
-			}
+		if (!fnCheckValidationEmail(custInfo.email)) {
+			mcxDialog.alert('이메일 형식에 맞게 입력해주세요.');
+			return;
+		}
 
-			custInfo.authMethod = 'custInfo';
-			let jsonData = JSON.stringify(custInfo);
-			//console.log('jsonData', jsonData);
-			gagajf.ajaxJsonSubmit('/customer/password/find/custinfo', jsonData, fnInfoConfirmCallBack);
-		});
+		custInfo.authMethod = 'custInfo';
+		let jsonData = JSON.stringify(custInfo);
+		//console.log('jsonData', jsonData);
+		gagajf.ajaxJsonSubmit('/customer/password/find/custinfo', jsonData, fnInfoConfirmCallBack);
+	});
 
-		// 휴대폰 인증
-		$('#btnCellPhoneCertify').on('click', function () {
-			cfnOpenCellphoneCertify();
-		});
+	// 휴대폰 인증
+	$('#btnCellPhoneCertify').on('click', function () {
+		cfnOpenCellphoneCertify();
+	});
 
-		// 아이핀 인증
-		$('#btnIpinCertify').on('click', function () {
-			cfnOpenIpinCertify();
-		});
+	// 아이핀 인증
+	$('#btnIpinCertify').on('click', function () {
+		cfnOpenIpinCertify();
+	});
 
-		// 찾기결과
-		var fnInfoConfirmCallBack = function (result) {
-			$('.form_field').hide();
-			$('.registration_cont').hide();
-			$('.registration_nav').hide();
-			$('#searchDiv').hide();
-			if (result.isFind) {
-				fnGetDisplaySucc(result.authMethod, result);
-			} else {
-				fnGetDisplayFail(result.authMethod);
-			}
-		};
+	// 찾기결과
+	var fnInfoConfirmCallBack = function (result) {
+		$('.form_field').hide();
+		$('.registration_cont').hide();
+		$('.registration_nav').hide();
+		$('#searchDiv').hide();
+		if (result.isFind) {
+			fnGetDisplaySucc(result.authMethod, result);
+		} else {
+			fnGetDisplayFail(result.authMethod);
+		}
+	};
 
-		// 찾기성공
-		var fnGetDisplaySucc = function (authMethod, custInfo) {
-			if (custInfo.authMethod === 'custInfo') {
-				$('#sendEmail').text(custInfo.maskingEmail)
-				$('#sendEmailDiv').show();
-			}
-			if (authMethod === 'mobile' || authMethod === 'ipin') {
-				cfnGoToPage(_PAGE_CUSTOMER_PWD_CHANGE_FIND);
-			}
-		};
+	// 찾기성공
+	var fnGetDisplaySucc = function (authMethod, custInfo) {
+		if (custInfo.authMethod === 'custInfo') {
+			$('#sendEmail').text(custInfo.maskingEmail)
+			$('#sendEmailDiv').show();
+		}
+		if (authMethod === 'mobile' || authMethod === 'ipin') {
+			cfnGoToPage(_PAGE_CUSTOMER_PWD_CHANGE_FIND);
+		}
+	};
 
-		// 찾기실패
-		var fnGetDisplayFail = function (authMethod) {
-			$('.form_head').hide();
-			$('.registration_nav').hide();
-			if (authMethod === 'custInfo') {
-				$('#failCustId').show();
-			}
-			if (authMethod === 'mobile' || authMethod === 'ipin') {
-				$('#failAuthentication').show();
-			}
+	// 찾기실패
+	var fnGetDisplayFail = function (authMethod) {
+		$('.form_head').hide();
+		$('.registration_nav').hide();
+		if (authMethod === 'custInfo') {
+			$('#failCustId').show();
+		}
+		if (authMethod === 'mobile' || authMethod === 'ipin') {
+			$('#failAuthentication').show();
+		}
 
-		};
+	};
 
-		// 나이스 본인인증 후 콜백
-		var fnNiceCallBack = function(encData, authMethod) {
-			if (!gagajf.isNull(encData)) {
-				let custInfo = {};
-				custInfo.encData = encData;
-				custInfo.authMethod = authMethod;
-				let jsonData = JSON.stringify(custInfo);
-				gagajf.ajaxJsonSubmit('/customer/password/find/certify', jsonData, fnInfoConfirmCallBack)
-			}
-		};
+	// 나이스 본인인증 후 콜백
+	var fnNiceCallBack = function(encData, authMethod) {
+		if (!gagajf.isNull(encData)) {
+			let custInfo = {};
+			custInfo.encData = encData;
+			custInfo.authMethod = authMethod;
+			let jsonData = JSON.stringify(custInfo);
+			gagajf.ajaxJsonSubmit('/customer/password/find/certify', jsonData, fnInfoConfirmCallBack)
+		}
+	};
 
-		$(document).ready( function() {
-			$(document).on('click','.mb .registration_tap > .form_group >.form_field > div',function(e){
-				$(this).find('input').prop('checked', true);
-				$(this).parents('.form_group').find('.regist_box').removeClass('on');
-				$(this).parents('.form_group').find('.regist_box').eq($(this).index()).addClass('on');
-				return false;
-			});
-			$('#searchCustInfo')[0].reset();
+	$(document).ready( function() {
+		$(document).on('click','.mb .registration_tap > .form_group >.form_field > div',function(e){
+			$(this).find('input').prop('checked', true);
+			$(this).parents('.form_group').find('.regist_box').removeClass('on');
+			$(this).parents('.form_group').find('.regist_box').eq($(this).index()).addClass('on');
+			return false;
 		});
+		$('#searchCustInfo')[0].reset();
+	});
 
-
-		/*]]>*/
-	</script>
+/*]]>*/
+</script>
 
 </th:block>