diff --git a/src/App.jsx b/src/App.jsx index eaa0187..2ae6755 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -14,6 +14,8 @@ import LegalPage from './pages/LegalPage' import AssignProjectPage from './pages/AssignProjectPage' import ServicesPage from './pages/ServicesPage' import ServerpulsPage from './pages/ServerpulsPage' +import BankCallbackPage from './pages/BankCallbackPage' +import AdminRoute from './components/AdminRoute' import { safeReturnPath } from './lib/returnPath' function ProtectedRoute({ children }) { @@ -48,7 +50,9 @@ function AppRoutes() { } /> } /> } /> - } /> + {/* Finanzen: nur Admins, alle anderen gehen zu /tickets */} + } /> + } /> } /> } /> } /> diff --git a/src/components/AdminRoute.jsx b/src/components/AdminRoute.jsx new file mode 100644 index 0000000..8015120 --- /dev/null +++ b/src/components/AdminRoute.jsx @@ -0,0 +1,20 @@ +import { Navigate } from 'react-router-dom' +import { useAuth } from '../context/AuthContext' + +// Nur fuer Admins; wird innerhalb von ProtectedRoute verwendet. Alle anderen landen bei den Tickets. +export default function AdminRoute({ children }) { + const { loading, isAdmin } = useAuth() + + if (loading) { + return ( +
+
+

Loading...

+
+ ) + } + + if (!isAdmin) return + + return children +} diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx index 74dccce..b30360d 100644 --- a/src/components/Navbar.jsx +++ b/src/components/Navbar.jsx @@ -61,7 +61,7 @@ export default function Sidebar() { { label: 'Kunden', href: '/customers', icon: }, // Leads liegen auf Eis (Lead-Automatik gestoppt 2026-09-30): grau, nicht klickbar { label: 'Leads', href: '/leads', icon: , paused: true }, - { label: 'Finanzen', href: '/finance', icon: }, + ...(isAdmin ? [{ label: 'Finanzen', href: '/finance', also: '/finanzen', icon: }] : []), { label: 'Rechtliches', href: '/rechtliches', icon: }, ...(isAdmin ? [{ label: 'Serverpuls', href: '/serverpuls', icon: , dot: pulseLevel }] : []), ...(isAdmin ? [{ label: 'Admin', href: '/admin', icon: }] : []), @@ -69,6 +69,8 @@ export default function Sidebar() { const isActive = (href) => location.pathname === href || location.pathname.startsWith(href + '/') + // Finanzen bleibt auch auf der Rueckkehrseite der Bankfreigabe (/finanzen/...) markiert + const isLinkActive = (link) => isActive(link.href) || (link.also ? isActive(link.also) : false) return (