diff --git a/app/client/src/pages/Editor/DataSourceEditor/SaveOrDiscardDatasourceModal.tsx b/app/client/src/pages/Editor/DataSourceEditor/SaveOrDiscardDatasourceModal.tsx
index a4a2714ee0..bd8d05fdb9 100644
--- a/app/client/src/pages/Editor/DataSourceEditor/SaveOrDiscardDatasourceModal.tsx
+++ b/app/client/src/pages/Editor/DataSourceEditor/SaveOrDiscardDatasourceModal.tsx
@@ -10,16 +10,33 @@ import {
DialogComponent as Dialog,
Size,
} from "design-system";
+import { TEMP_DATASOURCE_ID } from "constants/Datasource";
+import { hasManageDatasourcePermission } from "@appsmith/utils/permissionHelpers";
interface SaveOrDiscardModalProps {
isOpen: boolean;
onDiscard(): void;
onSave?(): void;
onClose(): void;
+ datasourceId: string;
+ datasourcePermissions: string[];
}
function SaveOrDiscardDatasourceModal(props: SaveOrDiscardModalProps) {
- const { isOpen, onClose, onDiscard, onSave } = props;
+ const {
+ datasourceId,
+ datasourcePermissions,
+ isOpen,
+ onClose,
+ onDiscard,
+ onSave,
+ } = props;
+
+ const createMode = datasourceId === TEMP_DATASOURCE_ID;
+ const canManageDatasources = hasManageDatasourcePermission(
+ datasourcePermissions,
+ );
+ const disableSaveButton = !createMode && !canManageDatasources;
return (
diff --git a/app/client/src/pages/Editor/DataSourceEditor/index.tsx b/app/client/src/pages/Editor/DataSourceEditor/index.tsx
index 1849ba4ac6..1ba8718761 100644
--- a/app/client/src/pages/Editor/DataSourceEditor/index.tsx
+++ b/app/client/src/pages/Editor/DataSourceEditor/index.tsx
@@ -420,6 +420,8 @@ class DatasourceEditorRouter extends React.Component {
renderSaveDisacardModal() {
return (
{
)}
{
return {
[DatasourceButtonType.DELETE]: (
{
@@ -303,7 +305,9 @@ function DatasourceAuth({