From abdccf2940865f8679fe11ca88628ed5b43fed81 Mon Sep 17 00:00:00 2001 From: nitin <142569587+ehconitin@users.noreply.github.com> Date: Thu, 15 Jan 2026 19:07:08 +0530 Subject: [PATCH] [Dashboards] restrict dashboard actions based on object permissions (#17169) --- .../constants/DashboardActionsConfig.tsx | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/packages/twenty-front/src/modules/action-menu/actions/record-actions/constants/DashboardActionsConfig.tsx b/packages/twenty-front/src/modules/action-menu/actions/record-actions/constants/DashboardActionsConfig.tsx index 05280b0808..742310e256 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/record-actions/constants/DashboardActionsConfig.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/record-actions/constants/DashboardActionsConfig.tsx @@ -31,11 +31,12 @@ export const DASHBOARD_ACTIONS_CONFIG = inheritActionsFromDefaultConfig({ Icon: IconPencil, type: ActionType.Standard, scope: ActionScope.RecordSelection, - shouldBeRegistered: ({ selectedRecord }) => + shouldBeRegistered: ({ selectedRecord, objectPermissions }) => isDefined(selectedRecord) && !selectedRecord?.isRemote && !isDefined(selectedRecord?.deletedAt) && - isDefined(selectedRecord?.pageLayoutId), + isDefined(selectedRecord?.pageLayoutId) && + objectPermissions.canUpdateObjectRecords, availableOn: [ActionViewType.SHOW_PAGE], component: , }, @@ -49,11 +50,12 @@ export const DASHBOARD_ACTIONS_CONFIG = inheritActionsFromDefaultConfig({ Icon: IconDeviceFloppy, type: ActionType.Standard, scope: ActionScope.RecordSelection, - shouldBeRegistered: ({ selectedRecord }) => + shouldBeRegistered: ({ selectedRecord, objectPermissions }) => isDefined(selectedRecord) && !selectedRecord?.isRemote && !isDefined(selectedRecord?.deletedAt) && - isDefined(selectedRecord?.pageLayoutId), + isDefined(selectedRecord?.pageLayoutId) && + objectPermissions.canUpdateObjectRecords, availableOn: [ActionViewType.PAGE_EDIT_MODE], component: , }, @@ -66,11 +68,12 @@ export const DASHBOARD_ACTIONS_CONFIG = inheritActionsFromDefaultConfig({ Icon: IconCancel, type: ActionType.Standard, scope: ActionScope.RecordSelection, - shouldBeRegistered: ({ selectedRecord }) => + shouldBeRegistered: ({ selectedRecord, objectPermissions }) => isDefined(selectedRecord) && !selectedRecord?.isRemote && !isDefined(selectedRecord?.deletedAt) && - isDefined(selectedRecord?.pageLayoutId), + isDefined(selectedRecord?.pageLayoutId) && + objectPermissions.canUpdateObjectRecords, availableOn: [ActionViewType.PAGE_EDIT_MODE], component: , }, @@ -83,11 +86,12 @@ export const DASHBOARD_ACTIONS_CONFIG = inheritActionsFromDefaultConfig({ Icon: IconCopyPlus, type: ActionType.Standard, scope: ActionScope.RecordSelection, - shouldBeRegistered: ({ selectedRecord }) => + shouldBeRegistered: ({ selectedRecord, objectPermissions }) => isDefined(selectedRecord) && !selectedRecord?.isRemote && !isDefined(selectedRecord?.deletedAt) && - isDefined(selectedRecord?.pageLayoutId), + isDefined(selectedRecord?.pageLayoutId) && + objectPermissions.canUpdateObjectRecords, availableOn: [ ActionViewType.INDEX_PAGE_SINGLE_RECORD_SELECTION, ActionViewType.SHOW_PAGE,