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), session: { strategy: "database", }, providers: [ GoogleProvider({ clientId: process.env.GOOGLE_CLIENT_ID!, clientSecret: process.env.GOOGLE_CLIENT_SECRET!, authorization: { params: { scope: "openid email profile https://www.googleapis.com/auth/drive.file", prompt: "consent", access_type: "offline", response_type: "code", }, }, }), ], callbacks: { async session({ session, user }) { if (session?.user && user) { session.user.id = user.id; session.user.role = user.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' }, }); } }, }, };