diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index f6b6436f17..91e99f6ff4 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -4,12 +4,14 @@ import { useTranslation } from 'react-i18next' import { useSelector, useDispatch } from 'react-redux' import { useLocation, useHistory } from 'react-router-dom' +import Permissions from '../model/Permissions' import { RootState } from '../store' import { updateSidebar } from './component-slice' const Sidebar = () => { const dispatch = useDispatch() const { sidebarCollapsed } = useSelector((state: RootState) => state.components) + const permissions = useSelector((state: RootState) => state.user.permissions) const { t } = useTranslation() const path = useLocation() @@ -118,24 +120,28 @@ const Sidebar = () => { {splittedPath[1].includes('patient') && expandedItem === 'patient' && ( - navigateTo('/patients/new')} - active={splittedPath[1].includes('patients') && splittedPath.length > 2} - > - - {!sidebarCollapsed && t('patients.newPatient')} - - navigateTo('/patients')} - active={splittedPath[1].includes('patients') && splittedPath.length < 3} - > - - {!sidebarCollapsed && t('patients.patientsList')} - + {permissions.includes(Permissions.WritePatients) && ( + navigateTo('/patients/new')} + active={splittedPath[1].includes('patients') && splittedPath.length > 2} + > + + {!sidebarCollapsed && t('patients.newPatient')} + + )} + {permissions.includes(Permissions.ReadPatients) && ( + navigateTo('/patients')} + active={splittedPath[1].includes('patients') && splittedPath.length < 3} + > + + {!sidebarCollapsed && t('patients.patientsList')} + + )} )} @@ -164,24 +170,28 @@ const Sidebar = () => { {splittedPath[1].includes('appointment') && expandedItem === 'appointment' && ( - navigateTo('/appointments/new')} - active={splittedPath[1].includes('appointments') && splittedPath.length > 2} - > - - {!sidebarCollapsed && t('scheduling.appointments.new')} - - navigateTo('/appointments')} - active={splittedPath[1].includes('appointments') && splittedPath.length < 3} - > - - {!sidebarCollapsed && t('scheduling.appointments.schedule')} - + {permissions.includes(Permissions.WriteAppointments) && ( + navigateTo('/appointments/new')} + active={splittedPath[1].includes('appointments') && splittedPath.length > 2} + > + + {!sidebarCollapsed && t('scheduling.appointments.new')} + + )} + {permissions.includes(Permissions.ReadAppointments) && ( + navigateTo('/appointments')} + active={splittedPath[1].includes('appointments') && splittedPath.length < 3} + > + + {!sidebarCollapsed && t('scheduling.appointments.schedule')} + + )} )} @@ -210,24 +220,28 @@ const Sidebar = () => { {splittedPath[1].includes('labs') && expandedItem === 'labs' && ( - navigateTo('/labs/new')} - active={splittedPath[1].includes('labs') && splittedPath.length > 2} - > - - {!sidebarCollapsed && t('labs.requests.new')} - - navigateTo('/labs')} - active={splittedPath[1].includes('labs') && splittedPath.length < 3} - > - - {!sidebarCollapsed && t('labs.requests.label')} - + {permissions.includes(Permissions.RequestLab) && ( + navigateTo('/labs/new')} + active={splittedPath[1].includes('labs') && splittedPath.length > 2} + > + + {!sidebarCollapsed && t('labs.requests.new')} + + )} + {permissions.includes(Permissions.ViewLabs) && ( + navigateTo('/labs')} + active={splittedPath[1].includes('labs') && splittedPath.length < 3} + > + + {!sidebarCollapsed && t('labs.requests.label')} + + )} )} @@ -256,24 +270,28 @@ const Sidebar = () => { {splittedPath[1].includes('incidents') && expandedItem === 'incidents' && ( - navigateTo('/incidents/new')} - active={splittedPath[1].includes('incidents') && splittedPath.length > 2} - > - - {!sidebarCollapsed && t('incidents.reports.new')} - - navigateTo('/incidents')} - active={splittedPath[1].includes('incidents') && splittedPath.length < 3} - > - - {!sidebarCollapsed && t('incidents.reports.label')} - + {permissions.includes(Permissions.ReportIncident) && ( + navigateTo('/incidents/new')} + active={splittedPath[1].includes('incidents') && splittedPath.length > 2} + > + + {!sidebarCollapsed && t('incidents.reports.new')} + + )} + {permissions.includes(Permissions.ViewIncidents) && ( + navigateTo('/incidents')} + active={splittedPath[1].includes('incidents') && splittedPath.length < 3} + > + + {!sidebarCollapsed && t('incidents.reports.label')} + + )} )}