diff --git a/src/backend/database/routes/users.ts b/src/backend/database/routes/users.ts index 39140c76..11dc46d0 100644 --- a/src/backend/database/routes/users.ts +++ b/src/backend/database/routes/users.ts @@ -1311,26 +1311,19 @@ router.delete('/delete-user', authenticateJWT, async (req, res) => { const targetUserId = targetUser[0].id; 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(fileManagerPinned).where(eq(fileManagerPinned.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)); - // Delete from ssh_data (which references users) await db.delete(sshData).where(eq(sshData.userId, targetUserId)); - // Delete from any additional tables that might exist - db.$client.prepare('DELETE FROM config_editor_recent WHERE user_id = ?').run(targetUserId); - 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); + // Note: All user-related data has been deleted above + // The tables config_editor_* and shared_hosts don't exist in the current schema } catch (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));