fix: 修复登录重复创建会话 + 备注输入框不可交互
- login.js 增加防重复提交锁,请求期间禁用按钮 - Manager.Create 增加幂等检查,同用户同IP同UA 10秒内复用已有会话 - 移除当前设备备注输入框的 readonly 限制,改为 data-current 标记 - 修复 readonly 状态下输入框完全透明无法点击的问题
This commit is contained in:
@ -55,7 +55,14 @@
|
||||
doLogin(email, password);
|
||||
});
|
||||
|
||||
var loginInProgress = false;
|
||||
|
||||
function doLogin(email, password) {
|
||||
if (loginInProgress) return;
|
||||
loginInProgress = true;
|
||||
submitBtn.disabled = true;
|
||||
submitBtn.textContent = '登录中...';
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', '/api/auth/login', true);
|
||||
xhr.setRequestHeader('Content-Type', 'application/json');
|
||||
@ -65,7 +72,9 @@
|
||||
try { resp = JSON.parse(xhr.responseText); } catch (err) { resp = null; }
|
||||
|
||||
if (xhr.status === 200 && resp && resp.success && resp.action === 'confirm_restore') {
|
||||
// 注销账号登录 → 二次确认恢复
|
||||
loginInProgress = false;
|
||||
submitBtn.disabled = false;
|
||||
submitBtn.textContent = '登录';
|
||||
if (confirm(resp.message + '\n\n确认继续登录将中止注销流程。')) {
|
||||
doConfirmRestore(email, password);
|
||||
}
|
||||
@ -75,6 +84,9 @@
|
||||
window.location.href = '/';
|
||||
}, 800);
|
||||
} else {
|
||||
loginInProgress = false;
|
||||
submitBtn.disabled = false;
|
||||
submitBtn.textContent = '登录';
|
||||
var msg = (resp && resp.message) ? resp.message : '登录失败,请稍后重试';
|
||||
window.MetaLab.toast(toast, msg, true);
|
||||
}
|
||||
@ -84,6 +96,11 @@
|
||||
}
|
||||
|
||||
function doConfirmRestore(email, password) {
|
||||
if (loginInProgress) return;
|
||||
loginInProgress = true;
|
||||
submitBtn.disabled = true;
|
||||
submitBtn.textContent = '恢复中...';
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('POST', '/api/auth/confirm-restore', true);
|
||||
xhr.setRequestHeader('Content-Type', 'application/json');
|
||||
@ -98,6 +115,9 @@
|
||||
window.location.href = '/';
|
||||
}, 800);
|
||||
} else {
|
||||
loginInProgress = false;
|
||||
submitBtn.disabled = false;
|
||||
submitBtn.textContent = '登录';
|
||||
var msg = (resp && resp.message) ? resp.message : '操作失败,请稍后重试';
|
||||
window.MetaLab.toast(toast, msg, true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user