diff --git a/src/app/home-page/components/LeaderboardAd.tsx b/src/app/home-page/components/LeaderboardAd.tsx index 242a7f8..bd4bc4a 100644 --- a/src/app/home-page/components/LeaderboardAd.tsx +++ b/src/app/home-page/components/LeaderboardAd.tsx @@ -1,22 +1,12 @@ import React from "react"; -import AppImage from "@/components/ui/AppImage"; +import AdSlot from "@/components/AdSlot"; -// DO NOT OVERRIDE — Leaderboard ad placeholder layout export default function LeaderboardAd() { return (
- {/* Leaderboard ad unit — 728x90 — stub links to advertise page */} - - - - +
-
); - + + ); } \ No newline at end of file diff --git a/src/components/Header.tsx b/src/components/Header.tsx index 2721c42..59f4440 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -48,6 +48,7 @@ export default function Header() { const [searchFocused, setSearchFocused] = useState(false); const [currentUserId, setCurrentUserId] = useState(null); const [currentUserEmail, setCurrentUserEmail] = useState(null); + const [isAdmin, setIsAdmin] = useState(false); const [subEmail, setSubEmail] = useState(""); const [subStatus, setSubStatus] = useState<"idle" | "loading" | "success" | "error">("idle"); const [subMessage, setSubMessage] = useState(""); @@ -65,14 +66,29 @@ export default function Header() { useEffect(() => { const supabase = createClient(); + const ADMIN_ROLES = new Set([ + "administrator", "admin", "super_admin", "editor", "support", + ]); + + const refreshAdmin = async (userId: string | null) => { + if (!userId) { setIsAdmin(false); return; } + const { data } = await supabase + .from("user_profiles") + .select("role") + .eq("id", userId) + .maybeSingle(); + setIsAdmin(!!data?.role && ADMIN_ROLES.has(data.role)); + }; + supabase.auth.getUser().then(({ data: { user } }) => { setCurrentUserId(user?.id || null); setCurrentUserEmail(user?.email || null); + refreshAdmin(user?.id || null); }); - const supabase2 = createClient(); - const { data: { subscription } } = supabase2.auth.onAuthStateChange((_event, session) => { + const { data: { subscription } } = supabase.auth.onAuthStateChange((_event, session) => { setCurrentUserId(session?.user?.id || null); setCurrentUserEmail(session?.user?.email || null); + refreshAdmin(session?.user?.id || null); }); return () => subscription.unsubscribe(); }, []); @@ -237,48 +253,52 @@ export default function Header() { My Profile )} - - WP Import - - - Articles - - - Editorial - - - Users - - - Analytics - - - Audit Log - - - Notifications - - - Newsletter - - - Forum Seed - - - Company Tracker - - - Show Calendar - - - AI Console - - - Banned Terms - - - Dashboard - + {isAdmin && ( + <> + + WP Import + + + Articles + + + Editorial + + + Users + + + Analytics + + + Audit Log + + + Notifications + + + Newsletter + + + Forum Seed + + + Company Tracker + + + Show Calendar + + + AI Console + + + Banned Terms + + + Dashboard + + + )} {/* Inline Email Subscription Form */} {subStatus === "success" ? ( {subMessage} @@ -448,15 +468,17 @@ export default function Header() { Account {/* WP Import mobile link */} - setMobileOpen(false)}> - - WP Import - + {isAdmin && ( + setMobileOpen(false)}> + + WP Import + + )}
{categoryLinks?.map((link) => (