From 5db4cc21b591712ed1e2dbee2ad6e15c01b62ab6 Mon Sep 17 00:00:00 2001 From: Matthias Hochmeister Date: Wed, 25 Mar 2026 09:02:49 +0100 Subject: [PATCH] fix permissions --- frontend/src/components/shared/Sidebar.tsx | 2 +- frontend/src/pages/Ausruestungsanfrage.tsx | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/components/shared/Sidebar.tsx b/frontend/src/components/shared/Sidebar.tsx index b8bb7e1..61c4c31 100644 --- a/frontend/src/components/shared/Sidebar.tsx +++ b/frontend/src/components/shared/Sidebar.tsx @@ -190,7 +190,7 @@ function Sidebar({ mobileOpen, onMobileClose }: SidebarProps) { let ausruestungTabIdx = 0; if (hasPermission('ausruestungsanfrage:create_request')) { ausruestungSubItems.push({ text: 'Meine Anfragen', path: `/ausruestungsanfrage?tab=${ausruestungTabIdx}` }); ausruestungTabIdx++; } if (hasPermission('ausruestungsanfrage:approve')) { ausruestungSubItems.push({ text: 'Alle Anfragen', path: `/ausruestungsanfrage?tab=${ausruestungTabIdx}` }); ausruestungTabIdx++; } - ausruestungSubItems.push({ text: 'Katalog', path: `/ausruestungsanfrage?tab=${ausruestungTabIdx}` }); + if (hasPermission('ausruestungsanfrage:view')) { ausruestungSubItems.push({ text: 'Katalog', path: `/ausruestungsanfrage?tab=${ausruestungTabIdx}` }); ausruestungTabIdx++; } // Build Issues sub-items dynamically (tab order must match Issues.tsx) const issuesSubItems: SubItem[] = [ diff --git a/frontend/src/pages/Ausruestungsanfrage.tsx b/frontend/src/pages/Ausruestungsanfrage.tsx index e14a206..256ffa6 100644 --- a/frontend/src/pages/Ausruestungsanfrage.tsx +++ b/frontend/src/pages/Ausruestungsanfrage.tsx @@ -1450,7 +1450,7 @@ export default function Ausruestungsanfrage() { const canCreate = hasPermission('ausruestungsanfrage:create_request'); const canApprove = hasPermission('ausruestungsanfrage:approve'); - const tabCount = 1 + (canCreate ? 1 : 0) + (canApprove ? 1 : 0); + const tabCount = (canCreate ? 1 : 0) + (canApprove ? 1 : 0) + (canView ? 1 : 0); const [activeTab, setActiveTab] = useState(() => { const t = Number(searchParams.get('tab')); @@ -1473,11 +1473,11 @@ export default function Ausruestungsanfrage() { let next = 0; if (canCreate) { map.meine = next; next++; } if (canApprove) { map.alle = next; next++; } - map.katalog = next; + if (canView) { map.katalog = next; next++; } return map; - }, [canCreate, canApprove]); + }, [canCreate, canApprove, canView]); - if (!canView) { + if (!canView && !canCreate && !canApprove) { return ( Keine Berechtigung. @@ -1493,13 +1493,13 @@ export default function Ausruestungsanfrage() { {canCreate && } {canApprove && } - + {canView && } {canCreate && activeTab === tabIndex.meine && } {canApprove && activeTab === tabIndex.alle && } - {activeTab === tabIndex.katalog && } + {canView && activeTab === tabIndex.katalog && } ); }