diff --git a/ui/src/app/metadata/domain/source/component/DeleteSourceConfirmation.js b/ui/src/app/metadata/domain/source/component/DeleteSourceConfirmation.js index f2d992a5d..482e92937 100644 --- a/ui/src/app/metadata/domain/source/component/DeleteSourceConfirmation.js +++ b/ui/src/app/metadata/domain/source/component/DeleteSourceConfirmation.js @@ -9,6 +9,8 @@ import { useMetadataEntity } from '../../../hooks/api'; import Translate from '../../../../i18n/components/translate'; import { noop } from 'lodash'; +import { useIsAdmin } from '../../../../core/user/UserContext'; + export function DeleteSourceConfirmation ({children}) { const { del, response } = useMetadataEntity('source'); @@ -34,9 +36,11 @@ export function DeleteSourceConfirmation ({children}) { } } + const isAdmin = useIsAdmin(); + return ( <> - {children(onDeleteSource)} + {children(isAdmin ? onDeleteSource : false)} setDeleting(null)}> Delete Metadata Source? diff --git a/ui/src/app/metadata/domain/source/component/SourceList.js b/ui/src/app/metadata/domain/source/component/SourceList.js index 126635c9a..94d05828a 100644 --- a/ui/src/app/metadata/domain/source/component/SourceList.js +++ b/ui/src/app/metadata/domain/source/component/SourceList.js @@ -33,7 +33,7 @@ export default function SourceList({ entities, onDelete, onEnable }) { Author Created Date Enabled - + {onDeleteSource && } @@ -66,7 +66,7 @@ export default function SourceList({ entities, onDelete, onEnable }) { - + {onDeleteSource && @@ -83,8 +83,7 @@ export default function SourceList({ entities, onDelete, onEnable }) { - - + } )} diff --git a/ui/src/app/metadata/hooks/schema.js b/ui/src/app/metadata/hooks/schema.js index cd8ba54da..2aeb62c4f 100644 --- a/ui/src/app/metadata/hooks/schema.js +++ b/ui/src/app/metadata/hooks/schema.js @@ -1,4 +1,5 @@ import React from 'react'; +import { useIsAdmin } from '../../core/user/UserContext'; const fillInRootProperties = (keys, ui) => { return keys.reduce((sch, key, idx) => { @@ -34,7 +35,21 @@ export function useUiSchema(definition, schema, current, locked = true) { }; }, [mapped, step.locked, locked]); - return {uiSchema: isLocked, step}; + const isAdmin = useIsAdmin(); + + const hideEnableFromNonAdmins = React.useMemo(() => { + if (!isAdmin) { + return { + ...isLocked, + serviceEnabled: { + 'ui:widget': 'hidden' + } + }; + } + return isLocked; + }, [isAdmin, isLocked]); + + return { uiSchema: hideEnableFromNonAdmins, step}; } diff --git a/ui/src/app/metadata/view/MetadataOptions.js b/ui/src/app/metadata/view/MetadataOptions.js index d98cb8271..91121c7f6 100644 --- a/ui/src/app/metadata/view/MetadataOptions.js +++ b/ui/src/app/metadata/view/MetadataOptions.js @@ -58,7 +58,7 @@ export function MetadataOptions () { current={true} enabled={type === 'source' ? metadata.serviceEnabled : metadata.enabled} model={metadata}> - {type === 'source' && + {type === 'source' && onDeleteSource &&