{description}
} {children} diff --git a/web_client/src/components/common/MinMaxInput/index.stories.tsx b/web_client/src/components/common/MinMaxInput/index.stories.tsx index 88a92ef4..f24de72c 100644 --- a/web_client/src/components/common/MinMaxInput/index.stories.tsx +++ b/web_client/src/components/common/MinMaxInput/index.stories.tsx @@ -1,5 +1,5 @@ -import { useState } from 'react'; import type { Meta, StoryObj } from '@storybook/react-vite'; +import { useState } from 'react'; import MinMaxInput from '.'; diff --git a/web_client/src/components/common/ProtectedRoute.tsx b/web_client/src/components/common/ProtectedRoute.tsx index 1ca17eac..eb7265ca 100644 --- a/web_client/src/components/common/ProtectedRoute.tsx +++ b/web_client/src/components/common/ProtectedRoute.tsx @@ -2,6 +2,8 @@ import type React from 'react'; import { validateMakerPassword, validateMasterPassword } from '../../api/options'; import { useAuth } from '../../providers/AuthProvider'; import { useConfig } from '../../providers/ConfigProvider'; +import { useWaiter } from '../../providers/WaiterProvider'; +import type { Waiter } from '../../types/models'; import PasswordPage from './PasswordPage'; interface ProtectedRouteProps { @@ -31,14 +33,36 @@ interface MakerPasswordProtectedProps { tabNumber: number; } +const waiterHasPermissionForTab = (waiter: Waiter | null | undefined, tabNumber: number): boolean => { + if (!waiter) { + return false; + } + + const permissionByTab: Record{t('waiter.noWaiters')}
} + {waiters?.map((waiter) => { + const isActive = currentWaiter?.nfc_id === waiter.nfc_id; + const isEditing = editingWaiter === waiter.nfc_id; + + if (isEditing) { + return ( +{t('waiter.permissionsLabel')}
+