feat: 增加用户修改密码与管理员重置密码

This commit is contained in:
guoqingshan
2026-08-01 21:11:03 +08:00
parent ea9103d765
commit 1e84e8e210
8 changed files with 167 additions and 4 deletions
+45
View File
@@ -380,6 +380,7 @@ function renderUserArea() {
if (!currentUser) return;
document.getElementById('user-name').textContent = currentUser.displayName || currentUser.username;
document.getElementById('btn-logout').style.display = '';
document.getElementById('btn-change-password').style.display = '';
if (currentUser.isAdmin) {
document.getElementById('admin-link').style.display = '';
}
@@ -477,6 +478,47 @@ function closeSettingsModal() {
document.getElementById('settings-modal-overlay').classList.remove('show');
}
function openPasswordModal() {
document.getElementById('password-msg').textContent = '';
document.getElementById('password-old').value = '';
document.getElementById('password-new').value = '';
document.getElementById('password-confirm').value = '';
document.getElementById('password-modal-overlay').classList.add('show');
setTimeout(function() { document.getElementById('password-old').focus(); }, 0);
}
function closePasswordModal() {
document.getElementById('password-modal-overlay').classList.remove('show');
}
function savePasswordModal() {
var oldPassword = document.getElementById('password-old').value;
var newPassword = document.getElementById('password-new').value;
var confirmPassword = document.getElementById('password-confirm').value;
var msg = document.getElementById('password-msg');
if (!oldPassword) {
msg.textContent = '请输入当前密码';
return;
}
if (newPassword.length < 6) {
msg.textContent = '新密码至少 6 位';
return;
}
if (newPassword !== confirmPassword) {
msg.textContent = '两次输入的新密码不一致';
return;
}
apiChangePassword({
oldPassword: oldPassword,
newPassword: newPassword
}).then(function() {
closePasswordModal();
alert('密码已修改');
}).catch(function(err) {
msg.textContent = err.message || '修改密码失败';
});
}
function saveSettingsModal() {
var extra = {};
var rawExtra = document.getElementById('extra-config').value.trim();
@@ -530,6 +572,9 @@ function bindAppEvents() {
document.getElementById('btn-settings').addEventListener('click', openSettingsModal);
document.getElementById('settings-cancel').addEventListener('click', closeSettingsModal);
document.getElementById('settings-save').addEventListener('click', saveSettingsModal);
document.getElementById('btn-change-password').addEventListener('click', openPasswordModal);
document.getElementById('password-cancel').addEventListener('click', closePasswordModal);
document.getElementById('password-save').addEventListener('click', savePasswordModal);
document.getElementById('btn-logout').addEventListener('click', handleLogout);
document.querySelectorAll('#mobile-nav button').forEach(function(btn) {