This commit is contained in:
Rinjae
2025-08-07 15:36:26 +09:00
commit cc925e0475
1172 changed files with 142573 additions and 0 deletions
@@ -0,0 +1,216 @@
<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/kbank_base_layout}">
<body>
<section layout:fragment="contentFragment" class="content">
<div class="content_wrap">
<div class="sub_title2">
<h2 class="title add7">로그인</h2>
</div>
<div class="inner i_cs9 h_inner9">
<div class="form_type">
<form id="loginForm" role="form" name="loginForm" th:action="@{/actionLogin.do}" method="post">
<input type="hidden" id="message" name="message" th:value="${loginMessage}">
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
<div class="form_type_box">
<div class="info1 form_top">
<p class="title">
<span>아이디</span>
</p>
<div class="info_line info_add">
<div class="info_box1 add add2">
<input type="text" id="id" name="id" th:value="${loginId}"
class="common_input_type_1 h_inp"
placeholder="이메일 아이디를 입력해 주세요." required>
<input type="hidden" id="loginId" th:value="${loginId}">
</div>
</div>
</div>
<div class="info1">
<p class="title">
<span>비밀번호</span>
</p>
<div class="info_line info_add">
<div class="info_box1 add add2">
<input type="password" id="password" name="password"
class="common_input_type_1 h_inp"
placeholder="비밀번호를 입력해 주세요." required>
</div>
</div>
</div>
</div>
<div class="box_inp">
<span class="inp_check f_size">
<input id="checkId" name="checkId" type="checkbox">
<label for="checkId">아이디 저장</label>
</span>
</div>
</form>
<div class="btn_login">
<a href="#" class="common_btn_type_1 h_btn" id="actionLogin"><span>로그인</span></a>
</div>
<div class="login_list pc-only">
<ul>
<li class="icon_search">
<img th:src="@{/img/icon/icon_login_search.png}" alt="">
<a th:href="@{/account_recovery(tab='findId')}">아이디 찾기</a>
</li>
<li>
<span>|</span>
</li>
<li class="icon_lock">
<img th:src="@{/img/icon/icon_login_lock.png}" alt="">
<a th:href="@{/account_recovery(tab='resetPassword')}">비밀번호 초기화</a>
</li>
<li>
<span>|</span>
</li>
<li class="icon_join">
<img th:src="@{/img/icon/icon_login_join.png}" alt="">
<a th:href="@{/signup}">회원가입</a>
</li>
</ul>
</div>
<div class="login_list m-only">
<ul>
<li class="icon_search">
<a th:href="@{/account_recovery(tab='findId')}">아이디 찾기</a>
</li>
<li>
<span>|</span>
</li>
<li class="icon_lock">
<a th:href="@{/account_recovery(tab='resetPassword')}">비밀번호 초기화</a>
</li>
<li>
<span>|</span>
</li>
<li class="icon_join">
<a th:href="@{/signup}">회원가입</a>
</li>
</ul>
</div>
<div th:if="${param.logout}" class="alert alert-info mt-3">
<p>로그아웃되었습니다.</p>
</div>
</div>
</div>
</div>
</section>
</body>
<th:block layout:fragment="contentScript">
<script th:inline="javascript">
function setCookie(name, value, expires) {
let cookie = `${name}=${encodeURIComponent(value)}; path=/`;
if (expires instanceof Date) {
cookie += `; expires=${expires.toUTCString()}`;
}
document.cookie = cookie;
}
function getCookie(name) {
let decodedCookie = decodeURIComponent(document.cookie);
let ca = decodedCookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i];
while (c.charAt(0) === ' ') {
c = c.substring(1);
}
if (c.indexOf(name) === 0) {
return c.substring(name.length + 1, c.length);
}
}
return null;
}
function getId(form) {
form.checkId.checked = ((form.id.value = getCookie('saveid')) !== null);
}
function encodePassword(password) {
return btoa(password).split('').reverse().join('');
}
function decodePassword(encodedPassword) {
return atob(encodedPassword.split('').reverse().join(''));
}
function fnInit() {
let form = document.getElementById('loginForm');
if (form) {
getId(form);
}
if (document.loginForm.message && document.loginForm.message.value) {
if (document.loginForm.message.value.includes("이메일 인증이 완료되지 않았습니다")) {
console.log("이메일 재발송 팝업 트리거");
let loginId = $('#loginId').val();
console.log("Retrieved loginId:", loginId);
customPopups.showEmailResendPopup(document.loginForm.message.value, loginId);
} else {
customPopups.showAlert(document.loginForm.message.value);
}
}
}
$(function () {
var successMsg = [[${success}]];
console.log("Success message:", successMsg);
if (successMsg) {
console.log("Showing alert");
customPopups.showAlert(successMsg);
}
// 비밀번호 만료 체크 관련 코드 추가
var successMsg = [[${session.success}]];
var passwordExpired = [[${session.passwordExpired}]];
var redirectUrl = [[${session.redirectUrl}]];
if (successMsg) {
customPopups.showAlert(successMsg, function() {
if (passwordExpired && redirectUrl) {
window.location.href = redirectUrl;
}
});
}
let actionLogin = function (event) {
let form = document.loginForm;
if ($('#checkId').is(':checked')) {
setCookie('saveid', $('#id').val(), new Date(new Date().getTime() + 1000 * 3600 * 24 * 30));
} else {
setCookie('saveid', $('#id').val(), new Date(new Date().getTime() - 1));
}
if (!form.checkValidity()) {
event.preventDefault();
event.stopPropagation();
customPopups.showAlert('입력 정보 확인');
} else {
if (form.password.value.length < 8) {
customPopups.showAlert('[[#{login.passLengthShort}]]');
} else {
const originalPassword = form.password.value;
form.password.value = encodePassword(originalPassword);
form.submit();
}
}
form.classList.add('was-validated');
};
$('#actionLogin').on('click', actionLogin);
$('#password').on('keydown', function (event) {
if (event.key === 'Enter' || event.keyCode === 13 || event.code === 'Enter') {
event.preventDefault();
actionLogin(event);
}
});
fnInit();
});
</script>
</th:block>
</html>