"use client" import { authClient } from "@lib/auth" import { useRouter } from "next/navigation" import { useEffect } from "react" export const AnonymousAuth = ({ dashboardPath = "/dashboard", loginPath = "/login", }) => { const router = useRouter() useEffect(() => { const createAnonymousSession = async () => { const session = await authClient.getSession() if (!session?.session) { console.debug( "[ANONYMOUS_AUTH] No session found, creating anonymous session...", ) try { // Create anonymous session console.debug("[ANONYMOUS_AUTH] Calling signIn.anonymous()...") const res = await authClient.signIn.anonymous() if (!res.token) { throw new Error("Failed to get anonymous token") } // Get the new session console.debug( "[ANONYMOUS_AUTH] Getting new session with anonymous token...", ) const newSession = await authClient.getSession() console.debug("[ANONYMOUS_AUTH] New session retrieved:", newSession) if (!newSession?.session || !newSession?.user) { console.error( "[ANONYMOUS_AUTH] Failed to create anonymous session - missing session or user", ) throw new Error("Failed to create anonymous session") } // Get the user's organization console.debug( "[ANONYMOUS_AUTH] Fetching organizations for anonymous user...", ) const orgs = await authClient.organization.list() console.debug("[ANONYMOUS_AUTH] Organizations retrieved:", { count: orgs?.length || 0, orgs: orgs?.map((o) => ({ id: o.id, name: o.name, slug: o.slug, })), }) const org = orgs?.[0] if (!org) { console.error( "[ANONYMOUS_AUTH] No organization found for anonymous user", ) throw new Error("Failed to get organization for anonymous user") } // Redirect to the organization dashboard console.debug( `[ANONYMOUS_AUTH] Redirecting anonymous user to /${org.slug}${dashboardPath}`, ) router.push(dashboardPath) } catch (error) { console.error( "[ANONYMOUS_AUTH] Anonymous session creation error:", error, ) console.error("[ANONYMOUS_AUTH] Error details:", { message: error instanceof Error ? error.message : "Unknown error", stack: error instanceof Error ? error.stack : undefined, }) router.push(loginPath) } } else if (session.session) { // Session exists, handle organization routing console.debug( "[ANONYMOUS_AUTH] Session exists, checking organization...", ) if (!session.session.activeOrganizationId) { console.debug( "[ANONYMOUS_AUTH] No active organization ID, fetching organizations...", ) const orgs = await authClient.organization.list() console.debug("[ANONYMOUS_AUTH] Organizations for existing user:", { count: orgs?.length || 0, orgs: orgs?.map((o) => ({ id: o.id, name: o.name, slug: o.slug, })), }) if (orgs?.[0]) { console.debug( `[ANONYMOUS_AUTH] Setting active organization to ${orgs[0].id}`, ) await authClient.organization.setActive({ organizationId: orgs[0].id, }) console.debug( `[ANONYMOUS_AUTH] Redirecting to /${orgs[0].slug}${dashboardPath}`, ) router.push(dashboardPath) } } else { console.debug( `[ANONYMOUS_AUTH] Active organization ID: ${session.session.activeOrganizationId}`, ) console.debug( "[ANONYMOUS_AUTH] Fetching full organization details...", ) const org = await authClient.organization.getFullOrganization({ query: { organizationId: session.session.activeOrganizationId, }, }) console.debug("[ANONYMOUS_AUTH] Full organization retrieved:", { id: org.id, name: org.name, slug: org.slug, }) console.debug( `[ANONYMOUS_AUTH] Redirecting to /${org.slug}${dashboardPath}`, ) router.push(dashboardPath) } } } createAnonymousSession() }, [router.push]) // Return null as this component only handles the redirect logic return null }