diff --git a/app/client/src/pages/Editor/DataSourceEditor/DBForm.tsx b/app/client/src/pages/Editor/DataSourceEditor/DBForm.tsx index 294dd5ade2..3dc5232a8e 100644 --- a/app/client/src/pages/Editor/DataSourceEditor/DBForm.tsx +++ b/app/client/src/pages/Editor/DataSourceEditor/DBForm.tsx @@ -123,6 +123,8 @@ class DatasourceDBEditor extends JSONtoForm { viewMode, } = this.props; + const createFlow = datasourceId === TEMP_DATASOURCE_ID; + return (
{ @@ -134,7 +136,7 @@ class DatasourceDBEditor extends JSONtoForm { diff --git a/app/client/src/pages/Editor/DataSourceEditor/RestAPIDatasourceForm.tsx b/app/client/src/pages/Editor/DataSourceEditor/RestAPIDatasourceForm.tsx index 4898582463..2413db7693 100644 --- a/app/client/src/pages/Editor/DataSourceEditor/RestAPIDatasourceForm.tsx +++ b/app/client/src/pages/Editor/DataSourceEditor/RestAPIDatasourceForm.tsx @@ -55,6 +55,10 @@ import CloseEditor from "components/editorComponents/CloseEditor"; import { updateReplayEntity } from "actions/pageActions"; import { ENTITY_TYPE } from "entities/AppsmithConsole"; import { TEMP_DATASOURCE_ID } from "constants/Datasource"; +import { + hasDeleteDatasourcePermission, + hasManageDatasourcePermission, +} from "@appsmith/utils/permissionHelpers"; interface DatasourceRestApiEditorProps { initializeReplayEntity: (id: string, data: any) => void; @@ -286,9 +290,17 @@ class DatasourceRestAPIEditor extends React.Component< }; disableSave = (): boolean => { - const { formData } = this.props; + const { datasource, datasourceId, formData } = this.props; + const createMode = datasourceId === TEMP_DATASOURCE_ID; + const canManageDatasource = hasManageDatasourcePermission( + datasource?.userPermissions || [], + ); if (!formData) return true; - return !formData.url || !this.props.isFormDirty; + return ( + !formData.url || + !this.props.isFormDirty || + (!createMode && !canManageDatasource) + ); }; save = (onSuccess?: ReduxAction) => { @@ -401,12 +413,25 @@ class DatasourceRestAPIEditor extends React.Component< }; renderHeader = () => { - const { hiddenHeader, isNewDatasource, pluginImage } = this.props; + const { + datasource, + datasourceId, + hiddenHeader, + isNewDatasource, + pluginImage, + } = this.props; + const createMode = datasourceId === TEMP_DATASOURCE_ID; + const canManageDatasource = hasManageDatasourcePermission( + datasource?.userPermissions || [], + ); return !hiddenHeader ? (
- +
) : null; @@ -414,6 +439,10 @@ class DatasourceRestAPIEditor extends React.Component< renderSave = () => { const { datasourceId, hiddenHeader, isDeleting, isSaving } = this.props; + const createMode = datasourceId === TEMP_DATASOURCE_ID; + const canDeleteDatasource = hasDeleteDatasourcePermission( + this.props.datasource?.userPermissions || [], + ); return ( @@ -421,7 +450,7 @@ class DatasourceRestAPIEditor extends React.Component< { this.state.confirmDelete diff --git a/app/client/src/pages/Editor/SaaSEditor/DatasourceForm.tsx b/app/client/src/pages/Editor/SaaSEditor/DatasourceForm.tsx index 3962c0607e..a3f6836639 100644 --- a/app/client/src/pages/Editor/SaaSEditor/DatasourceForm.tsx +++ b/app/client/src/pages/Editor/SaaSEditor/DatasourceForm.tsx @@ -254,6 +254,9 @@ class DatasourceSaaSEditor extends JSONtoForm { const params: string = location.search; const viewMode = !hiddenHeader && new URLSearchParams(params).get("viewMode"); + + const createFlow = datasourceId === TEMP_DATASOURCE_ID; + return ( <> {