HQ
+This page is accessible to SUPERADMIN and OWNER users.
+diff --git a/app/(main)/components/sidebar.tsx b/app/(main)/components/sidebar.tsx
new file mode 100644
index 0000000..22443f8
--- /dev/null
+++ b/app/(main)/components/sidebar.tsx
@@ -0,0 +1,80 @@
+import Link from 'next/link';
+import { createClient } from '@/app/lib/supabase/server-client';
+
+type Role = 'default' | 'requestor' | 'admin' | 'superadmin' | 'owner';
+
+type SidebarLink = {
+ label: string;
+ href: string;
+ allowedRoles: Role[];
+};
+
+export default async function Sidebar() {
+ const supabase = await createClient();
+
+ // Get user claims (JWT)
+ const { data } = await supabase.auth.getClaims();
+ const role = data?.claims?.user_role as Role | undefined;
+
+ // Not logged in → no sidebar
+ if (!role) return null;
+
+ const links: SidebarLink[] = [
+ {
+ label: 'Home',
+ href: '/home',
+ allowedRoles: ['default', 'requestor', 'admin', 'superadmin', 'owner'],
+ },
+ {
+ label: 'Profile',
+ href: '/profile',
+ allowedRoles: ['requestor', 'admin', 'superadmin', 'owner'],
+ },
+ {
+ label: 'Request',
+ href: '/request',
+ allowedRoles: ['requestor', 'admin', 'superadmin', 'owner'],
+ },
+ {
+ label: 'Outgoing Tickets',
+ href: '/outgoing-tickets',
+ allowedRoles: ['requestor', 'admin', 'superadmin', 'owner'],
+ },
+ {
+ label: 'Manage',
+ href: '/manage',
+ allowedRoles: ['admin', 'superadmin', 'owner'],
+ },
+ {
+ label: 'Incoming Tickets',
+ href: '/incoming-tickets',
+ allowedRoles: ['admin', 'superadmin', 'owner'],
+ },
+ {
+ label: 'Team',
+ href: '/team',
+ allowedRoles: ['requestor', 'admin', 'superadmin', 'owner'],
+ },
+ {
+ label: 'HQ',
+ href: '/hq',
+ allowedRoles: ['superadmin', 'owner'],
+ },
+ ];
+
+ return (
+
+ );
+}
diff --git a/app/(main)/hq/page.tsx b/app/(main)/hq/page.tsx
new file mode 100644
index 0000000..496af6e
--- /dev/null
+++ b/app/(main)/hq/page.tsx
@@ -0,0 +1,8 @@
+export default function HQPage() {
+ return (
+ This page is accessible to SUPERADMIN and OWNER users. Manage incoming requests, to be completed.HQ
+ Incoming Tickets
+
Manage page, to be completed.
+Request page, to be completed.
+Team page, to be completed.
+