diff --git a/web/frontend/src/components/modal/RedirectToModal.tsx b/web/frontend/src/components/modal/RedirectToModal.tsx index 88fca6b19..29ab8b1f4 100644 --- a/web/frontend/src/components/modal/RedirectToModal.tsx +++ b/web/frontend/src/components/modal/RedirectToModal.tsx @@ -9,6 +9,7 @@ type RedirectToModalProps = { children: string; buttonRightText: string; navigateDestination?: To | number; + needsReload?: boolean; }; const RedirectToModal: FC = ({ @@ -18,12 +19,17 @@ const RedirectToModal: FC = ({ children, buttonRightText, navigateDestination, + needsReload = false, }) => { const navigate = useNavigate(); const closeModal = () => { if (navigateDestination) { navigate(navigateDestination as To); + if (needsReload) { + // reload the page to update the locally cached permissions + window.location.reload(); + } } setShowModal(false); }; diff --git a/web/frontend/src/pages/form/components/ActionButtons/CancelButton.tsx b/web/frontend/src/pages/form/components/ActionButtons/CancelButton.tsx index 7d81b1077..820028bc3 100644 --- a/web/frontend/src/pages/form/components/ActionButtons/CancelButton.tsx +++ b/web/frontend/src/pages/form/components/ActionButtons/CancelButton.tsx @@ -4,14 +4,14 @@ import { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { OngoingAction, Status } from 'types/form'; import ActionButton from './ActionButton'; -const SUBJECT_ELECTION = 'election'; -const ACTION_CREATE = 'create'; -const CancelButton = ({ status, handleCancel, ongoingAction }) => { - const authCtx = useContext(AuthContext); +import { isManager } from './utils'; + +const CancelButton = ({ status, handleCancel, ongoingAction, formID }) => { + const { authorization, isLogged } = useContext(AuthContext); const { t } = useTranslation(); return ( - authCtx.isAllowed(SUBJECT_ELECTION, ACTION_CREATE) && + isManager(formID, authorization, isLogged) && status === Status.Open && ( { - const authCtx = useContext(AuthContext); +const CloseButton = ({ status, handleClose, ongoingAction, formID }) => { + const { authorization, isLogged } = useContext(AuthContext); const { t } = useTranslation(); return ( - authCtx.isAllowed(SUBJECT_ELECTION, ACTION_CREATE) && + isManager(formID, authorization, isLogged) && status === Status.Open && ( { - const authCtx = useContext(AuthContext); +const CombineButton = ({ status, handleCombine, ongoingAction, formID }) => { const { t } = useTranslation(); + const { authorization, isLogged } = useContext(AuthContext); return ( - authCtx.isAllowed(SUBJECT_ELECTION, ACTION_CREATE) && + isManager(formID, authorization, isLogged) && status === Status.PubSharesSubmitted && ( { - const authCtx = useContext(AuthContext); +const DecryptButton = ({ status, handleDecrypt, ongoingAction, formID }) => { + const { authorization, isLogged } = useContext(AuthContext); const { t } = useTranslation(); return ( - authCtx.isAllowed(SUBJECT_ELECTION, ACTION_CREATE) && + isManager(formID, authorization, isLogged) && status === Status.ShuffledBallots && ( { - const authCtx = useContext(AuthContext); +const DeleteButton = ({ handleDelete, formID }) => { const { t } = useTranslation(); + const { authorization, isLogged } = useContext(AuthContext); return ( - authCtx.isAllowed(SUBJECT_ELECTION, ACTION_CREATE) && ( + isManager(formID, authorization, isLogged) && (