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,