Skip to content
Snippets Groups Projects
route.ts 1.34 KiB
Newer Older
Caner's avatar
Caner committed
import { db } from '@/lib/db'
import { redirect } from 'next/navigation'
import { NextRequest } from 'next/server'

export async function GET(
    _request: NextRequest,
    {
        params,
    }: {
        params: { token: string }
    }
Caner's avatar
Caner committed
) {
    const { token } = params
Caner's avatar
Caner committed

    const user = await db.user.findFirst({
        where: {
            ActivationToken: {
                some: {
                    AND: [
                        {
                            activationDate: null,
                        },
                        {
                            createdAt: {
                                gt: new Date(Date.now() - 24 * 60 * 60 * 1000), // 24 hours ago
                            },
                        },
                        {
                            token
                        },
                    ],
                },
Caner's avatar
Caner committed
            },
        },
Caner's avatar
Caner committed

    if (!user) {
        throw new Error('Token is invalid or expired')
    }
Caner's avatar
Caner committed

    const userUpdate = await db.user.update({
        where: {
            id: user.id,
        },
        data: {
            emailVerified: new Date(Date.now()),
        },
    })
Caner's avatar
Caner committed

    const actiaction = await db.activationToken.update({
        where: {
            token,
        },
        data: {
            activationDate: new Date(),
        },
    })
Caner's avatar
Caner committed

    redirect('/verify')
Caner's avatar
Caner committed
}