widget cache
This commit is contained in:
parent
3c2a56a7a2
commit
5873b7276c
@ -10,12 +10,19 @@ const menuItems = {
|
|||||||
missions: "https://example.com/missions"
|
missions: "https://example.com/missions"
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function SectionPage({ params }: { params: { section: string } }) {
|
type PageProps = {
|
||||||
const section = params.section;
|
params: {
|
||||||
const iframeUrl = menuItems[section as keyof typeof menuItems]
|
section: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export default async function SectionPage({ params }: PageProps) {
|
||||||
|
const sectionSlug = String(params?.section || '');
|
||||||
|
|
||||||
|
const iframeUrl = menuItems[sectionSlug as keyof typeof menuItems];
|
||||||
|
|
||||||
if (!iframeUrl) {
|
if (!iframeUrl) {
|
||||||
notFound()
|
notFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -27,6 +34,6 @@ export default async function SectionPage({ params }: { params: { section: strin
|
|||||||
allowFullScreen
|
allowFullScreen
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -191,19 +191,19 @@ export function MainNav() {
|
|||||||
title: "ShowCase",
|
title: "ShowCase",
|
||||||
icon: Lightbulb,
|
icon: Lightbulb,
|
||||||
href: '/showcase',
|
href: '/showcase',
|
||||||
requiredRoles: ["Expression"],
|
requiredRoles: ["expression"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Equipes",
|
title: "Equipes",
|
||||||
icon: UserCog,
|
icon: UserCog,
|
||||||
href: '/equipes',
|
href: '/equipes',
|
||||||
requiredRoles: ["Admin", "Entrepreneurship"],
|
requiredRoles: ["admin", "entrepreneurship"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "TheMessage",
|
title: "TheMessage",
|
||||||
icon: Mail,
|
icon: Mail,
|
||||||
href: '/the-message',
|
href: '/the-message',
|
||||||
requiredRoles: ["Mediation", "Expression"],
|
requiredRoles: ["mediation", "expression"],
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@ -181,28 +181,28 @@ export function Sidebar({ isOpen, onClose }: SidebarProps) {
|
|||||||
icon: Palette,
|
icon: Palette,
|
||||||
href: "/design",
|
href: "/design",
|
||||||
iframe: process.env.NEXT_PUBLIC_IFRAME_ARTLAB_URL,
|
iframe: process.env.NEXT_PUBLIC_IFRAME_ARTLAB_URL,
|
||||||
requiredRole: "Expression",
|
requiredRole: "expression",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Gite",
|
title: "Gite",
|
||||||
icon: GitFork,
|
icon: GitFork,
|
||||||
href: "/gite",
|
href: "/gite",
|
||||||
iframe: process.env.NEXT_PUBLIC_IFRAME_GITE_URL,
|
iframe: process.env.NEXT_PUBLIC_IFRAME_GITE_URL,
|
||||||
requiredRole: ["Coding", "DataIntelligence"],
|
requiredRole: ["coding", "dataintelligence"],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Calcul",
|
title: "Calcul",
|
||||||
icon: Calculator,
|
icon: Calculator,
|
||||||
href: "/calcul",
|
href: "/calcul",
|
||||||
iframe: process.env.NEXT_PUBLIC_IFRAME_CALCULATION_URL,
|
iframe: process.env.NEXT_PUBLIC_IFRAME_CALCULATION_URL,
|
||||||
requiredRole: "DataIntelligence",
|
requiredRole: "dataintelligence",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Médiation",
|
title: "Médiation",
|
||||||
icon: Building2,
|
icon: Building2,
|
||||||
href: "/mediation",
|
href: "/mediation",
|
||||||
iframe: process.env.NEXT_PUBLIC_IFRAME_MEDIATIONS_URL,
|
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)}
|
{JSON.stringify(session?.user?.role, null, 2)}
|
||||||
</pre>
|
</pre>
|
||||||
</details>
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary className="cursor-pointer">Normalized Roles</summary>
|
||||||
|
<pre className="mt-1 p-1 bg-white text-[10px] overflow-x-auto">
|
||||||
|
{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)}
|
||||||
|
</pre>
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary className="cursor-pointer">Role-Based Items</summary>
|
||||||
|
<div className="mt-1 p-1 bg-white text-[10px] overflow-x-auto">
|
||||||
|
{roleSpecificItems.map(item => {
|
||||||
|
const isVisible = hasRole(item.requiredRole);
|
||||||
|
return (
|
||||||
|
<div key={item.title} className="mb-1 pb-1 border-b">
|
||||||
|
<p><strong>Item:</strong> {item.title}</p>
|
||||||
|
<p><strong>Required Role:</strong> {JSON.stringify(item.requiredRole)}</p>
|
||||||
|
<p><strong>Visible:</strong> {isVisible ? '✅' : '❌'}</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
</details>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user