mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-19 19:11:13 +00:00
feat: Add license helpers for insights (no-changelog) (#14180)
This commit is contained in:
@@ -183,5 +183,7 @@ export interface FrontendSettings {
|
||||
};
|
||||
insights: {
|
||||
enabled: boolean;
|
||||
summary: boolean;
|
||||
dashboard: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -95,6 +95,9 @@ export const LICENSE_FEATURES = {
|
||||
COMMUNITY_NODES_CUSTOM_REGISTRY: 'feat:communityNodes:customRegistry',
|
||||
AI_CREDITS: 'feat:aiCredits',
|
||||
FOLDERS: 'feat:folders',
|
||||
INSIGHTS_VIEW_SUMMARY: 'feat:insights:viewSummary',
|
||||
INSIGHTS_VIEW_DASHBOARD: 'feat:insights:viewDashboard',
|
||||
INSIGHTS_VIEW_HOURLY_DATA: 'feat:insights:viewHourlyData',
|
||||
} as const;
|
||||
|
||||
export const LICENSE_QUOTAS = {
|
||||
@@ -104,6 +107,9 @@ export const LICENSE_QUOTAS = {
|
||||
WORKFLOW_HISTORY_PRUNE_LIMIT: 'quota:workflowHistoryPrune',
|
||||
TEAM_PROJECT_LIMIT: 'quota:maxTeamProjects',
|
||||
AI_CREDITS: 'quota:aiCredits',
|
||||
INSIGHTS_MAX_HISTORY_DAYS: 'quota:insights:maxHistoryDays',
|
||||
INSIGHTS_RETENTION_MAX_AGE_DAYS: 'quota:insights:retention:maxAgeDays',
|
||||
INSIGHTS_RETENTION_PRUNE_INTERVAL_DAYS: 'quota:insights:retention:pruneIntervalDays',
|
||||
} as const;
|
||||
export const UNLIMITED_LICENSE_QUOTA = -1;
|
||||
|
||||
|
||||
@@ -102,6 +102,9 @@ export class E2EController {
|
||||
[LICENSE_FEATURES.ASK_AI]: false,
|
||||
[LICENSE_FEATURES.AI_CREDITS]: false,
|
||||
[LICENSE_FEATURES.FOLDERS]: false,
|
||||
[LICENSE_FEATURES.INSIGHTS_VIEW_SUMMARY]: false,
|
||||
[LICENSE_FEATURES.INSIGHTS_VIEW_DASHBOARD]: false,
|
||||
[LICENSE_FEATURES.INSIGHTS_VIEW_HOURLY_DATA]: false,
|
||||
};
|
||||
|
||||
private static readonly numericFeaturesDefaults: Record<NumericLicenseFeature, number> = {
|
||||
@@ -111,6 +114,9 @@ export class E2EController {
|
||||
[LICENSE_QUOTAS.WORKFLOW_HISTORY_PRUNE_LIMIT]: -1,
|
||||
[LICENSE_QUOTAS.TEAM_PROJECT_LIMIT]: 0,
|
||||
[LICENSE_QUOTAS.AI_CREDITS]: 0,
|
||||
[LICENSE_QUOTAS.INSIGHTS_MAX_HISTORY_DAYS]: 7,
|
||||
[LICENSE_QUOTAS.INSIGHTS_RETENTION_MAX_AGE_DAYS]: 30,
|
||||
[LICENSE_QUOTAS.INSIGHTS_RETENTION_PRUNE_INTERVAL_DAYS]: 180,
|
||||
};
|
||||
|
||||
private numericFeatures: Record<NumericLicenseFeature, number> = {
|
||||
@@ -124,6 +130,13 @@ export class E2EController {
|
||||
[LICENSE_QUOTAS.TEAM_PROJECT_LIMIT]:
|
||||
E2EController.numericFeaturesDefaults[LICENSE_QUOTAS.TEAM_PROJECT_LIMIT],
|
||||
[LICENSE_QUOTAS.AI_CREDITS]: E2EController.numericFeaturesDefaults[LICENSE_QUOTAS.AI_CREDITS],
|
||||
|
||||
[LICENSE_QUOTAS.INSIGHTS_MAX_HISTORY_DAYS]:
|
||||
E2EController.numericFeaturesDefaults[LICENSE_QUOTAS.INSIGHTS_MAX_HISTORY_DAYS],
|
||||
[LICENSE_QUOTAS.INSIGHTS_RETENTION_MAX_AGE_DAYS]:
|
||||
E2EController.numericFeaturesDefaults[LICENSE_QUOTAS.INSIGHTS_RETENTION_MAX_AGE_DAYS],
|
||||
[LICENSE_QUOTAS.INSIGHTS_RETENTION_PRUNE_INTERVAL_DAYS]:
|
||||
E2EController.numericFeaturesDefaults[LICENSE_QUOTAS.INSIGHTS_RETENTION_PRUNE_INTERVAL_DAYS],
|
||||
};
|
||||
|
||||
constructor(
|
||||
|
||||
@@ -315,6 +315,18 @@ export class License {
|
||||
return this.isFeatureEnabled(LICENSE_FEATURES.FOLDERS);
|
||||
}
|
||||
|
||||
isInsightsSummaryEnabled() {
|
||||
return this.isFeatureEnabled(LICENSE_FEATURES.INSIGHTS_VIEW_SUMMARY);
|
||||
}
|
||||
|
||||
isInsightsDashboardEnabled() {
|
||||
return this.isFeatureEnabled(LICENSE_FEATURES.INSIGHTS_VIEW_DASHBOARD);
|
||||
}
|
||||
|
||||
isInsightsHourlyDataEnabled() {
|
||||
return this.getFeatureValue(LICENSE_FEATURES.INSIGHTS_VIEW_HOURLY_DATA);
|
||||
}
|
||||
|
||||
getCurrentEntitlements() {
|
||||
return this.manager?.getCurrentEntitlements() ?? [];
|
||||
}
|
||||
@@ -377,6 +389,18 @@ export class License {
|
||||
);
|
||||
}
|
||||
|
||||
getInsightsMaxHistory() {
|
||||
return this.getFeatureValue(LICENSE_QUOTAS.INSIGHTS_MAX_HISTORY_DAYS) ?? 7;
|
||||
}
|
||||
|
||||
getInsightsRetentionMaxAge() {
|
||||
return this.getFeatureValue(LICENSE_QUOTAS.INSIGHTS_RETENTION_MAX_AGE_DAYS) ?? 180;
|
||||
}
|
||||
|
||||
getInsightsRetentionPruneInterval() {
|
||||
return this.getFeatureValue(LICENSE_QUOTAS.INSIGHTS_RETENTION_PRUNE_INTERVAL_DAYS) ?? 24;
|
||||
}
|
||||
|
||||
getTeamProjectLimit() {
|
||||
return this.getFeatureValue(LICENSE_QUOTAS.TEAM_PROJECT_LIMIT) ?? 0;
|
||||
}
|
||||
|
||||
@@ -241,6 +241,8 @@ export class FrontendService {
|
||||
},
|
||||
insights: {
|
||||
enabled: this.modulesConfig.modules.includes('insights'),
|
||||
summary: true,
|
||||
dashboard: false,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -361,6 +363,12 @@ export class FrontendService {
|
||||
this.settings.aiCredits.credits = this.license.getAiCredits();
|
||||
}
|
||||
|
||||
Object.assign(this.settings.insights, {
|
||||
enabled: this.modulesConfig.modules.includes('insights'),
|
||||
summary: this.license.isInsightsSummaryEnabled(),
|
||||
dashboard: this.license.isInsightsDashboardEnabled(),
|
||||
});
|
||||
|
||||
this.settings.mfa.enabled = config.get('mfa.enabled');
|
||||
|
||||
this.settings.executionMode = config.getEnv('executions.mode');
|
||||
|
||||
@@ -143,5 +143,7 @@ export const defaultSettings: FrontendSettings = {
|
||||
},
|
||||
insights: {
|
||||
enabled: false,
|
||||
summary: true,
|
||||
dashboard: false,
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user