@@ -344,13 +344,14 @@ router.post('/change-email', authenticateToken, async (req, res) => {
344344router . 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