diff options
Diffstat (limited to 'modern/src/common/util')
-rw-r--r-- | modern/src/common/util/permissions.js | 36 |
1 files changed, 29 insertions, 7 deletions
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); +}); |