From 0595a2a5d9813cd9748508c561145bd22b08bc8f Mon Sep 17 00:00:00 2001 From: Madhura68 Date: Sat, 25 Apr 2026 20:09:42 +0200 Subject: [PATCH] feat(ST-506): toon gebruikersrollen in navigatiebalk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Haalt rollen op in AppLayout en geeft ze door aan NavBar. NavBar toont afkortingen (PO · SM · Dev) rechts van de navigatie. Co-Authored-By: Claude Sonnet 4.6 --- app/(app)/layout.tsx | 9 ++++++++- components/shared/nav-bar.tsx | 20 ++++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) 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(' · ')} + + )}