```typescript import { betterAuth } from "better-auth"; import { prismaAdapter } from "better-auth/adapters/prisma"; import prisma from "@/lib/prisma"; import { organization, } from "better-auth/plugins"; import { nextCookies } from "better-auth/next-js"; import { emailHarmony } from "better-auth-harmony"; import { getActiveOrganization, getActiveTeamInTheOrganization, } from "./actions"; export const auth = betterAuth({ appName: "StepWise", database: prismaAdapter(prisma, { provider: "postgresql", }), account: { accountLinking: { enabled: true, trustedProviders: ["google", "microsoft"], allowDifferentEmails: true, }, }, socialProviders: { google: { disableImplicitSignUp: true, clientId: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID!, clientSecret: process.env.GOOGLE_CLIENT_SECRET!, }, }, session: { cookieCache: { enabled: true, maxAge: 5 * 60, // Cache duration in seconds }, }, plugins: [ organization({ allowCreatingOrganizations: false, teams: { enabled: true, maximumTeams: 10, allowRemovingAllTeams: true, maximumMembersPerTeam: 10, }, }), emailHarmony(), nextCookies(), ], databaseHooks: { session: { create: { before: async (session) => { const organization = await getActiveOrganization(session.userId); if (!organization) { return { data: session }; } const team = await getActiveTeamInTheOrganization(organization.id); if (!team) { return { data: { ...session, activeOrganizationId: organization.id, }, }; } return { data: { ...session, activeOrganizationId: organization.id, activeTeamId: team.id, }, }; }, }, }, }, });