refactor(core): Switch over all user-management routes to use decorators (#5115)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2023-01-27 11:19:47 +01:00
committed by GitHub
parent 08a90d7e09
commit 845f0f9d20
71 changed files with 1803 additions and 1667 deletions

View File

@@ -63,9 +63,6 @@ import {
WorkflowExecuteMode,
INodeTypes,
ICredentialTypes,
INode,
IWorkflowBase,
IRun,
} from 'n8n-workflow';
import basicAuth from 'basic-auth';
@@ -103,8 +100,15 @@ import type {
OAuthRequest,
WorkflowRequest,
} from '@/requests';
import { userManagementRouter } from '@/UserManagement';
import { resolveJwt } from '@/UserManagement/auth/jwt';
import { registerController } from '@/decorators';
import {
AuthController,
MeController,
OwnerController,
PasswordResetController,
UsersController,
} from '@/controllers';
import { resolveJwt } from '@/auth/jwt';
import { executionsController } from '@/executions/executions.controller';
import { nodeTypesController } from '@/api/nodeTypes.api';
@@ -118,6 +122,7 @@ import {
isUserManagementEnabled,
whereClause,
} from '@/UserManagement/UserManagementHelper';
import { getInstance as getMailerInstance } from '@/UserManagement/email';
import * as Db from '@/Db';
import {
DatabaseType,
@@ -151,7 +156,7 @@ import { eventBusRouter } from '@/eventbus/eventBusRoutes';
import { isLogStreamingEnabled } from '@/eventbus/MessageEventBus/MessageEventBusHelper';
import { getLicense } from '@/License';
import { licenseController } from './license/license.controller';
import { corsMiddleware } from './middlewares/cors';
import { corsMiddleware, setupAuthMiddlewares } from './middlewares';
import { initEvents } from './events';
import { ldapController } from './Ldap/routes/ldap.controller.ee';
import { getLdapLoginLabel, isLdapEnabled, isLdapLoginEnabled } from './Ldap/helpers';
@@ -336,6 +341,33 @@ class Server extends AbstractServer {
}
}
private registerControllers(ignoredEndpoints: Readonly<string[]>) {
const { app, externalHooks, activeWorkflowRunner } = this;
const repositories = Db.collections;
setupAuthMiddlewares(app, ignoredEndpoints, this.restEndpoint, repositories.User);
const logger = LoggerProxy;
const internalHooks = InternalHooksManager.getInstance();
const mailer = getMailerInstance();
const controllers = [
new AuthController({ config, internalHooks, repositories, logger }),
new OwnerController({ config, internalHooks, repositories, logger }),
new MeController({ externalHooks, internalHooks, repositories, logger }),
new PasswordResetController({ config, externalHooks, internalHooks, repositories, logger }),
new UsersController({
config,
mailer,
externalHooks,
internalHooks,
repositories,
activeWorkflowRunner,
logger,
}),
];
controllers.forEach((controller) => registerController(app, config, controller));
}
async configure(): Promise<void> {
configureMetrics(this.app);
@@ -354,7 +386,7 @@ class Server extends AbstractServer {
const publicApiEndpoint = config.getEnv('publicApi.path');
const excludeEndpoints = config.getEnv('security.excludeEndpoints');
const ignoredEndpoints = [
const ignoredEndpoints: Readonly<string[]> = [
'assets',
'healthz',
'metrics',
@@ -587,7 +619,7 @@ class Server extends AbstractServer {
// ----------------------------------------
// User Management
// ----------------------------------------
await userManagementRouter.addRoutes.apply(this, [ignoredEndpoints, this.restEndpoint]);
this.registerControllers(ignoredEndpoints);
this.app.use(`/${this.restEndpoint}/credentials`, credentialsController);