fix: save original user data before edit, restore on recreate failure
This commit is contained in:
parent
4a9d5f7ede
commit
6dedc6d432
1 changed files with 16 additions and 1 deletions
15
main.go
15
main.go
|
|
@ -1853,6 +1853,13 @@ const adminHTML = `<!DOCTYPE html>
|
|||
groups.push(cb.value);
|
||||
});
|
||||
|
||||
// Save original user data before deleting (safety net)
|
||||
let originalData = null;
|
||||
try {
|
||||
const origResp = await fetch('/api/users/' + username);
|
||||
if (origResp.ok) originalData = await origResp.json();
|
||||
} catch(e) {}
|
||||
|
||||
// 1. Delete user
|
||||
const delResp = await fetch('/api/users/' + username, { method: 'DELETE' });
|
||||
if (!delResp.ok) { alert('Failed to delete user for re-creation'); return; }
|
||||
|
|
@ -1887,9 +1894,17 @@ const adminHTML = `<!DOCTYPE html>
|
|||
resultDiv.innerHTML = '<div style="padding:0.75rem 1rem;background:#f0fff4;border:1px solid #c6f6d5;border-radius:8px;color:#276749;font-size:0.88rem;">✅ User updated.<br>New password: <code style="background:#edf2f7;padding:0.15rem 0.4rem;border-radius:4px;font-size:0.82rem;">' + pwd + '</code><br>Share this with the user.</div>';
|
||||
closeEditUserModal();
|
||||
loadUsers();
|
||||
} else {
|
||||
// Restore original user if available
|
||||
if (originalData && originalData.username) {
|
||||
const restoreBody = JSON.stringify({users:[{username:originalData.username,display_name:originalData.display_name||originalData.username,email:originalData.email||'',groups:originalData.groups||['users']}]});
|
||||
await fetch('/api/users/bulk', {method:'POST', headers:{'Content-Type':'application/json'}, body:restoreBody});
|
||||
resultDiv.innerHTML = '<div style="padding:0.75rem 1rem;background:#fff5f5;border:1px solid #fed7d7;border-radius:8px;color:#c53030;font-size:0.88rem;">❌ Update failed. The user has been restored to their original state. Error: ' + JSON.stringify(result) + '</div>';
|
||||
loadUsers();
|
||||
} else {
|
||||
resultDiv.innerHTML = '<div style="padding:0.75rem 1rem;background:#fff5f5;border:1px solid #fed7d7;border-radius:8px;color:#c53030;font-size:0.88rem;">❌ FAILED to recreate user. The user was deleted but could not be recreated. Please manually add the user again. Error: ' + JSON.stringify(result) + '</div>';
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue