import { Navigate, Outlet } from 'react-router' import type { WorkspaceType } from '../../domain/enums' import { useSessionStore } from '../../stores/sessionStore' import { SessionStatus } from '../../stores/sessionStore' import { canAccessWorkspace } from '../../lib/permissions' import { AccessDenied } from './AccessDenied' import { SessionExpired } from './SessionExpired' interface ProtectedRouteProps { workspace?: WorkspaceType } export function ProtectedRoute({ workspace }: ProtectedRouteProps) { const { isAuthenticated, currentUser, sessionStatus } = useSessionStore() if (!isAuthenticated || sessionStatus === SessionStatus.UNAUTHENTICATED) { return } if (sessionStatus === SessionStatus.EXPIRED) { return } if (workspace && currentUser && !canAccessWorkspace(currentUser, workspace)) { const workspaceLabel: Record = { SUPPLY: 'Supply', DEMAND: 'Demand', OPERATIONS: 'Operations', } return ( ) } return }