Wrap admin pages with AdminGuard component

The AdminGuard component has been added to the AccountPage, AccountsPage, and AdminPage in the web app. This server-side implementation ensures that these pages are only accessible to super-admin users. If a user is not a super-admin, the guard will trigger a redirect to a 404 page.
This commit is contained in:
giancarlo
2024-04-08 14:39:02 +08:00
parent 4655f56143
commit 45417fe2c5
4 changed files with 19 additions and 4 deletions

View File

@@ -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<Params> = React.ComponentType<Params>;
/**
* 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<Params extends object>(
Component: LayoutOrPageComponent<Params>,
) {