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 }
)
}
}