From 2f6c6486e0c48a0b5c15066273ba6db01422dcd2 Mon Sep 17 00:00:00 2001 From: Carine Dengler Date: Tue, 13 Feb 2024 17:23:10 +0100 Subject: [PATCH] refactor: move auth tools to separate location at root --- .../form/components/ActionButtons/AddVotersButton.tsx | 2 +- .../form/components/ActionButtons/CancelButton.tsx | 2 +- .../form/components/ActionButtons/CloseButton.tsx | 2 +- .../form/components/ActionButtons/CombineButton.tsx | 2 +- .../form/components/ActionButtons/DecryptButton.tsx | 2 +- .../form/components/ActionButtons/DeleteButton.tsx | 2 +- .../form/components/ActionButtons/InitializeButton.tsx | 2 +- .../pages/form/components/ActionButtons/OpenButton.tsx | 2 +- .../form/components/ActionButtons/SetupButton.tsx | 2 +- .../form/components/ActionButtons/ShuffleButton.tsx | 2 +- .../ActionButtons/utils.tsx => utils/auth.ts} | 10 +++++++++- 11 files changed, 19 insertions(+), 11 deletions(-) rename web/frontend/src/{pages/form/components/ActionButtons/utils.tsx => utils/auth.ts} (54%) diff --git a/web/frontend/src/pages/form/components/ActionButtons/AddVotersButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/AddVotersButton.tsx index e4a1e78b0..72e22f4a1 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/AddVotersButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/AddVotersButton.tsx @@ -1,6 +1,6 @@ import { DocumentAddIcon } from '@heroicons/react/outline'; import { useTranslation } from 'react-i18next'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; import { AuthContext } from 'index'; import { useContext } from 'react'; diff --git a/web/frontend/src/pages/form/components/ActionButtons/CancelButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/CancelButton.tsx index 820028bc3..41f2bbece 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/CancelButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/CancelButton.tsx @@ -4,7 +4,7 @@ import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { OngoingAction, Status } from 'types/form'; import ActionButton from './ActionButton'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; const CancelButton = ({ status, handleCancel, ongoingAction, formID }) => { const { authorization, isLogged } = useContext(AuthContext); diff --git a/web/frontend/src/pages/form/components/ActionButtons/CloseButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/CloseButton.tsx index 916f5af71..4259a016a 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/CloseButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/CloseButton.tsx @@ -4,7 +4,7 @@ import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { OngoingAction, Status } from 'types/form'; import ActionButton from './ActionButton'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; const CloseButton = ({ status, handleClose, ongoingAction, formID }) => { const { authorization, isLogged } = useContext(AuthContext); diff --git a/web/frontend/src/pages/form/components/ActionButtons/CombineButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/CombineButton.tsx index e4a2f7258..7dc5e651d 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/CombineButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/CombineButton.tsx @@ -4,7 +4,7 @@ import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { OngoingAction, Status } from 'types/form'; import ActionButton from './ActionButton'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; const CombineButton = ({ status, handleCombine, ongoingAction, formID }) => { const { t } = useTranslation(); diff --git a/web/frontend/src/pages/form/components/ActionButtons/DecryptButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/DecryptButton.tsx index 65242a181..328a6978e 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/DecryptButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/DecryptButton.tsx @@ -4,7 +4,7 @@ import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { OngoingAction, Status } from 'types/form'; import ActionButton from './ActionButton'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; const DecryptButton = ({ status, handleDecrypt, ongoingAction, formID }) => { const { authorization, isLogged } = useContext(AuthContext); diff --git a/web/frontend/src/pages/form/components/ActionButtons/DeleteButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/DeleteButton.tsx index 937d868d8..fd7712310 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/DeleteButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/DeleteButton.tsx @@ -2,7 +2,7 @@ import { TrashIcon } from '@heroicons/react/outline'; import { AuthContext } from 'index'; import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; const DeleteButton = ({ handleDelete, formID }) => { const { t } = useTranslation(); diff --git a/web/frontend/src/pages/form/components/ActionButtons/InitializeButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/InitializeButton.tsx index 7def2696a..9cb4c5281 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/InitializeButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/InitializeButton.tsx @@ -4,7 +4,7 @@ import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { OngoingAction, Status } from 'types/form'; import ActionButton from './ActionButton'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; const InitializeButton = ({ status, handleInitialize, ongoingAction, formID }) => { const { authorization, isLogged } = useContext(AuthContext); diff --git a/web/frontend/src/pages/form/components/ActionButtons/OpenButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/OpenButton.tsx index 77a1b282b..80a48a70d 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/OpenButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/OpenButton.tsx @@ -4,7 +4,7 @@ import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { OngoingAction, Status } from 'types/form'; import ActionButton from './ActionButton'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; const OpenButton = ({ status, handleOpen, ongoingAction, formID }) => { const { t } = useTranslation(); diff --git a/web/frontend/src/pages/form/components/ActionButtons/SetupButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/SetupButton.tsx index 09d6c8e48..f1848c94c 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/SetupButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/SetupButton.tsx @@ -4,7 +4,7 @@ import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { OngoingAction, Status } from 'types/form'; import ActionButton from './ActionButton'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; const SetupButton = ({ status, handleSetup, ongoingAction, formID }) => { const { t } = useTranslation(); diff --git a/web/frontend/src/pages/form/components/ActionButtons/ShuffleButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/ShuffleButton.tsx index 4c537a78f..178b67896 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/ShuffleButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/ShuffleButton.tsx @@ -4,7 +4,7 @@ import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { OngoingAction, Status } from 'types/form'; import ActionButton from './ActionButton'; -import { isManager } from './utils'; +import { isManager } from './../../../../utils/auth'; const ShuffleButton = ({ status, handleShuffle, ongoingAction, formID }) => { const { t } = useTranslation(); diff --git a/web/frontend/src/pages/form/components/ActionButtons/utils.tsx b/web/frontend/src/utils/auth.ts similarity index 54% rename from web/frontend/src/pages/form/components/ActionButtons/utils.tsx rename to web/frontend/src/utils/auth.ts index 278336233..c05b218fa 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/utils.tsx +++ b/web/frontend/src/utils/auth.ts @@ -1,4 +1,4 @@ -import { ID } from './../../../../types/configuration'; +import { ID } from './../types/configuration'; export function isManager(formID: ID, authorization: Map, isLogged: boolean) { return ( @@ -9,3 +9,11 @@ export function isManager(formID: ID, authorization: Map, isLo authorization.get(formID).includes('own') // must own the election ); } + +export function isVoter(formID: ID, authorization: Map, isLogged: boolean) { + return ( + isLogged && // must be logged in + authorization.has(formID) && + authorization.get(formID).includes('vote') // must be able to vote in the election + ); +}