diff options
author | Anton Tananaev <anton@traccar.org> | 2022-05-20 19:22:16 -0700 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2022-05-20 19:22:16 -0700 |
commit | 1c86dbf20a616f78d2209ad879c17510765372c8 (patch) | |
tree | 48a9df4f317fc009a3b097a68cd17b42a819e649 | |
parent | f4bafd1ea69336e00703411971b51d7e9a087d19 (diff) | |
download | trackermap-web-1c86dbf20a616f78d2209ad879c17510765372c8.tar.gz trackermap-web-1c86dbf20a616f78d2209ad879c17510765372c8.tar.bz2 trackermap-web-1c86dbf20a616f78d2209ad879c17510765372c8.zip |
Fix admin permissions
-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); +}); |