import { NextAuthOptions } from "next-auth"; import GoogleProvider from "next-auth/providers/google"; import { PrismaAdapter } from "@next-auth/prisma-adapter"; import { prisma } from "@/lib/prisma"; export const authOptions: NextAuthOptions = { adapter: PrismaAdapter(prisma), providers: [ GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID!, clientSecret: process.env.GOOGLE_CLIENT_SECRET!, }), ], callbacks: { async jwt({ token, account }) { if (account) { token.accessToken = account.access_token; } return token; }, async session({ session, user, token }) { if (session?.user) { session.user.id = user?.id || (token?.sub as string); const dbUser = await prisma.user.findUnique({ where: { id: session.user.id } }); session.user.role = dbUser?.role || 'EMPLOYEE'; } return session; }, }, events: { async createUser({ user }) { const userCount = await prisma.user.count(); if (userCount === 1) { await prisma.user.update({ where: { id: user.id }, data: { role: 'ADMIN' }, }); } }, }, pages: { signIn: "/auth/signin", }, };