Fix config editor erorrs causing user delete failure
This commit is contained in:
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user