From 72b15d71baf18ea9b71ad6993f5239b2a7cea4e9 Mon Sep 17 00:00:00 2001 From: Sachin Chaurasiya Date: Thu, 8 Sep 2022 15:02:15 +0530 Subject: [PATCH] UI : Permission fix for create operation (#7324) --- .../Ingestion/Ingestion.component.tsx | 7 +- .../AddGlossary/AddGlossaryPage.component.tsx | 19 ++++-- .../AddGlossaryTermPage.component.tsx | 23 +++++-- .../AddWebhookPage.component.tsx | 19 ++++-- .../EditWebhookPage.component.tsx | 25 +++++-- .../ui/src/router/AuthenticatedAppRouter.tsx | 65 ++----------------- 6 files changed, 71 insertions(+), 87 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Ingestion/Ingestion.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Ingestion/Ingestion.component.tsx index a5d3e9920e3..03852a0bb35 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Ingestion/Ingestion.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Ingestion/Ingestion.component.tsx @@ -19,7 +19,6 @@ import cronstrue from 'cronstrue'; import { capitalize, isNil, lowerCase, startCase } from 'lodash'; import React, { Fragment, useCallback, useState } from 'react'; import { Link, useHistory } from 'react-router-dom'; -import { useAuthContext } from '../../authentication/auth-provider/AuthProvider'; import { PAGE_SIZE } from '../../constants/constants'; import { NO_PERMISSION_TO_VIEW } from '../../constants/HelperTextUtil'; import { Connection } from '../../generated/entity/services/databaseService'; @@ -27,7 +26,6 @@ import { IngestionPipeline, PipelineType, } from '../../generated/entity/services/ingestionPipelines/ingestionPipeline'; -import { useAuth } from '../../hooks/authHooks'; import { isEven } from '../../utils/CommonUtils'; import { getAddIngestionPath, @@ -64,8 +62,7 @@ const Ingestion: React.FC = ({ permissions, }: IngestionProps) => { const history = useHistory(); - const { isAdminUser } = useAuth(); - const { isAuthDisabled } = useAuthContext(); + const [searchText, setSearchText] = useState(''); const [showActions, setShowActions] = useState(false); const [currTriggerId, setCurrTriggerId] = useState({ id: '', state: '' }); @@ -419,7 +416,7 @@ const Ingestion: React.FC = ({
{isRequiredDetailsAvailable && - (isAdminUser || isAuthDisabled) && + permissions.EditAll && getAddIngestionElement()}
diff --git a/openmetadata-ui/src/main/resources/ui/src/pages/AddGlossary/AddGlossaryPage.component.tsx b/openmetadata-ui/src/main/resources/ui/src/pages/AddGlossary/AddGlossaryPage.component.tsx index ec1741d7dbd..5a115b3f380 100644 --- a/openmetadata-ui/src/main/resources/ui/src/pages/AddGlossary/AddGlossaryPage.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/pages/AddGlossary/AddGlossaryPage.component.tsx @@ -1,23 +1,24 @@ import { AxiosError } from 'axios'; import { LoadingState } from 'Models'; -import React, { FunctionComponent, useEffect, useState } from 'react'; +import React, { FunctionComponent, useEffect, useMemo, useState } from 'react'; import { useHistory } from 'react-router-dom'; -import { useAuthContext } from '../../authentication/auth-provider/AuthProvider'; import { addGlossaries } from '../../axiosAPIs/glossaryAPI'; import AddGlossary from '../../components/AddGlossary/AddGlossary.component'; import { TitleBreadcrumbProps } from '../../components/common/title-breadcrumb/title-breadcrumb.interface'; import PageContainerV1 from '../../components/containers/PageContainerV1'; +import { usePermissionProvider } from '../../components/PermissionProvider/PermissionProvider'; +import { ResourceEntity } from '../../components/PermissionProvider/PermissionProvider.interface'; import { CreateGlossary } from '../../generated/api/data/createGlossary'; -import { useAuth } from '../../hooks/authHooks'; +import { Operation } from '../../generated/entity/policies/policy'; import jsonData from '../../jsons/en'; +import { checkPermission } from '../../utils/PermissionsUtils'; import { getGlossaryPath } from '../../utils/RouterUtils'; import { getTagCategories, getTaglist } from '../../utils/TagsUtils'; import { showErrorToast } from '../../utils/ToastUtils'; const AddGlossaryPage: FunctionComponent = () => { - const { isAdminUser } = useAuth(); - const { isAuthDisabled } = useAuthContext(); const history = useHistory(); + const { permissions } = usePermissionProvider(); const [tagList, setTagList] = useState>([]); const [isTagLoading, setIsTagLoading] = useState(false); const [status, setStatus] = useState('initial'); @@ -25,6 +26,12 @@ const AddGlossaryPage: FunctionComponent = () => { TitleBreadcrumbProps['titleLinks'] >([]); + const createPermission = useMemo( + () => + checkPermission(Operation.Create, ResourceEntity.GLOSSARY, permissions), + [permissions] + ); + const goToGlossary = (name = '') => { history.push(getGlossaryPath(name)); }; @@ -101,7 +108,7 @@ const AddGlossaryPage: FunctionComponent = () => {
{ const { glossaryName, glossaryTermsFQN } = useParams<{ [key: string]: string }>(); const history = useHistory(); - const { isAdminUser } = useAuth(); - const { isAuthDisabled } = useAuthContext(); + const { permissions } = usePermissionProvider(); const [status, setStatus] = useState('initial'); const [isLoading, setIsLoading] = useState(true); const [glossaryData, setGlossaryData] = useState(); @@ -49,6 +50,16 @@ const AddGlossaryTermPage = () => { const [parentGlossaryData, setParentGlossaryData] = useState(); + const createPermission = useMemo( + () => + checkPermission( + Operation.Create, + ResourceEntity.GLOSSARY_TERM, + permissions + ), + [permissions] + ); + const goToGlossaryPath = (path: string) => { history.push(path); }; @@ -198,7 +209,7 @@ const AddGlossaryTermPage = () => { ) : (
{ - const { isAdminUser } = useAuth(); - const { isAuthDisabled } = useAuthContext(); const history = useHistory(); const params = useParams<{ webhookType?: WebhookType }>(); + const { permissions } = usePermissionProvider(); const webhookType: WebhookType = params.webhookType ?? WebhookType.Generic; const [status, setStatus] = useState('initial'); + const createPermission = useMemo( + () => + checkPermission(Operation.Create, ResourceEntity.WEBHOOK, permissions), + [permissions] + ); + const goToWebhooks = () => { switch (webhookType) { case WebhookType.Slack: { @@ -111,7 +118,7 @@ const AddWebhookPage: FunctionComponent = () => {
{ const { webhookName } = useParams<{ [key: string]: string }>(); - const { isAdminUser } = useAuth(); - const { isAuthDisabled } = useAuthContext(); const history = useHistory(); + const { permissions } = usePermissionProvider(); const [isLoading, setIsLoading] = useState(true); const [webhookData, setWebhookData] = useState(); const [status, setStatus] = useState('initial'); const [deleteStatus, setDeleteStatus] = useState('initial'); + const createPermission = useMemo( + () => + checkPermission(Operation.Create, ResourceEntity.WEBHOOK, permissions), + [permissions] + ); + + const editPermission = useMemo( + () => + checkPermission(Operation.EditAll, ResourceEntity.WEBHOOK, permissions), + [permissions] + ); + const fetchWebhook = () => { setIsLoading(true); getWebhookByName(webhookName) @@ -143,7 +156,7 @@ const EditWebhookPage: FunctionComponent = () => {
{!isLoading ? ( { component={MlModelPage} path={ROUTES.MLMODEL_DETAILS_WITH_TAB} /> - - + - - - + { )} path={ROUTES.ADD_POLICY} /> - - + +