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


export async function GET(
  _request: NextRequest,
  {
    params,
  }: {
    params: { token: string }
  }
) {
  const { token } = params

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

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

  await db.user.update({
    where: {
      id: user.id,
    },
    data: {
      emailVerified: true,
    },
  })

  await db.activationToken.update({
    where: {
      token,
    },
    data: {
      activationDate: new Date(),
    },
  })
  redirect('/login')
}