From 5873b7276c3bea626e19db69ee8df24299ca5c69 Mon Sep 17 00:00:00 2001 From: alma Date: Sat, 3 May 2025 15:27:28 +0200 Subject: [PATCH] widget cache --- app/[section]/page.tsx | 17 ++++++++++++----- components/main-nav.tsx | 6 +++--- components/sidebar.tsx | 41 +++++++++++++++++++++++++++++++++++++---- 3 files changed, 52 insertions(+), 12 deletions(-) diff --git a/app/[section]/page.tsx b/app/[section]/page.tsx index 9d6d04e0..47d2d448 100644 --- a/app/[section]/page.tsx +++ b/app/[section]/page.tsx @@ -10,12 +10,19 @@ const menuItems = { missions: "https://example.com/missions" } -export default async function SectionPage({ params }: { params: { section: string } }) { - const section = params.section; - const iframeUrl = menuItems[section as keyof typeof menuItems] +type PageProps = { + params: { + section: string; + }; +}; + +export default async function SectionPage({ params }: PageProps) { + const sectionSlug = String(params?.section || ''); + + const iframeUrl = menuItems[sectionSlug as keyof typeof menuItems]; if (!iframeUrl) { - notFound() + notFound(); } return ( @@ -27,6 +34,6 @@ export default async function SectionPage({ params }: { params: { section: strin allowFullScreen /> - ) + ); } diff --git a/components/main-nav.tsx b/components/main-nav.tsx index 2c57f556..3a9b08de 100644 --- a/components/main-nav.tsx +++ b/components/main-nav.tsx @@ -191,19 +191,19 @@ export function MainNav() { title: "ShowCase", icon: Lightbulb, href: '/showcase', - requiredRoles: ["Expression"], + requiredRoles: ["expression"], }, { title: "Equipes", icon: UserCog, href: '/equipes', - requiredRoles: ["Admin", "Entrepreneurship"], + requiredRoles: ["admin", "entrepreneurship"], }, { title: "TheMessage", icon: Mail, href: '/the-message', - requiredRoles: ["Mediation", "Expression"], + requiredRoles: ["mediation", "expression"], }, ]; diff --git a/components/sidebar.tsx b/components/sidebar.tsx index 0fcf51e6..e706bcf0 100644 --- a/components/sidebar.tsx +++ b/components/sidebar.tsx @@ -181,28 +181,28 @@ export function Sidebar({ isOpen, onClose }: SidebarProps) { icon: Palette, href: "/design", iframe: process.env.NEXT_PUBLIC_IFRAME_ARTLAB_URL, - requiredRole: "Expression", + requiredRole: "expression", }, { title: "Gite", icon: GitFork, href: "/gite", iframe: process.env.NEXT_PUBLIC_IFRAME_GITE_URL, - requiredRole: ["Coding", "DataIntelligence"], + requiredRole: ["coding", "dataintelligence"], }, { title: "Calcul", icon: Calculator, href: "/calcul", iframe: process.env.NEXT_PUBLIC_IFRAME_CALCULATION_URL, - requiredRole: "DataIntelligence", + requiredRole: "dataintelligence", }, { title: "Médiation", icon: Building2, href: "/mediation", iframe: process.env.NEXT_PUBLIC_IFRAME_MEDIATIONS_URL, - requiredRole: ["Mediation", "Expression"], + requiredRole: ["mediation", "expression"], }, ]; @@ -288,6 +288,39 @@ export function Sidebar({ isOpen, onClose }: SidebarProps) { {JSON.stringify(session?.user?.role, null, 2)} +
+ Normalized Roles +
+                      {JSON.stringify(
+                        Array.isArray(session?.user?.role) 
+                          ? session.user.role.map(role => 
+                              typeof role === 'string' 
+                                ? role
+                                    .replace(/^\//, '')
+                                    .replace(/^ROLE_/i, '')
+                                    .replace(/^default-roles-[^/]*\//i, '')
+                                    .toLowerCase()
+                                : ''
+                            )
+                          : []
+                        , null, 2)}
+                    
+
+
+ Role-Based Items +
+ {roleSpecificItems.map(item => { + const isVisible = hasRole(item.requiredRole); + return ( +
+

Item: {item.title}

+

Required Role: {JSON.stringify(item.requiredRole)}

+

Visible: {isVisible ? '✅' : '❌'}

+
+ ); + })} +
+
)}