diff --git a/app/components/site-header/mobile-menu.tsx b/app/components/site-header/mobile-menu.tsx index 37e28e9..02f17ba 100644 --- a/app/components/site-header/mobile-menu.tsx +++ b/app/components/site-header/mobile-menu.tsx @@ -5,6 +5,7 @@ import { signOut } from "@/actions/auth"; interface MobileMenuProps { user: User | null; + isRecovery?: boolean; open: boolean; onClose: () => void; } @@ -12,7 +13,7 @@ interface MobileMenuProps { const mobileLinkClass = "block text-left text-base font-medium text-white/90 hover:text-white"; -export function MobileMenu({ user, open, onClose }: MobileMenuProps) { +export function MobileMenu({ user, isRecovery = false, open, onClose }: MobileMenuProps) { if (!open) return null; return ( @@ -22,7 +23,7 @@ export function MobileMenu({ user, open, onClose }: MobileMenuProps) {
- {user ? ( + {user && !isRecovery ? ( <> Dashboard diff --git a/app/components/site-header/site-header.tsx b/app/components/site-header/site-header.tsx index 75cf04d..318a167 100644 --- a/app/components/site-header/site-header.tsx +++ b/app/components/site-header/site-header.tsx @@ -11,12 +11,13 @@ import { MobileMenu } from "./mobile-menu"; interface SiteHeaderProps { user: User | null; + isRecovery?: boolean; } const headerCtaClass = "inline-flex items-center gap-1.5 rounded-full bg-white px-4 text-xs font-medium uppercase tracking-wide text-neutral-950 cursor-pointer hover:bg-primary/80"; -export function SiteHeader({ user }: SiteHeaderProps) { +export function SiteHeader({ user, isRecovery = false }: SiteHeaderProps) { const [mobileOpen, setMobileOpen] = useState(false); const [displayText, setDisplayText] = useState("."); const [isTyping, setIsTyping] = useState(false); @@ -110,18 +111,7 @@ export function SiteHeader({ user }: SiteHeaderProps) {
- {!user ? ( - - ) : ( + {user && !isRecovery ? ( <> + ) : ( + )}
@@ -159,6 +160,7 @@ export function SiteHeader({ user }: SiteHeaderProps) { setMobileOpen(false)} /> diff --git a/app/layout.tsx b/app/layout.tsx index 3be9642..17ead93 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -2,6 +2,7 @@ import type { Metadata } from "next"; import { SpeedInsights } from "@vercel/speed-insights/next"; import { Analytics } from "@vercel/analytics/next"; import { createClient } from "@/lib/supabase/server"; +import { isRecoverySession } from "@/lib/auth"; import { SiteHeader } from "@/components/site-header"; import { Footer } from "@/components/footer"; import { SiteBackground } from "@/components/site-background"; @@ -50,11 +51,17 @@ export default async function RootLayout({ children }: LayoutProps) { data: { user }, } = await supabase.auth.getUser(); + const { + data: { session }, + } = await supabase.auth.getSession(); + + const isRecovery = session ? isRecoverySession(session.access_token) : false; + return ( - +
{children}