From 1c86dbf20a616f78d2209ad879c17510765372c8 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Fri, 20 May 2022 19:22:16 -0700 Subject: Fix admin permissions --- modern/src/common/util/permissions.js | 36 ++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) (limited to 'modern/src') diff --git a/modern/src/common/util/permissions.js b/modern/src/common/util/permissions.js index 27a9ba4f..fa87b97d 100644 --- a/modern/src/common/util/permissions.js +++ b/modern/src/common/util/permissions.js @@ -1,13 +1,35 @@ import { useSelector } from 'react-redux'; -export const useAdministrator = () => useSelector((state) => state.session.user?.administrator); +export const useAdministrator = () => useSelector((state) => { + const admin = state.session.user?.administrator; + return admin; +}); -export const useManager = () => useSelector((state) => state.session.user?.administrator || (state.session.user?.userLimit || 0) > 0); +export const useManager = () => useSelector((state) => { + const admin = state.session.user?.administrator; + const manager = (state.session.user?.userLimit || 0) > 0 + return admin || manager; +}); -export const useReadonly = () => useSelector((state) => state.session.server?.readonly || state.session.user?.readonly); +export const useReadonly = () => useSelector((state) => { + const admin = state.session.user?.administrator; + const serverReadonly = state.session.server?.readonly; + const userReadonly = state.session.user?.readonly; + return !admin && (serverReadonly || userReadonly); +}); -export const useDeviceReadonly = () => useSelector((state) => state.session.server?.readonly || state.session.user?.readonly - || state.session.server?.deviceReadonly || state.session.user?.deviceReadonly); +export const useDeviceReadonly = () => useSelector((state) => { + const admin = state.session.user?.administrator; + const serverReadonly = state.session.server?.readonly; + const userReadonly = state.session.user?.readonly; + const serverDeviceReadonly = state.session.server?.deviceReadonly; + const userDeviceReadonly = state.session.user?.deviceReadonly; + return !admin && (serverReadonly || userReadonly || serverDeviceReadonly || userDeviceReadonly); +}); -export const useEditable = () => useSelector((state) => state.session.user?.administrator - || (!state.session.server?.readonly && !state.session.user?.readonly)); +export const useEditable = () => useSelector((state) => { + const admin = state.session.user?.administrator; + const serverReadonly = state.session.server?.readonly; + const userReadonly = state.session.user?.readonly; + return admin || (!serverReadonly && !userReadonly); +}); -- cgit v1.2.3