diff --git a/app/(app)/layout.tsx b/app/(app)/layout.tsx index fe06edd..cdd8fae 100644 --- a/app/(app)/layout.tsx +++ b/app/(app)/layout.tsx @@ -2,6 +2,7 @@ import { redirect } from 'next/navigation' import { cookies } from 'next/headers' import { getIronSession } from 'iron-session' import { SessionData, sessionOptions } from '@/lib/session' +import { prisma } from '@/lib/prisma' import { NavBar } from '@/components/shared/nav-bar' import { MinWidthBanner } from '@/components/shared/min-width-banner' import { StatusBar } from '@/components/shared/status-bar' @@ -13,12 +14,18 @@ export default async function AppLayout({ children }: { children: React.ReactNod redirect('/login') } + const userRoles = await prisma.userRole.findMany({ + where: { user_id: session.userId }, + select: { role: true }, + }) + const roles = userRoles.map(r => r.role as string) + return (
Ga naar inhoud - +
{children} diff --git a/components/shared/nav-bar.tsx b/components/shared/nav-bar.tsx index c004ba4..7b35fcf 100644 --- a/components/shared/nav-bar.tsx +++ b/components/shared/nav-bar.tsx @@ -8,11 +8,18 @@ import { Badge } from '@/components/ui/badge' import { AppIcon } from '@/components/shared/app-icon' import { cn } from '@/lib/utils' -interface NavBarProps { - isDemo: boolean +const ROLE_LABELS: Record = { + PRODUCT_OWNER: 'PO', + SCRUM_MASTER: 'SM', + DEVELOPER: 'Dev', } -export function NavBar({ isDemo }: NavBarProps) { +interface NavBarProps { + isDemo: boolean + roles: string[] +} + +export function NavBar({ isDemo, roles }: NavBarProps) { const pathname = usePathname() const navLinks = [ @@ -51,8 +58,13 @@ export function NavBar({ isDemo }: NavBarProps) { ))} - {/* Rechts: instellingen + uitloggen */} + {/* Rechts: rollen + instellingen + uitloggen */}
+ {roles.length > 0 && ( + + {roles.map(r => ROLE_LABELS[r]).filter(Boolean).join(' ยท ')} + + )}