diff --git a/main.go b/main.go
index 746c7fb..c0cad7a 100644
--- a/main.go
+++ b/main.go
@@ -1853,6 +1853,13 @@ const adminHTML = `
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; }
@@ -1888,7 +1895,15 @@ const adminHTML = `
closeEditUserModal();
loadUsers();
} else {
- resultDiv.innerHTML = '
❌ FAILED to recreate user. The user was deleted but could not be recreated. Please manually add the user again. Error: ' + JSON.stringify(result) + '
';
+ // 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 = '❌ Update failed. The user has been restored to their original state. Error: ' + JSON.stringify(result) + '
';
+ loadUsers();
+ } else {
+ resultDiv.innerHTML = '❌ FAILED to recreate user. The user was deleted but could not be recreated. Please manually add the user again. Error: ' + JSON.stringify(result) + '
';
+ }
}
return false;
}