import { NextRequest, NextResponse, userAgent, userAgentFromString, } from 'next/server' import prismaClient from '@/lib/prismaClient' import { sendMail } from '@/lib/mail' import { getServerSession, User } from 'next-auth' import { authOptions } from '@/lib/auth' export async function POST(req: NextRequest) { const ip = req.ip || req.headers.get('x-forwarded-for') const { browser, device, os, isBot, ua } = userAgent(req) // const userAgentString = userAgentFromString(ua) const body = await req.json() const session = await getServerSession(authOptions as any) if (!session) { return NextResponse.json( { message: 'You must be logged in to request account deletion', }, { status: 401 } ) } // @ts-ignore const currentUser = session?.user as User if (!currentUser) { return NextResponse.json( { message: 'You must be logged in to request account deletion', }, { status: 401 } ) } const category = 'account-deletion' const message = body.message ?? 'No message provided' try { const result = await prismaClient.supportMessage.create({ data: { user: currentUser.id, category, message, ip, userAgent: ua, }, }) // send email to user await sendMail({ to: currentUser.email, cc: process.env.ADMIN_EMAIL, subject: `Account deletion request submitted: ${category}-${result.id}`, html: `
      

Account deletion request submitted

Thank you for contacting us. We will get back to you soon.

Here is a copy of your message:


Category


${category}

Message


${message}

Contact Information

Name: ${currentUser.name}

Email: ${currentUser.email}

`, }) return NextResponse.json({ message: 'Support request submitted', }) } catch (error) { console.error(error) return NextResponse.json( { message: `Support request failed to submit : ${error.message}`, }, { status: 400 } ) } }