[Fix] Backfill missing command menu items conditional availability expression (#20852)
## Description Following [report in discord](https://discord.com/channels/1130383047699738754/1498690477044793386/1506602927412744242) Some command menu items were showing to all users because they had no conditional availability expression, whereas users did not actually have access to the page or feature behind. For instance: "Go to Admin panel", "Go to AI settings", "Send email" etc. <img width="833" height="1245" alt="image" src="https://github.com/user-attachments/assets/8d2a9404-9b81-4d58-9522-558e9924c457" /> ## Fix - Add conditional availability expressions - Backfill expressions for existing workspaces as they are stored in db (commandMenuItems table) --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
+24
-20
@@ -644,7 +644,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 42,
|
||||
shortLabel: 'Ask AI',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.AI',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.ASK_AI,
|
||||
@@ -658,7 +658,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 43,
|
||||
shortLabel: 'Previous AI Chats',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.AI',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.VIEW_PREVIOUS_AI_CHATS,
|
||||
@@ -687,7 +687,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 45,
|
||||
shortLabel: 'Compose',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.SEND_EMAIL_TOOL',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.COMPOSE_EMAIL,
|
||||
@@ -731,7 +731,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 48,
|
||||
shortLabel: 'Accounts',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.CONNECTED_ACCOUNTS',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -746,7 +746,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 49,
|
||||
shortLabel: 'Emails',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.CONNECTED_ACCOUNTS',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -761,7 +761,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 50,
|
||||
shortLabel: 'Calendars',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.CONNECTED_ACCOUNTS',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -776,7 +776,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 51,
|
||||
shortLabel: 'General',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.WORKSPACE',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -791,7 +791,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 52,
|
||||
shortLabel: 'Data Model',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.DATA_MODEL',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -806,7 +806,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 53,
|
||||
shortLabel: 'Members',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.WORKSPACE_MEMBERS',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -821,7 +821,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 54,
|
||||
shortLabel: 'Roles',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.WORKSPACE_MEMBERS',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -836,7 +836,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 55,
|
||||
shortLabel: 'Domains',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.WORKSPACE',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -851,7 +851,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 56,
|
||||
shortLabel: 'Billing',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.WORKSPACE',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -866,7 +866,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 57,
|
||||
shortLabel: 'APIs & Webhooks',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.API_KEYS_AND_WEBHOOKS',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -881,7 +881,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 58,
|
||||
shortLabel: 'Apps',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.APPLICATIONS',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -896,7 +896,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 59,
|
||||
shortLabel: 'AI',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.WORKSPACE',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -911,7 +911,7 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 60,
|
||||
shortLabel: 'Security',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression: 'permissionFlags.SECURITY',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -926,7 +926,8 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 61,
|
||||
shortLabel: 'Admin Panel',
|
||||
availabilityType: CommandMenuItemAvailabilityType.GLOBAL,
|
||||
conditionalAvailabilityExpression: null,
|
||||
conditionalAvailabilityExpression:
|
||||
'canImpersonate or canAccessFullAdminPanel',
|
||||
availabilityObjectMetadataUniversalIdentifier: null,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
engineComponentKey: EngineComponentKey.NAVIGATION,
|
||||
@@ -956,7 +957,8 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 63,
|
||||
shortLabel: 'Send Email',
|
||||
availabilityType: CommandMenuItemAvailabilityType.RECORD_SELECTION,
|
||||
conditionalAvailabilityExpression: 'numberOfSelectedRecords >= 1',
|
||||
conditionalAvailabilityExpression:
|
||||
'numberOfSelectedRecords >= 1 and permissionFlags.SEND_EMAIL_TOOL',
|
||||
availabilityObjectMetadataUniversalIdentifier:
|
||||
STANDARD_OBJECTS.person.universalIdentifier,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
@@ -971,7 +973,8 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 64,
|
||||
shortLabel: 'Send Email',
|
||||
availabilityType: CommandMenuItemAvailabilityType.RECORD_SELECTION,
|
||||
conditionalAvailabilityExpression: 'numberOfSelectedRecords == 1',
|
||||
conditionalAvailabilityExpression:
|
||||
'numberOfSelectedRecords == 1 and permissionFlags.SEND_EMAIL_TOOL',
|
||||
availabilityObjectMetadataUniversalIdentifier:
|
||||
STANDARD_OBJECTS.company.universalIdentifier,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
@@ -986,7 +989,8 @@ export const STANDARD_COMMAND_MENU_ITEMS = {
|
||||
position: 65,
|
||||
shortLabel: 'Send Email',
|
||||
availabilityType: CommandMenuItemAvailabilityType.RECORD_SELECTION,
|
||||
conditionalAvailabilityExpression: 'numberOfSelectedRecords == 1',
|
||||
conditionalAvailabilityExpression:
|
||||
'numberOfSelectedRecords == 1 and permissionFlags.SEND_EMAIL_TOOL',
|
||||
availabilityObjectMetadataUniversalIdentifier:
|
||||
STANDARD_OBJECTS.opportunity.universalIdentifier,
|
||||
frontComponentUniversalIdentifier: null,
|
||||
|
||||
Reference in New Issue
Block a user