diff --git a/frontend/src/metabase/query_builder/components/view/ViewHeader.jsx b/frontend/src/metabase/query_builder/components/view/ViewHeader.jsx index 34cfed53521c02757a048e28922cf1da5fc605ac..8e95b605ea196c9bb70be61ff44e63522432047f 100644 --- a/frontend/src/metabase/query_builder/components/view/ViewHeader.jsx +++ b/frontend/src/metabase/query_builder/components/view/ViewHeader.jsx @@ -398,8 +398,12 @@ function ViewTitleHeaderRightSide(props) { onCollapseFilters, } = props; const isShowingNotebook = queryBuilderMode === "notebook"; + const canRunAdhocQueries = !question.query().readOnly(); const hasExploreResultsLink = - isNative && isSaved && MetabaseSettings.get("enable-nested-queries"); + isNative && + isSaved && + canRunAdhocQueries && + MetabaseSettings.get("enable-nested-queries"); return ( <div diff --git a/frontend/src/metabase/query_builder/components/view/ViewHeader.unit.spec.js b/frontend/src/metabase/query_builder/components/view/ViewHeader.unit.spec.js index 484c7d8525560ffbadf139af5622d78073d3aed7..5dc6b109c7ac0f83dd8d45122d9c3d6236f65e1c 100644 --- a/frontend/src/metabase/query_builder/components/view/ViewHeader.unit.spec.js +++ b/frontend/src/metabase/query_builder/components/view/ViewHeader.unit.spec.js @@ -455,6 +455,29 @@ describe("View Header | Saved GUI question", () => { }); }); +describe("View Header | native question without write permissions on database (eg user without self serve data permissions)", () => { + let originalNativePermissions; + beforeEach(() => { + setupNative(); + originalNativePermissions = SAMPLE_DATABASE.native_permissions; + SAMPLE_DATABASE.native_permissions = "none"; + }); + + afterEach(() => { + SAMPLE_DATABASE.native_permissions = originalNativePermissions; + }); + + it("does not display question database", () => { + const { question } = setupNative(); + const databaseName = question.database().displayName(); + expect(screen.queryByText(databaseName)).not.toBeInTheDocument(); + }); + + it("does not offer to explore query results", () => { + expect(screen.queryByText("Explore results")).not.toBeInTheDocument(); + }); +}); + describe("View Header | Not saved native question", () => { it("does not display question database", () => { const { question } = setupNative();