MypageCustSnsJoinInitPwdFormMob.html 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org"
  4. xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  5. layout:decorator="mob/common/layout/MypageLayoutMob">
  6. <!--
  7. *******************************************************************************
  8. * @source : MypageCustSnsJoinInitPwdFormMob.html
  9. * @desc : 마이페이지 > 내 정보 관리 비밀번호 최초설정 Page
  10. * 소셜 간편가입을 하신 회원님은
  11. * 최초 비밀번호 설정하는 화면
  12. *============================================================================
  13. * STYLE24
  14. * Copyright(C) 2021 TSIT, All rights reserved.
  15. *============================================================================
  16. * VER DATE AUTHOR DESCRIPTION
  17. * === =========== ========== =============================================
  18. * 1.0 2021.04.26 jsshin 최초 작성
  19. *******************************************************************************
  20. -->
  21. <body>
  22. <th:block layout:fragment="content">
  23. <style>
  24. .hide{display:none}
  25. </style>
  26. <main class="container my">
  27. <section class="content my_page">
  28. <div class="inner">
  29. <div class="pass_confirm">
  30. <p class="desc">소셜 간편가입을 하신 회원님은 <br>최초 비밀번호 설정하신 후 변경 가능합니다.</p>
  31. <form id="resetPasswordForm" name="resetPasswordForm" class="form_wrap">
  32. <input type="hidden" name="custId" th:value="${custId}"/>
  33. <div class="form_field">
  34. <label class="input_label sr-only">신규 비밀번호</label>
  35. <div class="ui_col_12">
  36. <input type="password" id="passwd" name="passwd" class="form_control" placeholder="비밀번호를 입력해주세요." minlength="8" maxlength="20"/>
  37. <!-- case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
  38. <div class="help_block">
  39. <!-- 사용불가 비밀번호일경우 -->
  40. <p class="mt10">
  41. <span id="firstFailed" class="c_gray">
  42. <i class="ico ico_check gray mr5"></i>영문(대/소문자), 숫자, 특수문자 중 2가지 이상 조합(8~20자)<br/>
  43. </span>
  44. <span id="secondFailed" class="c_gray">
  45. <i class="ico ico_check gray mr5"></i>4개이상 연속되거나 동일한 문자/숫자 제외<br/>
  46. </span>
  47. <span id="thirdFailed" class="c_gray">
  48. <i class="ico ico_check gray mr5"></i>아이디 제외
  49. </span>
  50. </p>
  51. <!-- //사용불가 비밀번호일경우 -->
  52. <!-- 사용가능한 비밀번호일경우 -->
  53. <p id="avlPwd" class="mt10 hide">
  54. <span class="c_black2">
  55. <i class="ico ico_check black mr5"></i>사용 가능한 비밀번호입니다.
  56. </span>
  57. </p>
  58. <!-- //사용가능한 비밀번호일경우 -->
  59. </div>
  60. <!-- //case (사용불가 비밀번호일경우,사용가능한 비밀번호일경우) -->
  61. </div>
  62. </div>
  63. <div class="form_field">
  64. <label class="input_label sr-only">비밀번호 확인</label>
  65. <div class="ui_col_12">
  66. <input type="password" id="confirmPassword" name="confirmPassword" class="form_control" placeholder="비밀번호를 동일하게 입력해주세요." minlength="8" maxlength="20" />
  67. <!-- case (비밀번호확인 틀렸을경우,비밀번호 일치할경우) -->
  68. <div class="help_block">
  69. <!-- 비밀번호확인 틀렸을경우 -->
  70. <p id="misPwd" class="t_err hide">
  71. 새 비밀번호가 일치하지 않습니다.
  72. </p>
  73. <!-- //비밀번호확인 틀렸을경우 -->
  74. <!-- 비밀번호 일치할경우 -->
  75. <p id="avlConPwd" class="mt10 hide">
  76. <span class="c_black2">
  77. <i class="ico ico_check black mr5"></i>새 비밀번호가 일치합니다.
  78. </span>
  79. </p>
  80. <!-- //비밀번호 일치할경우 -->
  81. </div>
  82. <!-- //case (비밀번호확인 틀렸을경우,비밀번호 일치할경우) -->
  83. </div>
  84. </div>
  85. <div class="btn_group_flex">
  86. <div>
  87. <button type="button" class="btn btn_default btn_block" onclick="cfnGoToPage(_PAGE_MYPAGE);">
  88. <span>취소</span>
  89. </button>
  90. </div>
  91. <div>
  92. <button type="button" id="btnSavePassword" class="btn btn_dark btn_block">
  93. <span>확인</span>
  94. </button>
  95. </div>
  96. </div>
  97. </form>
  98. </div>
  99. </div>
  100. </section>
  101. </main>
  102. <script th:src="@{'/biz/customer.js?v=' + ${#calendars.format(#calendars.createNow(), 'yyyyMMddHHmmss')}}" src="/biz/customer.js"></script>
  103. <script th:inline="javascript">
  104. /*<![CDATA[*/
  105. // 비밀번호 입력
  106. $('#resetPasswordForm input[name=passwd]').on('focusout keyup keydown', function () {
  107. fnCheckPassword();
  108. });
  109. // 비밀번호 확인 입력
  110. $('#resetPasswordForm input[name=confirmPassword]').on('focusout keyup keydown', function () {
  111. fnCheckConfirmPassword();
  112. });
  113. // 비밀번호 확인
  114. var fnCheckPassword = function () {
  115. const $firstFailed = $('#firstFailed');
  116. const $secondFailed = $('#secondFailed');
  117. const $thirdFailed = $('#thirdFailed');
  118. const $avlPwd = $('#avlPwd');
  119. const red = 'c_red2';
  120. const gray = 'c_gray';
  121. const icoRed = 'red';
  122. const icoGray = 'gray';
  123. let custId = $('#resetPasswordForm input[name=custId]').val();
  124. let password = $('#resetPasswordForm input[name=passwd]').val();
  125. let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
  126. let pwdCheck = true;
  127. // 영문, 숫자, 특수문자 2종 이상 혼용 || 길이
  128. if (fnValidtaionPwdMixedWord(password) || fnValidationPwdLength(password)) {
  129. pwdCheck = false;
  130. $firstFailed.removeClass(gray);
  131. $firstFailed.find('.ico').removeClass(icoGray);
  132. $firstFailed.addClass(red);
  133. $firstFailed.find('.ico').addClass(icoRed);
  134. } else {
  135. $firstFailed.removeClass(red);
  136. $firstFailed.find('.ico').removeClass(icoRed);
  137. $firstFailed.addClass(gray);
  138. $firstFailed.find('.ico').addClass(icoGray);
  139. }
  140. // 동일한 문자/숫자 4자이상 || 연속된 문자가 4자이상
  141. if (fnValidationPwdSameWord(password) || fnValidtaionPwdCntnsWord(password)) {
  142. pwdCheck = false;
  143. $secondFailed.removeClass(gray);
  144. $secondFailed.find('.ico').removeClass(icoGray);
  145. $secondFailed.addClass(red);
  146. $secondFailed.find('.ico').addClass(icoRed);
  147. } else {
  148. $secondFailed.removeClass(red);
  149. $secondFailed.find('.ico').removeClass(icoRed);
  150. $secondFailed.addClass(gray);
  151. $secondFailed.find('.ico').addClass(icoGray);
  152. }
  153. // 아이디 포함
  154. if (fnValidationPwdSameId(password, custId)) {
  155. pwdCheck = false;
  156. $thirdFailed.removeClass(gray);
  157. $thirdFailed.find('.ico').removeClass(icoGray);
  158. $thirdFailed.addClass(red);
  159. $thirdFailed.find('.ico').addClass(icoRed);
  160. } else {
  161. $thirdFailed.removeClass(red);
  162. $thirdFailed.find('.ico').removeClass(icoRed);
  163. $thirdFailed.addClass(gray);
  164. $thirdFailed.find('.ico').addClass(icoGray);
  165. }
  166. if (pwdCheck) {
  167. $firstFailed.hide();
  168. $secondFailed.hide();
  169. $thirdFailed.hide();
  170. $avlPwd.show();
  171. } else {
  172. $firstFailed.show();
  173. $secondFailed.show();
  174. $thirdFailed.show();
  175. $avlPwd.hide();
  176. }
  177. if (!gagajf.isNull(confirmPassword)) {
  178. fnCheckConfirmPassword();
  179. }
  180. };
  181. // 비밀번호체크
  182. var fnCheckConfirmPassword = function () {
  183. const $misPwd = $('#misPwd');
  184. const $avlConPwd = $('#avlConPwd');
  185. const $btnSavePassword = $('#btnSavePassword');
  186. let password = $('#resetPasswordForm input[name=passwd]').val();
  187. let confirmPassword = $('#resetPasswordForm input[name=confirmPassword]').val();
  188. let sameConfirmPwd = fnValidationPwdSameConfirmPwd(password, confirmPassword);
  189. if (sameConfirmPwd) {
  190. $misPwd.hide();
  191. $avlConPwd.show();
  192. //$btnSavePassword.attr('disabled', false);
  193. } else {
  194. $avlConPwd.hide();
  195. $misPwd.show();
  196. //$btnSavePassword.attr('disabled', true);
  197. }
  198. };
  199. // 패스워드 저장
  200. $('#btnSavePassword').on('click', function () {
  201. let resetPasswordForm = $('#resetPasswordForm').serializeObject();
  202. if (gagajf.isNull(resetPasswordForm.passwd)) {
  203. mcxDialog.alert('신규 비밀번호를 입력하신 후 다시 시도해주세요.');
  204. return;
  205. }
  206. if (gagajf.isNull(resetPasswordForm.confirmPassword)) {
  207. mcxDialog.alert('비밀번호 확인을 입력하신 후 다시 시도해주세요.');
  208. return;
  209. }
  210. if (resetPasswordForm.passwd != resetPasswordForm.confirmPassword) {
  211. mcxDialog.alert('비밀번호가 일치하지 않습니다. 다시 확인해주세요.');
  212. return;
  213. }
  214. fnCheckPassword();
  215. fnCheckConfirmPassword();
  216. let jsonData = JSON.stringify(resetPasswordForm);
  217. gagajf.ajaxJsonSubmit('/customer/password/reset', jsonData, fnSavePasswordCallback);
  218. });
  219. var fnSavePasswordCallback = function (result) {
  220. if (result.isSuccess) {
  221. mcxDialog.alertC('비밀번호 변경이 완료 되었습니다.', {
  222. sureBtnText: "확인",
  223. sureBtnClick: function() {
  224. cfnGoToPage(_PAGE_MYPAGE_CUSTOMER);
  225. }
  226. });
  227. } else {
  228. mcxDialog.alert('비밀번호 변경이 실패 되었습니다.')
  229. }
  230. };
  231. $(document).ready(function() {
  232. $('#htopTitle').text('내 정보 관리');
  233. });
  234. /*]]>*/
  235. </script>
  236. </th:block>
  237. </body>
  238. </html>