first commit 2
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
(function() {
|
||||
// 전역 변수나 설정값은 HTML의 data- 속성이나 전역 객체에서 가져와야 함
|
||||
// 여기서는 relogin.skin.php에서 설정된 값을 사용한다고 가정
|
||||
|
||||
var modal = document.getElementById('relogin-modal');
|
||||
if (!modal) return;
|
||||
|
||||
var autoLogoutTime = parseInt(modal.dataset.time) || 300000; // 기본 5분
|
||||
var warningTime = 60000; // 60초 전 경고
|
||||
var timer = null;
|
||||
var countdownInterval = null;
|
||||
var timerSpan = document.getElementById('relogin-timer');
|
||||
var logoutUrl = modal.dataset.logoutUrl;
|
||||
var extendUrl = modal.dataset.extendUrl;
|
||||
|
||||
function startTimer() {
|
||||
clearTimeout(timer);
|
||||
clearInterval(countdownInterval);
|
||||
|
||||
// 경고 시간 설정
|
||||
timer = setTimeout(showWarning, autoLogoutTime - warningTime);
|
||||
}
|
||||
|
||||
function showWarning() {
|
||||
modal.classList.add('active');
|
||||
var remaining = warningTime / 1000;
|
||||
timerSpan.textContent = remaining;
|
||||
|
||||
countdownInterval = setInterval(function() {
|
||||
remaining--;
|
||||
timerSpan.textContent = remaining;
|
||||
if (remaining <= 0) {
|
||||
logout();
|
||||
}
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
function logout() {
|
||||
location.href = logoutUrl;
|
||||
}
|
||||
|
||||
function extendLogin() {
|
||||
// 서버에 세션 연장 요청
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', extendUrl);
|
||||
xhr.send();
|
||||
|
||||
modal.classList.remove('active');
|
||||
startTimer();
|
||||
}
|
||||
|
||||
document.getElementById('btn-extend-login').addEventListener('click', extendLogin);
|
||||
document.getElementById('btn-logout-now').addEventListener('click', logout);
|
||||
|
||||
// 초기 타이머 시작
|
||||
startTimer();
|
||||
})();
|
||||
Reference in New Issue
Block a user