- 로그인 중복 세션 확인 및 기존 세션 강제 로그아웃 처리 추가

- 세션 타이머 데스크톱·모바일 표시 및 경고 스타일 동기화
This commit is contained in:
Rinjae
2026-06-19 18:06:40 +09:00
parent 7265ad6589
commit fc96c13df2
7 changed files with 68 additions and 11 deletions
@@ -115,6 +115,36 @@
form.checkId.checked = ((form.id.value = getCookie('saveid')) !== null);
}
// 로그인 전 중복 접속 확인 → 중복 시 기존 세션 강제 로그아웃 여부 질의
function checkDuplicateAndLogin(form) {
var loginId = form.id.value;
$.ajax({
url: /*[[@{/api/session/check-duplicate}]]*/ '/api/session/check-duplicate',
type: 'POST',
data: { loginId: loginId },
success: function (data) {
if (data && data.duplicateSession) {
$('#loginLoading').removeClass('active');
var msg = '해당 계정은 이미 다른 곳(' + data.ipAddress + ')에서 접속 중입니다.<br>'
+ '접속 시각: ' + data.loginTime + '<br><br>'
+ '기존 접속을 해제하고 로그인하시겠습니까?';
customPopups.showConfirm(msg, function (confirmed) {
if (confirmed) {
$('#loginLoading').addClass('active');
form.submit();
}
});
} else {
form.submit();
}
},
error: function () {
// 중복 체크 실패 시 로그인은 그대로 진행
form.submit();
}
});
}
function fnInit() {
let form = document.getElementById('loginForm');
if (form) {
@@ -179,7 +209,7 @@
$('#loginLoading').removeClass('active');
customPopups.showAlert('[[#{login.passLengthShort}]]');
} else {
form.submit();
checkDuplicateAndLogin(form);
}
}
form.classList.add('was-validated');