Files
Nemia-Website/app/api/delete-account/route.ts

49 lines
1.2 KiB
TypeScript

import { createClient } from '@/utils/supabase/server'
import { redirect } from 'next/navigation'
import { NextResponse } from 'next/server'
export async function POST(request: Request) {
const supabase = await createClient()
// Check if user is authenticated
const {
data: { user },
} = await supabase.auth.getUser()
if (!user) {
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 })
}
// Perform soft deletes
const now = new Date().toISOString()
// 1. Soft delete usage data (card_progress)
await supabase
.from('card_progress')
.update({ deleted_at: now })
.eq('user_id', user.id)
// 2. Soft delete content (decks)
await supabase
.from('decks')
.update({ deleted_at: now })
.eq('creator_id', user.id)
// 3. Soft delete organization (folders)
await supabase
.from('folders')
.update({ deleted_at: now })
.eq('user_id', user.id)
// 4. Soft delete profile
await supabase
.from('profiles')
.update({ deleted_at: now })
.eq('id', user.id)
// 5. Sign out
await supabase.auth.signOut()
return NextResponse.redirect(new URL('/', request.url))
}