import { PrismaAdapter } from "@auth/prisma-adapter" import NextAuth, { NextAuthOptions, User } from "next-auth" import Github from "next-auth/providers/github" import prisma from "./prisma" import { Adapter } from "next-auth/adapters" export const authOptions: NextAuthOptions = { providers: [ Github({ clientId: process.env.GITHUB_ID as string, clientSecret: process.env.GITHUB_SECRET as string, profile(profile, tokens) { return { id: profile.id, name: profile.name, email: profile.email, image: profile.avatar_url, username: profile.login, } as User; }, }), ], adapter: PrismaAdapter(prisma) as Adapter, pages: { signIn: "/sign-in", }, session: { strategy: "jwt", }, callbacks: { session: ({ session, token }) => { return { ...session, user: { ...session.user, id: token.id, username: token.username, }, }; }, jwt: ({ token, user }) => { if (user) { const u = user as unknown as any; return { ...token, id: u.id, username: u.username, }; } return token; }, }, events: { createUser: async ({ user }) => { await prisma.workspace.create({ data: { name: user.username + "'s Personal", ownerId: user.id, slug: user.username.toLowerCase(), }, }); } }, }