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')}
+
+ )}
)}
>