diff --git a/server/api/profile/delete.delete.ts b/server/api/profile/delete.delete.ts index 103287f..bce0221 100644 --- a/server/api/profile/delete.delete.ts +++ b/server/api/profile/delete.delete.ts @@ -1,23 +1,39 @@ -import { getDb } from '~/server/utils/database' -import { requireAuth } from '~/server/utils/auth' +import { getUserByUsername } from '~/server/utils/database' +import { getAuthUser, clearAuthCookie } from '~/server/utils/auth' export default defineEventHandler(async (event) => { - const user = await requireAuth(event) + const authUser = await getAuthUser(event) - const db = getDb() + if (!authUser) { + throw createError({ + statusCode: 401, + message: 'Unauthorized' + }) + } + + const db = (await import('~/server/utils/database')).getDatabase() + + // Get current user data + const currentUser = getUserByUsername(authUser.username) + if (!currentUser) { + throw createError({ + statusCode: 404, + message: 'User not found' + }) + } try { // Delete user's notes first (foreign key constraint) - db.prepare('DELETE FROM notes WHERE user_id = ?').run(user.id) + db.prepare('DELETE FROM notes WHERE user_id = ?').run(currentUser.id) // Delete user's sessions - db.prepare('DELETE FROM sessions WHERE username = ?').run(user.username) + db.prepare('DELETE FROM sessions WHERE username = ?').run(currentUser.username) // Delete the user - db.prepare('DELETE FROM users WHERE id = ?').run(user.id) + db.prepare('DELETE FROM users WHERE id = ?').run(currentUser.id) // Clear the auth cookie - deleteCookie(event, 'session_token') + clearAuthCookie(event) return { success: true,