mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 17:46:45 +00:00
155 lines
4.5 KiB
TypeScript
155 lines
4.5 KiB
TypeScript
import { h } from 'vue';
|
|
import { useCloudPlanStore } from '@/stores/cloudPlan.store';
|
|
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
|
|
import { useRootStore } from '@n8n/stores/useRootStore';
|
|
import { useSettingsStore } from '@/stores/settings.store';
|
|
import { useSourceControlStore } from '@/stores/sourceControl.store';
|
|
import { useUsersStore } from '@/stores/users.store';
|
|
import { useExternalHooks } from '@/composables/useExternalHooks';
|
|
import { useVersionsStore } from '@/stores/versions.store';
|
|
import { useProjectsStore } from '@/stores/projects.store';
|
|
import { useRolesStore } from './stores/roles.store';
|
|
import { useInsightsStore } from '@/features/insights/insights.store';
|
|
import { useToast } from '@/composables/useToast';
|
|
import { useI18n } from '@n8n/i18n';
|
|
import SourceControlInitializationErrorMessage from '@/components/SourceControlInitializationErrorMessage.vue';
|
|
import { useSSOStore } from '@/stores/sso.store';
|
|
import { EnterpriseEditionFeature } from '@/constants';
|
|
import type { UserManagementAuthenticationMethod } from '@/Interface';
|
|
import { useUIStore } from '@/stores/ui.store';
|
|
import type { BannerName } from '@n8n/api-types';
|
|
|
|
export const state = {
|
|
initialized: false,
|
|
};
|
|
let authenticatedFeaturesInitialized = false;
|
|
|
|
/**
|
|
* Initializes the core application stores and hooks
|
|
* This is called once, when the first route is loaded.
|
|
*/
|
|
export async function initializeCore() {
|
|
if (state.initialized) {
|
|
return;
|
|
}
|
|
|
|
const settingsStore = useSettingsStore();
|
|
const usersStore = useUsersStore();
|
|
const versionsStore = useVersionsStore();
|
|
const ssoStore = useSSOStore();
|
|
const uiStore = useUIStore();
|
|
|
|
await settingsStore.initialize();
|
|
|
|
ssoStore.initialize({
|
|
authenticationMethod: settingsStore.userManagement
|
|
.authenticationMethod as UserManagementAuthenticationMethod,
|
|
config: settingsStore.settings.sso,
|
|
features: {
|
|
saml: settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.Saml],
|
|
ldap: settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.Ldap],
|
|
oidc: settingsStore.isEnterpriseFeatureEnabled[EnterpriseEditionFeature.Oidc],
|
|
},
|
|
});
|
|
|
|
const banners: BannerName[] = [];
|
|
if (settingsStore.isEnterpriseFeatureEnabled.showNonProdBanner) {
|
|
banners.push('NON_PRODUCTION_LICENSE');
|
|
}
|
|
if (
|
|
!(settingsStore.settings.banners?.dismissed || []).includes('V1') &&
|
|
settingsStore.settings.versionCli.startsWith('1.')
|
|
) {
|
|
banners.push('V1');
|
|
}
|
|
uiStore.initialize({
|
|
banners,
|
|
});
|
|
|
|
versionsStore.initialize(settingsStore.settings.versionNotifications);
|
|
|
|
void useExternalHooks().run('app.mount');
|
|
|
|
if (!settingsStore.isPreviewMode) {
|
|
await usersStore.initialize({
|
|
quota: settingsStore.userManagement.quota,
|
|
});
|
|
|
|
void versionsStore.checkForNewVersions();
|
|
}
|
|
|
|
state.initialized = true;
|
|
}
|
|
|
|
/**
|
|
* Initializes the features of the application that require an authenticated user
|
|
*/
|
|
export async function initializeAuthenticatedFeatures(
|
|
initialized: boolean = authenticatedFeaturesInitialized,
|
|
) {
|
|
if (initialized) {
|
|
return;
|
|
}
|
|
|
|
const usersStore = useUsersStore();
|
|
if (!usersStore.currentUser) {
|
|
return;
|
|
}
|
|
|
|
const i18n = useI18n();
|
|
const toast = useToast();
|
|
const sourceControlStore = useSourceControlStore();
|
|
const settingsStore = useSettingsStore();
|
|
const rootStore = useRootStore();
|
|
const nodeTypesStore = useNodeTypesStore();
|
|
const cloudPlanStore = useCloudPlanStore();
|
|
const projectsStore = useProjectsStore();
|
|
const rolesStore = useRolesStore();
|
|
const insightsStore = useInsightsStore();
|
|
|
|
if (sourceControlStore.isEnterpriseSourceControlEnabled) {
|
|
try {
|
|
await sourceControlStore.getPreferences();
|
|
} catch (e) {
|
|
toast.showMessage({
|
|
title: i18n.baseText('settings.sourceControl.connection.error'),
|
|
message: h(SourceControlInitializationErrorMessage),
|
|
type: 'error',
|
|
duration: 0,
|
|
});
|
|
console.error('Failed to initialize source control store', e);
|
|
}
|
|
}
|
|
|
|
if (settingsStore.isTemplatesEnabled) {
|
|
try {
|
|
await settingsStore.testTemplatesEndpoint();
|
|
} catch (e) {}
|
|
}
|
|
|
|
if (rootStore.defaultLocale !== 'en') {
|
|
await nodeTypesStore.getNodeTranslationHeaders();
|
|
}
|
|
|
|
if (settingsStore.isCloudDeployment) {
|
|
try {
|
|
await cloudPlanStore.initialize();
|
|
} catch (e) {
|
|
console.error('Failed to initialize cloud plan store:', e);
|
|
}
|
|
}
|
|
|
|
if (insightsStore.isSummaryEnabled) {
|
|
void insightsStore.weeklySummary.execute();
|
|
}
|
|
|
|
await Promise.all([
|
|
projectsStore.getMyProjects(),
|
|
projectsStore.getPersonalProject(),
|
|
projectsStore.getProjectsCount(),
|
|
rolesStore.fetchRoles(),
|
|
]);
|
|
|
|
authenticatedFeaturesInitialized = true;
|
|
}
|