Skip to content
This repository was archived by the owner on Jul 28, 2026. It is now read-only.

Commit f2bd133

Browse files
committed
Delete DB account first, then best-effort Pterodactyl cleanup
1 parent dbe1b93 commit f2bd133

1 file changed

Lines changed: 22 additions & 20 deletions

File tree

routes/auth.js

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -344,13 +344,14 @@ router.post('/change-email', authenticateToken, async (req, res) => {
344344
router.post('/delete-account', authenticateToken, async (req, res) => {
345345
try {
346346
const { password } = req.body;
347+
const userId = req.user?.userId;
347348
const pteroId = req.user?.pteroId;
348349

349350
if (!password) {
350351
return res.status(400).json({ error: 'Password is required' });
351352
}
352353

353-
const users = await query('SELECT * FROM users WHERE ptero_user_id = ?', [pteroId]);
354+
const users = await query('SELECT * FROM users WHERE id = ?', [userId]);
354355
if (users.length === 0) {
355356
return res.status(404).json({ error: 'User not found' });
356357
}
@@ -362,30 +363,31 @@ router.post('/delete-account', authenticateToken, async (req, res) => {
362363
return res.status(401).json({ error: 'Password is incorrect' });
363364
}
364365

365-
// Delete all Pterodactyl servers first
366-
try {
367-
const servers = await getServersByUser(pteroId);
368-
for (const server of servers) {
369-
try {
370-
await deletePteroServer(server.id);
371-
} catch (err) {
372-
console.error(`Failed to delete server ${server.id}:`, err.message);
366+
// Delete from local DB first (cascades to user_ips)
367+
await query('DELETE FROM users WHERE id = ?', [user.id]);
368+
369+
// Then try to clean up Pterodactyl (best effort)
370+
if (pteroId) {
371+
try {
372+
const servers = await getServersByUser(pteroId);
373+
for (const server of servers) {
374+
try {
375+
await deletePteroServer(server.id);
376+
} catch (err) {
377+
console.error(`Failed to delete server ${server.id}:`, err.message);
378+
}
373379
}
380+
} catch (err) {
381+
console.error('Failed to fetch servers for deletion:', err.message);
374382
}
375-
} catch (err) {
376-
console.error('Failed to fetch servers for deletion:', err.message);
377-
}
378383

379-
// Delete Pterodactyl user
380-
try {
381-
await deletePteroUser(pteroId);
382-
} catch (err) {
383-
console.error('Failed to delete Pterodactyl user:', err.message);
384+
try {
385+
await deletePteroUser(pteroId);
386+
} catch (err) {
387+
console.error('Failed to delete Pterodactyl user:', err.message);
388+
}
384389
}
385390

386-
// Delete from local DB (cascades to user_ips)
387-
await query('DELETE FROM users WHERE id = ?', [user.id]);
388-
389391
res.json({ message: 'Account deleted successfully' });
390392
} catch (err) {
391393
console.error('Delete account error:', err.message);

0 commit comments

Comments
 (0)