diff --git a/packages/cli/src/Interfaces.ts b/packages/cli/src/Interfaces.ts index 24f7f1f7550fc..94cfa094c6b0b 100644 --- a/packages/cli/src/Interfaces.ts +++ b/packages/cli/src/Interfaces.ts @@ -524,6 +524,7 @@ export interface IN8nUISettings { ldap: boolean; saml: boolean; logStreaming: boolean; + advancedFilters: boolean; }; hideUsagePage: boolean; license: { diff --git a/packages/cli/src/License.ts b/packages/cli/src/License.ts index 66952b0080a1c..1a5d5a61222aa 100644 --- a/packages/cli/src/License.ts +++ b/packages/cli/src/License.ts @@ -106,6 +106,10 @@ export class License { return this.isFeatureEnabled(LICENSE_FEATURES.SAML); } + isAdvancedFiltersEnabled() { + return this.isFeatureEnabled(LICENSE_FEATURES.ADVANCED_FILTERS); + } + getCurrentEntitlements() { return this.manager?.getCurrentEntitlements() ?? []; } diff --git a/packages/cli/src/Server.ts b/packages/cli/src/Server.ts index d2f2e557a96c4..af05fcbdec218 100644 --- a/packages/cli/src/Server.ts +++ b/packages/cli/src/Server.ts @@ -144,7 +144,10 @@ import { PostHogClient } from './posthog'; import { eventBus } from './eventbus'; import { Container } from 'typedi'; import { InternalHooks } from './InternalHooks'; -import { getStatusUsingPreviousExecutionStatusMethod } from './executions/executionHelpers'; +import { + getStatusUsingPreviousExecutionStatusMethod, + isAdvancedFiltersEnabled, +} from './executions/executionHelpers'; import { getSamlLoginLabel, isSamlLoginEnabled, isSamlLicensed } from './sso/saml/samlHelpers'; import { samlControllerPublic } from './sso/saml/routes/saml.controller.public.ee'; import { SamlService } from './sso/saml/saml.service.ee'; @@ -300,6 +303,7 @@ class Server extends AbstractServer { ldap: false, saml: false, logStreaming: config.getEnv('enterprise.features.logStreaming'), + advancedFilters: config.getEnv('enterprise.features.advancedFilters'), }, hideUsagePage: config.getEnv('hideUsagePage'), license: { @@ -328,6 +332,7 @@ class Server extends AbstractServer { logStreaming: isLogStreamingEnabled(), ldap: isLdapEnabled(), saml: isSamlLicensed(), + advancedFilters: isAdvancedFiltersEnabled(), }); if (isLdapEnabled()) { diff --git a/packages/cli/src/config/schema.ts b/packages/cli/src/config/schema.ts index 0ec5c9a623d43..fab6d8bcf6722 100644 --- a/packages/cli/src/config/schema.ts +++ b/packages/cli/src/config/schema.ts @@ -1008,6 +1008,10 @@ export const schema = { format: Boolean, default: false, }, + advancedFilters: { + format: Boolean, + default: false, + }, }, }, diff --git a/packages/cli/src/constants.ts b/packages/cli/src/constants.ts index bcca817b40b4b..141d33f80ade2 100644 --- a/packages/cli/src/constants.ts +++ b/packages/cli/src/constants.ts @@ -72,6 +72,7 @@ export enum LICENSE_FEATURES { LDAP = 'feat:ldap', SAML = 'feat:saml', LOG_STREAMING = 'feat:logStreaming', + ADVANCED_FILTERS = 'feat:advancedFilters', } export const CREDENTIAL_BLANKING_VALUE = '__n8n_BLANK_VALUE_e5362baf-c777-4d57-a609-6eaf1f9e87f6'; diff --git a/packages/cli/src/executions/executionHelpers.ts b/packages/cli/src/executions/executionHelpers.ts index 21ee792b05cbc..4e4495390787f 100644 --- a/packages/cli/src/executions/executionHelpers.ts +++ b/packages/cli/src/executions/executionHelpers.ts @@ -1,5 +1,7 @@ -import type { IExecutionFlattedDb } from '../Interfaces'; +import type { IExecutionFlattedDb } from '@/Interfaces'; import type { ExecutionStatus } from 'n8n-workflow'; +import { getLicense } from '@/License'; +import config from '@/config'; export function getStatusUsingPreviousExecutionStatusMethod( execution: IExecutionFlattedDb, @@ -16,3 +18,8 @@ export function getStatusUsingPreviousExecutionStatusMethod( return 'unknown'; } } + +export function isAdvancedFiltersEnabled(): boolean { + const license = getLicense(); + return config.getEnv('enterprise.features.advancedFilters') || license.isAdvancedFiltersEnabled(); +}