From 82ee592699428f33fe816c92fdc3349f345c7d58 Mon Sep 17 00:00:00 2001 From: "kasia.oczkowska" Date: Thu, 4 Jul 2024 08:57:03 +0100 Subject: [PATCH] feat: block access to flow creation for users without permissions --- packages/web/src/components/NoResultFound/index.jsx | 4 +++- packages/web/src/pages/Editor/create.jsx | 10 ++++++++-- packages/web/src/pages/Flows/index.jsx | 6 +++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/packages/web/src/components/NoResultFound/index.jsx b/packages/web/src/components/NoResultFound/index.jsx index ecee7a50..c2c47fa1 100644 --- a/packages/web/src/components/NoResultFound/index.jsx +++ b/packages/web/src/components/NoResultFound/index.jsx @@ -5,8 +5,10 @@ import AddCircleIcon from '@mui/icons-material/AddCircle'; import CardActionArea from '@mui/material/CardActionArea'; import Typography from '@mui/material/Typography'; import { CardContent } from './style'; + export default function NoResultFound(props) { const { text, to } = props; + const ActionAreaLink = React.useMemo( () => React.forwardRef(function InlineLink(linkProps, ref) { @@ -15,12 +17,12 @@ export default function NoResultFound(props) { }), [to], ); + return ( {!!to && } - {text} diff --git a/packages/web/src/pages/Editor/create.jsx b/packages/web/src/pages/Editor/create.jsx index 06eeccb6..ea33943d 100644 --- a/packages/web/src/pages/Editor/create.jsx +++ b/packages/web/src/pages/Editor/create.jsx @@ -7,13 +7,15 @@ import * as URLS from 'config/urls'; import useFormatMessage from 'hooks/useFormatMessage'; import { CREATE_FLOW } from 'graphql/mutations/create-flow'; import Box from '@mui/material/Box'; + export default function CreateFlow() { const [searchParams] = useSearchParams(); const navigate = useNavigate(); const formatMessage = useFormatMessage(); - const [createFlow] = useMutation(CREATE_FLOW); + const [createFlow, { error }] = useMutation(CREATE_FLOW); const appKey = searchParams.get('appKey'); const connectionId = searchParams.get('connectionId'); + React.useEffect(() => { async function initiate() { const variables = {}; @@ -33,6 +35,11 @@ export default function CreateFlow() { } initiate(); }, [createFlow, navigate, appKey, connectionId]); + + if (error) { + return null; + } + return ( - {formatMessage('createFlow.creating')} diff --git a/packages/web/src/pages/Flows/index.jsx b/packages/web/src/pages/Flows/index.jsx index 22544394..d8486361 100644 --- a/packages/web/src/pages/Flows/index.jsx +++ b/packages/web/src/pages/Flows/index.jsx @@ -17,6 +17,7 @@ import Container from 'components/Container'; import PageTitle from 'components/PageTitle'; import SearchInput from 'components/SearchInput'; import useFormatMessage from 'hooks/useFormatMessage'; +import useCurrentUserAbility from 'hooks/useCurrentUserAbility'; import * as URLS from 'config/urls'; import useLazyFlows from 'hooks/useLazyFlows'; @@ -26,6 +27,7 @@ export default function Flows() { const page = parseInt(searchParams.get('page') || '', 10) || 1; const [flowName, setFlowName] = React.useState(''); const [isLoading, setIsLoading] = React.useState(false); + const currentUserAbility = useCurrentUserAbility(); const { data, mutate: fetchFlows } = useLazyFlows( { flowName, page }, @@ -124,7 +126,9 @@ export default function Flows() { {!isLoading && !hasFlows && ( )} {!isLoading && pageInfo && pageInfo.totalPages > 1 && (