diff --git a/apps/web/app/admin/accounts/[account]/page.tsx b/apps/web/app/admin/accounts/[account]/page.tsx index 01cd60637..1ed85764f 100644 --- a/apps/web/app/admin/accounts/[account]/page.tsx +++ b/apps/web/app/admin/accounts/[account]/page.tsx @@ -1,3 +1,7 @@ -export default function AccountPage() { +import { AdminGuard } from '@kit/admin/components/admin-guard'; + +function AccountPage() { return
; } + +export default AdminGuard(AccountPage); diff --git a/apps/web/app/admin/accounts/page.tsx b/apps/web/app/admin/accounts/page.tsx index 9129598de..7e071c736 100644 --- a/apps/web/app/admin/accounts/page.tsx +++ b/apps/web/app/admin/accounts/page.tsx @@ -1,6 +1,7 @@ +import { AdminGuard } from '@kit/admin/components/admin-guard'; import { PageBody, PageHeader } from '@kit/ui/page'; -export default function AccountsPage() { +function AccountsPage() { return ( <> @@ -8,3 +9,5 @@ export default function AccountsPage() { ); } + +export default AdminGuard(AccountsPage); diff --git a/apps/web/app/admin/page.tsx b/apps/web/app/admin/page.tsx index 859f822ad..b5c69a0ae 100644 --- a/apps/web/app/admin/page.tsx +++ b/apps/web/app/admin/page.tsx @@ -1,7 +1,8 @@ import { AdminDashboard } from '@kit/admin/components/admin-dashboard'; +import { AdminGuard } from '@kit/admin/components/admin-guard'; import { PageBody, PageHeader } from '@kit/ui/page'; -export default function AdminPage() { +function AdminPage() { return ( <> @@ -12,3 +13,5 @@ export default function AdminPage() { ); } + +export default AdminGuard(AdminPage); diff --git a/packages/features/admin/src/components/admin-guard.tsx b/packages/features/admin/src/components/admin-guard.tsx index 6a255a27d..1a26c8cdd 100644 --- a/packages/features/admin/src/components/admin-guard.tsx +++ b/packages/features/admin/src/components/admin-guard.tsx @@ -2,10 +2,15 @@ import { notFound } from 'next/navigation'; import { getSupabaseServerComponentClient } from '@kit/supabase/server-component-client'; -import { isSuperAdmin } from '../lib/is-super-admin'; +import { isSuperAdmin } from '../lib/server/is-super-admin'; type LayoutOrPageComponent = React.ComponentType; +/** + * AdminGuard is a server component wrapper that checks if the user is a super-admin before rendering the component. + * If the user is not a super-admin, we redirect to a 404. + * @param Component - The Page or Layout component to wrap + */ export function AdminGuard( Component: LayoutOrPageComponent, ) {