|
|
@@ -34,7 +34,7 @@
|
|
|
<label class="input_label sr-only">아이디</label>
|
|
|
<div class="ui_col_12">
|
|
|
<div class="input_wrap">
|
|
|
- <input type="text" name="loginId" placeholder="아이디" class="form_control" minlength="4" maxlength="20" required="required" data-valid-name="아이디"/>
|
|
|
+ <input type="text" name="loginId" placeholder="아이디" class="form_control" minlength="4" maxlength="12" required="required" data-valid-type="alphaNumeric" data-valid-name="아이디"/>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -42,7 +42,7 @@
|
|
|
<label class="input_label sr-only">비밀번호</label>
|
|
|
<div class="ui_col_12">
|
|
|
<div class="input_wrap">
|
|
|
- <input type="password" name="passwd" class="form_control" placeholder="비밀번호 8자 ~ 20자 입력" maxlength="20" required="required" data-valid-name="비밀번호"/>
|
|
|
+ <input type="password" name="passwd" class="form_control" placeholder="비밀번호 8자 ~ 20자 입력" minlength="8" maxlength="20" required="required" data-valid-name="비밀번호"/>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -59,34 +59,30 @@
|
|
|
</div>
|
|
|
<!-- case (회원 아이디 또는 비밀번호가 일치하지 않을때,보안문자 입력시) -->
|
|
|
<div class="help_block">
|
|
|
- <!-- 회원 아이디 또는 비밀번호가 일치하지 않을때 -->
|
|
|
- <p class="t_err t_err_login_fail" style="display: none;">
|
|
|
- <span id="not_exist">회원 아이디 또는 비밀번호가 일치하지 않습니다.</span><br/>
|
|
|
- (10회 이상 실패하면 180초 동안 로그인이 불가능 합니다.)<br/>
|
|
|
- <span id="login_fail_cnt">4</span>회 실패 / 잔여 : <span id="login_remain_cnt">6</span>회 / <span>180</span>초 남음
|
|
|
- </p>
|
|
|
<!-- //회원 아이디 또는 비밀번호가 일치하지 않을때 -->
|
|
|
<!-- 보안문자 입력시 -->
|
|
|
<div class="captcha mt40" style="display: none;"> <!-- 캡차영역 -->
|
|
|
<ul>
|
|
|
<li class="captcha_box"> <!-- 캡차이미지 -->
|
|
|
+ <img src="" id="imgCaptcha"/>
|
|
|
</li>
|
|
|
<li class="captcha_btn_dual">
|
|
|
- <button type="button" id="play_audio">새로고침</button>
|
|
|
+ <button type="button" id="play_audio" onclick="fnReloadCaptchaImage();">새로고침</button>
|
|
|
<button type="button" id="swap_captcha">음성듣기</button>
|
|
|
</li>
|
|
|
<li class="captcha_area">
|
|
|
<label for="captcha" id="label_captcha_area">보안문자 입력</label>
|
|
|
- <input type="text" id="captcha" name="captcha" title="문자입력">
|
|
|
+ <input type="text" name="captcha" title="문자입력">
|
|
|
</li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
- <p class="t_err t_err_captcha" style="display: none;">
|
|
|
- 보안문자 입력을 다시 시도해 주세요.<br/>
|
|
|
- (10회 이상 실패하면 300초 동안 로그인이 불가능 합니다.)<br/>
|
|
|
- <span>10</span>회 실패 / 잔여 : <span>0</span>회 / <span>180</span>초 남음
|
|
|
- </p>
|
|
|
<!-- //보안문자 입력시 -->
|
|
|
+ <!-- 회원 아이디 또는 비밀번호가 일치하지 않을때 -->
|
|
|
+ <p class="t_err t_err_login_fail" style="display: none;">
|
|
|
+ <span id="err_msg">보안문자 입력을 다시 시도해 주세요.</span><br/>
|
|
|
+ (10회 이상 실패하면 180초 동안 로그인이 불가능 합니다.)<br/>
|
|
|
+ <span id="login_fail_cnt">4</span>회 실패 / 잔여 : <span id="login_remain_cnt">6</span>회<span id="blockSecs1" style="display: none;"> / <span id="blockSecs2">180</span>초 남음</span>
|
|
|
+ </p>
|
|
|
</div>
|
|
|
<!-- //case (회원 아이디 또는 비밀번호가 일치하지 않을때,보안문자 입력시) -->
|
|
|
<div class="ui_row mt40">
|
|
|
@@ -131,6 +127,18 @@
|
|
|
/*<![CDATA[*/
|
|
|
let ckLoginId = "ckLoginId";
|
|
|
|
|
|
+ // 로그인블락시간(초) 설정
|
|
|
+ let fnSetLoginBlockTime = function() {
|
|
|
+ let blockSecs = Number($("#blockSecs2").html()) - 1;
|
|
|
+ $("#blockSecs2").html(blockSecs);
|
|
|
+ if (blockSecs == 0) {
|
|
|
+ clearTimeout(fnSetLoginBlockTime);
|
|
|
+ $('#btnLogin').attr('disabled',false);
|
|
|
+ } else {
|
|
|
+ setTimeout(fnSetLoginBlockTime, 1000);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 로그인
|
|
|
$('#btnLogin').on('click', function() {
|
|
|
if (!gagajf.validation($('#loginForm'))) {
|
|
|
@@ -146,14 +154,32 @@
|
|
|
, function(result) {
|
|
|
if (result.status != 'OK') {
|
|
|
if (!gagajf.isNull(result.message)) {
|
|
|
- $("#not_exist").html(result.message);
|
|
|
- $("#login_fail_cnt").html(result.loginFailCnt);
|
|
|
- $("#login_remain_cnt").html(10 - Number(result.loginFailCnt));
|
|
|
+ let loginFailCnt = Number(result.loginFailInfo.loginFailCnt);
|
|
|
+
|
|
|
+ $("#err_msg").html(result.message);
|
|
|
+ $("#login_fail_cnt").html(loginFailCnt);
|
|
|
+ $("#login_remain_cnt").html(10 - loginFailCnt);
|
|
|
$(".t_err_login_fail").show();
|
|
|
+
|
|
|
+ if (loginFailCnt >= 5 && loginFailCnt < 10) {
|
|
|
+ // 비밀번호 5회 이상 틀린 경우 캡챠 노출
|
|
|
+ $('.captcha').show();
|
|
|
+ } else if (loginFailCnt >= 10) {
|
|
|
+ $('.captcha').hide();
|
|
|
+
|
|
|
+ // 비밀번호 10회 이상 틀린 경우 로그인 블락
|
|
|
+ let blockSecs = Number(result.loginFailInfo.blockSecs);
|
|
|
+ if (blockSecs > 0) {
|
|
|
+ $("#blockSecs2").html(blockSecs);
|
|
|
+ fnSetLoginBlockTime();
|
|
|
+ $("#blockSecs1").show();
|
|
|
+ $('#btnLogin').attr('disabled',true);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (result.status == 'PWD_5WRONG') {
|
|
|
- // 비밀번호 5회 이상 틀린 경우
|
|
|
+ // Do nothing
|
|
|
} else if (result.status == 'DORMANT_CUST') {
|
|
|
// 휴면회원
|
|
|
//cfnGoToPage(_PAGE_DORMANT_GUIDE);
|
|
|
@@ -200,6 +226,11 @@
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ // 캡챠 이미지 로딩
|
|
|
+ let fnReloadCaptchaImage = function() {
|
|
|
+ $('#imgCaptcha').attr('src', '/common/captcha.do?dummy=' + new Date());
|
|
|
+ }
|
|
|
+
|
|
|
// 카카오 로그인
|
|
|
var fnLoginKakao = function() {
|
|
|
document.location.href = _frontUrl + '/signin/kakologin';
|