fix(core): Initialize License and LDAP in the correct order (#5673)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™ 2023-03-10 19:05:51 +01:00 committed by GitHub
parent 5c4343b828
commit 90afa5e55f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 26 deletions

View file

@ -130,12 +130,16 @@ import * as WorkflowExecuteAdditionalData from '@/WorkflowExecuteAdditionalData'
import { toHttpNodeParameters } from '@/CurlConverterHelper';
import { eventBusRouter } from '@/eventbus/eventBusRoutes';
import { isLogStreamingEnabled } from '@/eventbus/MessageEventBus/MessageEventBusHelper';
import { getLicense } from '@/License';
import { licenseController } from './license/license.controller';
import { Push, setupPushServer, setupPushHandler } from '@/push';
import { setupAuthMiddlewares } from './middlewares';
import { initEvents } from './events';
import { getLdapLoginLabel, isLdapEnabled, isLdapLoginEnabled } from './Ldap/helpers';
import {
getLdapLoginLabel,
handleLdapInit,
isLdapEnabled,
isLdapLoginEnabled,
} from './Ldap/helpers';
import { AbstractServer } from './AbstractServer';
import { configureMetrics } from './metrics';
import { setupBasicAuth } from './middlewares/basicAuth';
@ -357,20 +361,6 @@ class Server extends AbstractServer {
return this.frontendSettings;
}
async initLicense(): Promise<void> {
const license = getLicense();
await license.init(this.frontendSettings.instanceId);
const activationKey = config.getEnv('license.activationKey');
if (activationKey) {
try {
await license.activate(activationKey);
} catch (e) {
LoggerProxy.error('Could not activate license', e);
}
}
}
private registerControllers(ignoredEndpoints: Readonly<string[]>) {
const { app, externalHooks, activeWorkflowRunner, nodeTypes } = this;
const repositories = Db.collections;
@ -428,7 +418,6 @@ class Server extends AbstractServer {
await this.externalHooks.run('frontend.settings', [this.frontendSettings]);
await this.initLicense();
await this.postHog.init(this.frontendSettings.instanceId);
const publicApiEndpoint = config.getEnv('publicApi.path');
@ -490,9 +479,8 @@ class Server extends AbstractServer {
}),
);
// ----------------------------------------
// User Management
// ----------------------------------------
await handleLdapInit();
this.registerControllers(ignoredEndpoints);
this.app.use(`/${this.restEndpoint}/credentials`, credentialsController);

View file

@ -34,6 +34,8 @@ export abstract class BaseCommand extends Command {
protected userSettings: IUserSettings;
protected instanceId: string;
async init(): Promise<void> {
await initErrorHandling();
@ -49,9 +51,9 @@ export abstract class BaseCommand extends Command {
const credentialTypes = Container.get(CredentialTypes);
CredentialsOverwrites(credentialTypes);
const instanceId = this.userSettings.instanceId ?? '';
await Container.get(PostHogClient).init(instanceId);
await Container.get(InternalHooks).init(instanceId);
this.instanceId = this.userSettings.instanceId ?? '';
await Container.get(PostHogClient).init(this.instanceId);
await Container.get(InternalHooks).init(this.instanceId);
await Db.init().catch(async (error: Error) =>
this.exitWithCrash('There was an error initializing DB', error),

View file

@ -24,11 +24,11 @@ import * as GenericHelpers from '@/GenericHelpers';
import * as Server from '@/Server';
import { TestWebhooks } from '@/TestWebhooks';
import { getAllInstalledPackages } from '@/CommunityNodes/packageModel';
import { handleLdapInit } from '@/Ldap/helpers';
import { EDITOR_UI_DIST_DIR, GENERATED_STATIC_DIR } from '@/constants';
import { eventBus } from '@/eventbus';
import { BaseCommand } from './BaseCommand';
import { InternalHooks } from '@/InternalHooks';
import { getLicense } from '@/License';
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires
const open = require('open');
@ -182,11 +182,26 @@ export class Start extends BaseCommand {
await Promise.all(files.map(compileFile));
}
async initLicense(): Promise<void> {
const license = getLicense();
await license.init(this.instanceId);
const activationKey = config.getEnv('license.activationKey');
if (activationKey) {
try {
await license.activate(activationKey);
} catch (e) {
LoggerProxy.error('Could not activate license', e as Error);
}
}
}
async init() {
await this.initCrashJournal();
await super.init();
this.logger.info('Initializing n8n process');
await this.initLicense();
await this.initBinaryManager();
await this.initExternalHooks();
@ -326,8 +341,6 @@ export class Start extends BaseCommand {
);
}
await handleLdapInit();
await Server.start();
// Start to get active workflows and run their triggers