diff --git a/e2e/test/scenarios/permissions/view-data.cy.spec.js b/e2e/test/scenarios/permissions/view-data.cy.spec.js index 5b52028664b1d1fb5dc390323492e3efeec6fa61..db20787026f2513b877e231dc3c64f54063ccc94 100644 --- a/e2e/test/scenarios/permissions/view-data.cy.spec.js +++ b/e2e/test/scenarios/permissions/view-data.cy.spec.js @@ -68,7 +68,7 @@ describeEE("scenarios > admin > permissions > view data > blocked", () => { cy.findByRole("tooltip") .findByText( - /Users in groups with Blocked on a table can't view native queries on this database/, + /Groups with a database, schema, or table set to Blocked can't view native queries on this database/, ) .should("exist"); diff --git a/frontend/src/metabase/admin/permissions/selectors/confirmations.tsx b/frontend/src/metabase/admin/permissions/selectors/confirmations.tsx index 44bf8539d7043ec20d3c3ae89f4fae909b947447..668f39900a7626f7420828e3da9d14b020506ba3 100644 --- a/frontend/src/metabase/admin/permissions/selectors/confirmations.tsx +++ b/frontend/src/metabase/admin/permissions/selectors/confirmations.tsx @@ -90,7 +90,7 @@ export function getPermissionWarning( return null; } -export function getTableBlockWarning( +export function getBlockWarning( dbValue: DataPermissionValue, schemaValue: DataPermissionValue, tableValue?: DataPermissionValue, @@ -99,12 +99,11 @@ export function getTableBlockWarning( return; } - if (schemaValue === DataPermissionValue.BLOCKED) { - return t`Users in groups with Blocked on a schema can't view native queries on this database.`; - } - - if (tableValue === DataPermissionValue.BLOCKED) { - return t`Users in groups with Blocked on a table can't view native queries on this database.`; + if ( + schemaValue === DataPermissionValue.BLOCKED || + tableValue === DataPermissionValue.BLOCKED + ) { + return t`Groups with a database, schema, or table set to Blocked can't view native queries on this database.`; } } diff --git a/frontend/src/metabase/admin/permissions/selectors/data-permissions/fields.ts b/frontend/src/metabase/admin/permissions/selectors/data-permissions/fields.ts index d3f535aee1cf35aa448986c78f576d0d07d604e2..ce583048a80730e8fc9e704bea5a4413d890cbee 100644 --- a/frontend/src/metabase/admin/permissions/selectors/data-permissions/fields.ts +++ b/frontend/src/metabase/admin/permissions/selectors/data-permissions/fields.ts @@ -26,10 +26,10 @@ import { DataPermissionValue, } from "../../types"; import { + getBlockWarning, getPermissionWarning, getPermissionWarningModal, getRevokingAccessToAllTablesWarningModal, - getTableBlockWarning, getWillRevokeNativeAccessWarningModal, } from "../confirmations"; @@ -64,14 +64,14 @@ const buildAccessPermission = ( ); const dbValue = getSchemasPermission( - originalPermissions, + permissions, groupId, entityId, DataPermission.VIEW_DATA, ); const schemaValue = getTablesPermission( - originalPermissions, + permissions, groupId, entityId, DataPermission.VIEW_DATA, @@ -85,8 +85,9 @@ const buildAccessPermission = ( groupId, ); - const blockWarning = getTableBlockWarning(dbValue, schemaValue, value); + const blockWarning = getBlockWarning(dbValue, schemaValue, value); + // permissionWarning should always trump a blockWarning const warning = permissionWarning || blockWarning; const confirmations = (newValue: DataPermissionValue) => [ diff --git a/frontend/src/metabase/admin/permissions/selectors/data-permissions/tables.ts b/frontend/src/metabase/admin/permissions/selectors/data-permissions/tables.ts index 421601303873a3653a8ceecac67d3da0c2714edb..e6b279da93212ab454fd2d2f027bf6ad838e7de0 100644 --- a/frontend/src/metabase/admin/permissions/selectors/data-permissions/tables.ts +++ b/frontend/src/metabase/admin/permissions/selectors/data-permissions/tables.ts @@ -23,9 +23,9 @@ import { DataPermissionValue, } from "../../types"; import { + getBlockWarning, getPermissionWarning, getPermissionWarningModal, - getTableBlockWarning, getViewDataPermissionsTooRestrictiveWarningModal, getWillRevokeNativeAccessWarningModal, } from "../confirmations"; @@ -60,7 +60,7 @@ const buildAccessPermission = ( ); const dbValue = getSchemasPermission( - originalPermissions, + permissions, groupId, entityId, DataPermission.VIEW_DATA, @@ -74,8 +74,9 @@ const buildAccessPermission = ( groupId, ); - const blockWarning = getTableBlockWarning(dbValue, value); + const blockWarning = getBlockWarning(dbValue, value); + // permissionWarning should always trump a blockWarning const warning = permissionWarning || blockWarning; const confirmations = (newValue: DataPermissionValue) => [