Fix config editor erorrs causing user delete failure

This commit is contained in:
LukeGus
2025-09-03 00:02:29 -05:00
parent 654ac3e693
commit 3269082acf

View File

@@ -1311,26 +1311,19 @@ router.delete('/delete-user', authenticateJWT, async (req, res) => {
const targetUserId = targetUser[0].id; const targetUserId = targetUser[0].id;
try { try {
// Delete from tables that have foreign keys to both users and ssh_data first
// These must be deleted before ssh_data because they reference host_id
await db.delete(fileManagerRecent).where(eq(fileManagerRecent.userId, targetUserId)); await db.delete(fileManagerRecent).where(eq(fileManagerRecent.userId, targetUserId));
await db.delete(fileManagerPinned).where(eq(fileManagerPinned.userId, targetUserId)); await db.delete(fileManagerPinned).where(eq(fileManagerPinned.userId, targetUserId));
await db.delete(fileManagerShortcuts).where(eq(fileManagerShortcuts.userId, targetUserId)); await db.delete(fileManagerShortcuts).where(eq(fileManagerShortcuts.userId, targetUserId));
// Delete from tables that only reference users
await db.delete(dismissedAlerts).where(eq(dismissedAlerts.userId, targetUserId)); await db.delete(dismissedAlerts).where(eq(dismissedAlerts.userId, targetUserId));
// Delete from ssh_data (which references users)
await db.delete(sshData).where(eq(sshData.userId, targetUserId)); await db.delete(sshData).where(eq(sshData.userId, targetUserId));
// Delete from any additional tables that might exist // Note: All user-related data has been deleted above
db.$client.prepare('DELETE FROM config_editor_recent WHERE user_id = ?').run(targetUserId); // The tables config_editor_* and shared_hosts don't exist in the current schema
db.$client.prepare('DELETE FROM config_editor_pinned WHERE user_id = ?').run(targetUserId);
db.$client.prepare('DELETE FROM config_editor_shortcuts WHERE user_id = ?').run(targetUserId);
db.$client.prepare('DELETE FROM shared_hosts WHERE original_user_id = ? OR shared_with_user_id = ?').run(targetUserId, targetUserId);
} catch (cleanupError) { } catch (cleanupError) {
logger.error(`Cleanup failed for user ${username}:`, cleanupError); logger.error(`Cleanup failed for user ${username}:`, cleanupError);
throw cleanupError; // Re-throw to prevent user deletion if cleanup fails throw cleanupError;
} }
await db.delete(users).where(eq(users.id, targetUserId)); await db.delete(users).where(eq(users.id, targetUserId));