n8n 1.98.2 → 1.99.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/n8n +4 -0
- package/dist/abstract-server.js +2 -2
- package/dist/abstract-server.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/commands/base-command.d.ts +2 -0
- package/dist/commands/base-command.js +8 -16
- package/dist/commands/base-command.js.map +1 -1
- package/dist/commands/start.js +4 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/webhook.js +1 -1
- package/dist/commands/webhook.js.map +1 -1
- package/dist/commands/worker.js +1 -1
- package/dist/commands/worker.js.map +1 -1
- package/dist/concurrency/concurrency-control.service.d.ts +3 -1
- package/dist/concurrency/concurrency-control.service.js +10 -7
- package/dist/concurrency/concurrency-control.service.js.map +1 -1
- package/dist/config/index.d.ts +3 -15
- package/dist/config/schema.d.ts +7 -49
- package/dist/config/schema.js +7 -49
- package/dist/config/schema.js.map +1 -1
- package/dist/controller.registry.js +16 -6
- package/dist/controller.registry.js.map +1 -1
- package/dist/controllers/binary-data.controller.js +8 -3
- package/dist/controllers/binary-data.controller.js.map +1 -1
- package/dist/controllers/me.controller.js +13 -2
- package/dist/controllers/me.controller.js.map +1 -1
- package/dist/controllers/node-types.controller.d.ts +3 -1
- package/dist/controllers/node-types.controller.js +6 -4
- package/dist/controllers/node-types.controller.js.map +1 -1
- package/dist/controllers/password-reset.controller.js +5 -5
- package/dist/controllers/password-reset.controller.js.map +1 -1
- package/dist/controllers/project.controller.d.ts +2 -0
- package/dist/controllers/project.controller.js +5 -4
- package/dist/controllers/project.controller.js.map +1 -1
- package/dist/controllers/translation.controller.d.ts +3 -1
- package/dist/controllers/translation.controller.js +6 -7
- package/dist/controllers/translation.controller.js.map +1 -1
- package/dist/databases/db-connection-options.d.ts +3 -1
- package/dist/databases/db-connection-options.js +6 -6
- package/dist/databases/db-connection-options.js.map +1 -1
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.d.ts +2 -1
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js +54 -22
- package/dist/evaluation.ee/test-runner/test-runner.service.ee.js.map +1 -1
- package/dist/evaluation.ee/test-runner/utils.ee.d.ts +9 -1
- package/dist/evaluation.ee/test-runner/utils.ee.js +45 -0
- package/dist/evaluation.ee/test-runner/utils.ee.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-node.d.ts +1 -0
- package/dist/eventbus/event-message-classes/event-message-node.js.map +1 -1
- package/dist/eventbus/event-message-classes/event-message-runner.d.ts +21 -0
- package/dist/eventbus/event-message-classes/event-message-runner.js +29 -0
- package/dist/eventbus/event-message-classes/event-message-runner.js.map +1 -0
- package/dist/eventbus/event-message-classes/index.d.ts +6 -3
- package/dist/eventbus/event-message-classes/index.js +6 -1
- package/dist/eventbus/event-message-classes/index.js.map +1 -1
- package/dist/eventbus/message-event-bus/message-event-bus.d.ts +2 -0
- package/dist/eventbus/message-event-bus/message-event-bus.js +4 -0
- package/dist/eventbus/message-event-bus/message-event-bus.js.map +1 -1
- package/dist/events/maps/relay.event-map.d.ts +16 -0
- package/dist/events/relays/log-streaming.event-relay.d.ts +2 -0
- package/dist/events/relays/log-streaming.event-relay.js +20 -4
- package/dist/events/relays/log-streaming.event-relay.js.map +1 -1
- package/dist/events/relays/telemetry.event-relay.js +3 -2
- package/dist/events/relays/telemetry.event-relay.js.map +1 -1
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js +16 -9
- package/dist/execution-lifecycle/execution-lifecycle-hooks.js.map +1 -1
- package/dist/executions/execution.service.d.ts +2 -2
- package/dist/executions/execution.service.js +7 -6
- package/dist/executions/execution.service.js.map +1 -1
- package/dist/executions/executions.controller.d.ts +1 -1
- package/dist/executions/executions.controller.js +2 -1
- package/dist/executions/executions.controller.js.map +1 -1
- package/dist/ldap.ee/ldap.service.ee.js +7 -13
- package/dist/ldap.ee/ldap.service.ee.js.map +1 -1
- package/dist/manual-execution.service.js +5 -8
- package/dist/manual-execution.service.js.map +1 -1
- package/dist/mfa/helpers.js +3 -7
- package/dist/mfa/helpers.js.map +1 -1
- package/dist/modules/external-secrets.ee/external-secrets.module.d.ts +4 -0
- package/dist/modules/external-secrets.ee/external-secrets.module.js +60 -0
- package/dist/modules/external-secrets.ee/external-secrets.module.js.map +1 -0
- package/dist/modules/insights/database/entities/insights-raw.d.ts +1 -1
- package/dist/modules/insights/database/entities/insights-shared.d.ts +2 -2
- package/dist/modules/insights/database/repositories/insights-by-period.repository.d.ts +4 -4
- package/dist/modules/insights/insights-collection.service.js +1 -0
- package/dist/modules/insights/insights-collection.service.js.map +1 -1
- package/dist/modules/insights/insights-helpers.d.ts +4 -0
- package/dist/modules/insights/insights-helpers.js +26 -0
- package/dist/modules/insights/insights-helpers.js.map +1 -0
- package/dist/modules/insights/insights-pruning.service.js +2 -2
- package/dist/modules/insights/insights-pruning.service.js.map +1 -1
- package/dist/modules/insights/insights.module.d.ts +7 -6
- package/dist/modules/insights/insights.module.js +48 -10
- package/dist/modules/insights/insights.module.js.map +1 -1
- package/dist/modules/insights/insights.service.d.ts +3 -4
- package/dist/modules/insights/insights.service.js +4 -31
- package/dist/modules/insights/insights.service.js.map +1 -1
- package/dist/modules/module-registry.d.ts +8 -2
- package/dist/modules/module-registry.js +23 -5
- package/dist/modules/module-registry.js.map +1 -1
- package/dist/modules/modules.config.d.ts +2 -2
- package/dist/modules/modules.config.js +2 -2
- package/dist/modules/modules.config.js.map +1 -1
- package/dist/permissions.ee/check-access.js +12 -6
- package/dist/permissions.ee/check-access.js.map +1 -1
- package/dist/public-api/v1/shared/middlewares/global.middleware.js +11 -2
- package/dist/public-api/v1/shared/middlewares/global.middleware.js.map +1 -1
- package/dist/requests.d.ts +1 -0
- package/dist/security-audit/risk-reporters/instance-risk-reporter.js +1 -2
- package/dist/security-audit/risk-reporters/instance-risk-reporter.js.map +1 -1
- package/dist/server.js +10 -0
- package/dist/server.js.map +1 -1
- package/dist/services/frontend.service.d.ts +1 -3
- package/dist/services/frontend.service.js +22 -12
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/project.service.ee.d.ts +1 -1
- package/dist/services/project.service.ee.js +2 -2
- package/dist/services/project.service.ee.js.map +1 -1
- package/dist/services/user.service.js +2 -2
- package/dist/services/user.service.js.map +1 -1
- package/dist/sso.ee/oidc/constants.d.ts +3 -0
- package/dist/sso.ee/oidc/constants.js +7 -0
- package/dist/sso.ee/oidc/constants.js.map +1 -0
- package/dist/sso.ee/oidc/oidc.service.ee.d.ts +31 -0
- package/dist/sso.ee/oidc/oidc.service.ee.js +235 -0
- package/dist/sso.ee/oidc/oidc.service.ee.js.map +1 -0
- package/dist/sso.ee/oidc/routes/oidc.controller.ee.d.ts +18 -0
- package/dist/sso.ee/oidc/routes/oidc.controller.ee.js +88 -0
- package/dist/sso.ee/oidc/routes/oidc.controller.ee.js.map +1 -0
- package/dist/sso.ee/saml/saml-helpers.js +6 -12
- package/dist/sso.ee/saml/saml-helpers.js.map +1 -1
- package/dist/sso.ee/sso-helpers.d.ts +1 -0
- package/dist/sso.ee/sso-helpers.js +4 -0
- package/dist/sso.ee/sso-helpers.js.map +1 -1
- package/dist/task-runners/default-task-runner-disconnect-analyzer.js +3 -6
- package/dist/task-runners/default-task-runner-disconnect-analyzer.js.map +1 -1
- package/dist/task-runners/task-broker/task-broker.service.d.ts +3 -2
- package/dist/task-runners/task-broker/task-broker.service.js +5 -7
- package/dist/task-runners/task-broker/task-broker.service.js.map +1 -1
- package/dist/task-runners/task-managers/local-task-requester.d.ts +2 -1
- package/dist/task-runners/task-managers/local-task-requester.js +4 -3
- package/dist/task-runners/task-managers/local-task-requester.js.map +1 -1
- package/dist/task-runners/task-managers/task-requester.d.ts +3 -1
- package/dist/task-runners/task-managers/task-requester.js +17 -2
- package/dist/task-runners/task-managers/task-requester.js.map +1 -1
- package/package.json +18 -17
- package/dist/mfa/constants.d.ts +0 -1
- package/dist/mfa/constants.js +0 -5
- package/dist/mfa/constants.js.map +0 -1
- package/dist/modules/external-secrets.ee/external-secrets.ee.module.d.ts +0 -10
- package/dist/modules/external-secrets.ee/external-secrets.ee.module.js +0 -34
- package/dist/modules/external-secrets.ee/external-secrets.ee.module.js.map +0 -1
- package/dist/modules/insights/insights.pre-init.d.ts +0 -2
- package/dist/modules/insights/insights.pre-init.js +0 -6
- package/dist/modules/insights/insights.pre-init.js.map +0 -1
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { OidcConfigDto } from '@n8n/api-types';
|
|
2
|
+
import { Logger } from '@n8n/backend-common';
|
|
3
|
+
import { GlobalConfig } from '@n8n/config';
|
|
4
|
+
import { AuthIdentityRepository, SettingsRepository, type User, UserRepository } from '@n8n/db';
|
|
5
|
+
import { Cipher } from 'n8n-core';
|
|
6
|
+
import { UrlService } from '../../services/url.service';
|
|
7
|
+
type OidcRuntimeConfig = Pick<OidcConfigDto, 'clientId' | 'clientSecret' | 'loginEnabled'> & {
|
|
8
|
+
discoveryEndpoint: URL;
|
|
9
|
+
};
|
|
10
|
+
export declare class OidcService {
|
|
11
|
+
private readonly settingsRepository;
|
|
12
|
+
private readonly authIdentityRepository;
|
|
13
|
+
private readonly urlService;
|
|
14
|
+
private readonly globalConfig;
|
|
15
|
+
private readonly userRepository;
|
|
16
|
+
private readonly cipher;
|
|
17
|
+
private readonly logger;
|
|
18
|
+
private oidcConfig;
|
|
19
|
+
constructor(settingsRepository: SettingsRepository, authIdentityRepository: AuthIdentityRepository, urlService: UrlService, globalConfig: GlobalConfig, userRepository: UserRepository, cipher: Cipher, logger: Logger);
|
|
20
|
+
init(): Promise<void>;
|
|
21
|
+
getCallbackUrl(): string;
|
|
22
|
+
getRedactedConfig(): OidcConfigDto;
|
|
23
|
+
generateLoginUrl(): Promise<URL>;
|
|
24
|
+
loginUser(callbackUrl: URL): Promise<User>;
|
|
25
|
+
loadConfig(decryptSecret?: boolean): Promise<OidcRuntimeConfig>;
|
|
26
|
+
updateConfig(newConfig: OidcConfigDto): Promise<void>;
|
|
27
|
+
private setOidcLoginEnabled;
|
|
28
|
+
private cachedOidcConfiguration;
|
|
29
|
+
private getOidcConfiguration;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
43
|
+
};
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.OidcService = void 0;
|
|
49
|
+
const backend_common_1 = require("@n8n/backend-common");
|
|
50
|
+
const config_1 = require("@n8n/config");
|
|
51
|
+
const db_1 = require("@n8n/db");
|
|
52
|
+
const di_1 = require("@n8n/di");
|
|
53
|
+
const n8n_core_1 = require("n8n-core");
|
|
54
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
55
|
+
const client = __importStar(require("openid-client"));
|
|
56
|
+
const config_2 = __importDefault(require("../../config"));
|
|
57
|
+
const bad_request_error_1 = require("../../errors/response-errors/bad-request.error");
|
|
58
|
+
const forbidden_error_1 = require("../../errors/response-errors/forbidden.error");
|
|
59
|
+
const internal_server_error_1 = require("../../errors/response-errors/internal-server.error");
|
|
60
|
+
const url_service_1 = require("../../services/url.service");
|
|
61
|
+
const constants_1 = require("./constants");
|
|
62
|
+
const sso_helpers_1 = require("../sso-helpers");
|
|
63
|
+
const DEFAULT_OIDC_CONFIG = {
|
|
64
|
+
clientId: '',
|
|
65
|
+
clientSecret: '',
|
|
66
|
+
discoveryEndpoint: '',
|
|
67
|
+
loginEnabled: false,
|
|
68
|
+
};
|
|
69
|
+
const DEFAULT_OIDC_RUNTIME_CONFIG = {
|
|
70
|
+
...DEFAULT_OIDC_CONFIG,
|
|
71
|
+
discoveryEndpoint: new URL('http://n8n.io/not-set'),
|
|
72
|
+
};
|
|
73
|
+
let OidcService = class OidcService {
|
|
74
|
+
constructor(settingsRepository, authIdentityRepository, urlService, globalConfig, userRepository, cipher, logger) {
|
|
75
|
+
this.settingsRepository = settingsRepository;
|
|
76
|
+
this.authIdentityRepository = authIdentityRepository;
|
|
77
|
+
this.urlService = urlService;
|
|
78
|
+
this.globalConfig = globalConfig;
|
|
79
|
+
this.userRepository = userRepository;
|
|
80
|
+
this.cipher = cipher;
|
|
81
|
+
this.logger = logger;
|
|
82
|
+
this.oidcConfig = DEFAULT_OIDC_RUNTIME_CONFIG;
|
|
83
|
+
}
|
|
84
|
+
async init() {
|
|
85
|
+
this.oidcConfig = await this.loadConfig(true);
|
|
86
|
+
console.log(`OIDC login is ${this.oidcConfig.loginEnabled ? 'enabled' : 'disabled'}.`);
|
|
87
|
+
await this.setOidcLoginEnabled(this.oidcConfig.loginEnabled);
|
|
88
|
+
}
|
|
89
|
+
getCallbackUrl() {
|
|
90
|
+
return `${this.urlService.getInstanceBaseUrl()}/${this.globalConfig.endpoints.rest}/sso/oidc/callback`;
|
|
91
|
+
}
|
|
92
|
+
getRedactedConfig() {
|
|
93
|
+
return {
|
|
94
|
+
...this.oidcConfig,
|
|
95
|
+
discoveryEndpoint: this.oidcConfig.discoveryEndpoint.toString(),
|
|
96
|
+
clientSecret: constants_1.OIDC_CLIENT_SECRET_REDACTED_VALUE,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
async generateLoginUrl() {
|
|
100
|
+
const configuration = await this.getOidcConfiguration();
|
|
101
|
+
const authorizationURL = client.buildAuthorizationUrl(configuration, {
|
|
102
|
+
redirect_uri: this.getCallbackUrl(),
|
|
103
|
+
response_type: 'code',
|
|
104
|
+
scope: 'openid email profile',
|
|
105
|
+
prompt: 'select_account',
|
|
106
|
+
});
|
|
107
|
+
return authorizationURL;
|
|
108
|
+
}
|
|
109
|
+
async loginUser(callbackUrl) {
|
|
110
|
+
const configuration = await this.getOidcConfiguration();
|
|
111
|
+
const tokens = await client.authorizationCodeGrant(configuration, callbackUrl);
|
|
112
|
+
const claims = tokens.claims();
|
|
113
|
+
if (!claims) {
|
|
114
|
+
throw new forbidden_error_1.ForbiddenError('No claims found in the OIDC token');
|
|
115
|
+
}
|
|
116
|
+
const userInfo = await client.fetchUserInfo(configuration, tokens.access_token, claims.sub);
|
|
117
|
+
if (!userInfo.email) {
|
|
118
|
+
throw new bad_request_error_1.BadRequestError('An email is required');
|
|
119
|
+
}
|
|
120
|
+
if (!userInfo.email_verified) {
|
|
121
|
+
throw new bad_request_error_1.BadRequestError('Email needs to be verified');
|
|
122
|
+
}
|
|
123
|
+
const openidUser = await this.authIdentityRepository.findOne({
|
|
124
|
+
where: { providerId: claims.sub, providerType: 'oidc' },
|
|
125
|
+
relations: ['user'],
|
|
126
|
+
});
|
|
127
|
+
if (openidUser) {
|
|
128
|
+
return openidUser.user;
|
|
129
|
+
}
|
|
130
|
+
const foundUser = await this.userRepository.findOneBy({ email: userInfo.email });
|
|
131
|
+
if (foundUser) {
|
|
132
|
+
throw new bad_request_error_1.BadRequestError('User already exist with that email.');
|
|
133
|
+
}
|
|
134
|
+
return await this.userRepository.manager.transaction(async (trx) => {
|
|
135
|
+
const { user } = await this.userRepository.createUserWithProject({
|
|
136
|
+
firstName: userInfo.given_name,
|
|
137
|
+
lastName: userInfo.family_name,
|
|
138
|
+
email: userInfo.email,
|
|
139
|
+
authIdentities: [],
|
|
140
|
+
role: 'global:member',
|
|
141
|
+
password: 'no password set',
|
|
142
|
+
}, trx);
|
|
143
|
+
await trx.save(trx.create(db_1.AuthIdentity, {
|
|
144
|
+
providerId: claims.sub,
|
|
145
|
+
providerType: 'oidc',
|
|
146
|
+
userId: user.id,
|
|
147
|
+
}));
|
|
148
|
+
return user;
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
async loadConfig(decryptSecret = false) {
|
|
152
|
+
const currentConfig = await this.settingsRepository.findOneBy({
|
|
153
|
+
key: constants_1.OIDC_PREFERENCES_DB_KEY,
|
|
154
|
+
});
|
|
155
|
+
if (currentConfig) {
|
|
156
|
+
try {
|
|
157
|
+
const oidcConfig = (0, n8n_workflow_1.jsonParse)(currentConfig.value);
|
|
158
|
+
const discoveryUrl = new URL(oidcConfig.discoveryEndpoint);
|
|
159
|
+
if (oidcConfig.clientSecret && decryptSecret) {
|
|
160
|
+
oidcConfig.clientSecret = this.cipher.decrypt(oidcConfig.clientSecret);
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
...oidcConfig,
|
|
164
|
+
discoveryEndpoint: discoveryUrl,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
this.logger.warn('Failed to load OIDC configuration from database, falling back to default configuration.', { error });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
await this.settingsRepository.save({
|
|
172
|
+
key: constants_1.OIDC_PREFERENCES_DB_KEY,
|
|
173
|
+
value: JSON.stringify(DEFAULT_OIDC_CONFIG),
|
|
174
|
+
loadOnStartup: true,
|
|
175
|
+
});
|
|
176
|
+
return DEFAULT_OIDC_RUNTIME_CONFIG;
|
|
177
|
+
}
|
|
178
|
+
async updateConfig(newConfig) {
|
|
179
|
+
let discoveryEndpoint;
|
|
180
|
+
try {
|
|
181
|
+
discoveryEndpoint = new URL(newConfig.discoveryEndpoint);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
throw new bad_request_error_1.BadRequestError('Provided discovery endpoint is not a valid URL');
|
|
185
|
+
}
|
|
186
|
+
if (newConfig.clientSecret === constants_1.OIDC_CLIENT_SECRET_REDACTED_VALUE) {
|
|
187
|
+
newConfig.clientSecret = this.oidcConfig.clientSecret;
|
|
188
|
+
}
|
|
189
|
+
await this.settingsRepository.update({
|
|
190
|
+
key: constants_1.OIDC_PREFERENCES_DB_KEY,
|
|
191
|
+
}, {
|
|
192
|
+
value: JSON.stringify({
|
|
193
|
+
...newConfig,
|
|
194
|
+
clientSecret: this.cipher.encrypt(newConfig.clientSecret),
|
|
195
|
+
}),
|
|
196
|
+
});
|
|
197
|
+
this.oidcConfig = {
|
|
198
|
+
...newConfig,
|
|
199
|
+
discoveryEndpoint,
|
|
200
|
+
};
|
|
201
|
+
await this.setOidcLoginEnabled(this.oidcConfig.loginEnabled);
|
|
202
|
+
}
|
|
203
|
+
async setOidcLoginEnabled(enabled) {
|
|
204
|
+
const currentAuthenticationMethod = (0, sso_helpers_1.getCurrentAuthenticationMethod)();
|
|
205
|
+
if (enabled && !(0, sso_helpers_1.isEmailCurrentAuthenticationMethod)() && !(0, sso_helpers_1.isOidcCurrentAuthenticationMethod)()) {
|
|
206
|
+
throw new internal_server_error_1.InternalServerError(`Cannot switch OIDC login enabled state when an authentication method other than email or OIDC is active (current: ${currentAuthenticationMethod})`);
|
|
207
|
+
}
|
|
208
|
+
const targetAuthenticationMethod = !enabled && currentAuthenticationMethod === 'oidc' ? 'email' : currentAuthenticationMethod;
|
|
209
|
+
config_2.default.set(constants_1.OIDC_LOGIN_ENABLED, enabled);
|
|
210
|
+
await (0, sso_helpers_1.setCurrentAuthenticationMethod)(enabled ? 'oidc' : targetAuthenticationMethod);
|
|
211
|
+
}
|
|
212
|
+
async getOidcConfiguration() {
|
|
213
|
+
const now = Date.now();
|
|
214
|
+
if (this.cachedOidcConfiguration === undefined ||
|
|
215
|
+
now >= this.cachedOidcConfiguration.validTill.getTime()) {
|
|
216
|
+
this.cachedOidcConfiguration = {
|
|
217
|
+
configuration: client.discovery(this.oidcConfig.discoveryEndpoint, this.oidcConfig.clientId, this.oidcConfig.clientSecret),
|
|
218
|
+
validTill: new Date(Date.now() + 60 * 60 * 1000),
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return await this.cachedOidcConfiguration.configuration;
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
exports.OidcService = OidcService;
|
|
225
|
+
exports.OidcService = OidcService = __decorate([
|
|
226
|
+
(0, di_1.Service)(),
|
|
227
|
+
__metadata("design:paramtypes", [db_1.SettingsRepository,
|
|
228
|
+
db_1.AuthIdentityRepository,
|
|
229
|
+
url_service_1.UrlService,
|
|
230
|
+
config_1.GlobalConfig,
|
|
231
|
+
db_1.UserRepository,
|
|
232
|
+
n8n_core_1.Cipher,
|
|
233
|
+
backend_common_1.Logger])
|
|
234
|
+
], OidcService);
|
|
235
|
+
//# sourceMappingURL=oidc.service.ee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.service.ee.js","sourceRoot":"","sources":["../../../src/sso.ee/oidc/oidc.service.ee.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { OidcConfigDto } from '@n8n/api-types';
|
|
2
|
+
import { Request, Response } from 'express';
|
|
3
|
+
import { AuthService } from '../../../auth/auth.service';
|
|
4
|
+
import { AuthenticatedRequest } from '../../../requests';
|
|
5
|
+
import { UrlService } from '../../../services/url.service';
|
|
6
|
+
import { OidcService } from '../oidc.service.ee';
|
|
7
|
+
export declare class OidcController {
|
|
8
|
+
private readonly oidcService;
|
|
9
|
+
private readonly authService;
|
|
10
|
+
private readonly urlService;
|
|
11
|
+
constructor(oidcService: OidcService, authService: AuthService, urlService: UrlService);
|
|
12
|
+
retrieveConfiguration(_req: AuthenticatedRequest): Promise<Pick<OidcConfigDto, "loginEnabled" | "clientId" | "clientSecret"> & {
|
|
13
|
+
discoveryEndpoint: URL;
|
|
14
|
+
}>;
|
|
15
|
+
saveConfiguration(_req: AuthenticatedRequest, _res: Response, payload: OidcConfigDto): Promise<OidcConfigDto>;
|
|
16
|
+
redirectToAuthProvider(_req: Request, res: Response): Promise<void>;
|
|
17
|
+
callbackHandler(req: Request, res: Response): Promise<void>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OidcController = void 0;
|
|
16
|
+
const api_types_1 = require("@n8n/api-types");
|
|
17
|
+
const decorators_1 = require("@n8n/decorators");
|
|
18
|
+
const auth_service_1 = require("../../../auth/auth.service");
|
|
19
|
+
const url_service_1 = require("../../../services/url.service");
|
|
20
|
+
const constants_1 = require("../constants");
|
|
21
|
+
const oidc_service_ee_1 = require("../oidc.service.ee");
|
|
22
|
+
let OidcController = class OidcController {
|
|
23
|
+
constructor(oidcService, authService, urlService) {
|
|
24
|
+
this.oidcService = oidcService;
|
|
25
|
+
this.authService = authService;
|
|
26
|
+
this.urlService = urlService;
|
|
27
|
+
}
|
|
28
|
+
async retrieveConfiguration(_req) {
|
|
29
|
+
const config = await this.oidcService.loadConfig();
|
|
30
|
+
if (config.clientSecret) {
|
|
31
|
+
config.clientSecret = constants_1.OIDC_CLIENT_SECRET_REDACTED_VALUE;
|
|
32
|
+
}
|
|
33
|
+
return config;
|
|
34
|
+
}
|
|
35
|
+
async saveConfiguration(_req, _res, payload) {
|
|
36
|
+
await this.oidcService.updateConfig(payload);
|
|
37
|
+
const config = this.oidcService.getRedactedConfig();
|
|
38
|
+
return config;
|
|
39
|
+
}
|
|
40
|
+
async redirectToAuthProvider(_req, res) {
|
|
41
|
+
const authorizationURL = await this.oidcService.generateLoginUrl();
|
|
42
|
+
res.redirect(authorizationURL.toString());
|
|
43
|
+
}
|
|
44
|
+
async callbackHandler(req, res) {
|
|
45
|
+
const fullUrl = `${this.urlService.getInstanceBaseUrl()}${req.originalUrl}`;
|
|
46
|
+
const callbackUrl = new URL(fullUrl);
|
|
47
|
+
const user = await this.oidcService.loginUser(callbackUrl);
|
|
48
|
+
this.authService.issueCookie(res, user);
|
|
49
|
+
res.redirect('/');
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.OidcController = OidcController;
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, decorators_1.Get)('/config'),
|
|
55
|
+
(0, decorators_1.Licensed)('feat:oidc'),
|
|
56
|
+
(0, decorators_1.GlobalScope)('oidc:manage'),
|
|
57
|
+
__metadata("design:type", Function),
|
|
58
|
+
__metadata("design:paramtypes", [Object]),
|
|
59
|
+
__metadata("design:returntype", Promise)
|
|
60
|
+
], OidcController.prototype, "retrieveConfiguration", null);
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, decorators_1.Post)('/config'),
|
|
63
|
+
(0, decorators_1.Licensed)('feat:oidc'),
|
|
64
|
+
(0, decorators_1.GlobalScope)('oidc:manage'),
|
|
65
|
+
__param(2, decorators_1.Body),
|
|
66
|
+
__metadata("design:type", Function),
|
|
67
|
+
__metadata("design:paramtypes", [Object, Object, api_types_1.OidcConfigDto]),
|
|
68
|
+
__metadata("design:returntype", Promise)
|
|
69
|
+
], OidcController.prototype, "saveConfiguration", null);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, decorators_1.Get)('/login', { skipAuth: true }),
|
|
72
|
+
__metadata("design:type", Function),
|
|
73
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
74
|
+
__metadata("design:returntype", Promise)
|
|
75
|
+
], OidcController.prototype, "redirectToAuthProvider", null);
|
|
76
|
+
__decorate([
|
|
77
|
+
(0, decorators_1.Get)('/callback', { skipAuth: true }),
|
|
78
|
+
__metadata("design:type", Function),
|
|
79
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
80
|
+
__metadata("design:returntype", Promise)
|
|
81
|
+
], OidcController.prototype, "callbackHandler", null);
|
|
82
|
+
exports.OidcController = OidcController = __decorate([
|
|
83
|
+
(0, decorators_1.RestController)('/sso/oidc'),
|
|
84
|
+
__metadata("design:paramtypes", [oidc_service_ee_1.OidcService,
|
|
85
|
+
auth_service_1.AuthService,
|
|
86
|
+
url_service_1.UrlService])
|
|
87
|
+
], OidcController);
|
|
88
|
+
//# sourceMappingURL=oidc.controller.ee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.controller.ee.js","sourceRoot":"","sources":["../../../../src/sso.ee/oidc/routes/oidc.controller.ee.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,8CAA+C;AAC/C,gDAAyF;AAGzF,sDAAkD;AAElD,wDAAoD;AAEpD,4CAAiE;AACjE,wDAAiD;AAG1C,IAAM,cAAc,GAApB,MAAM,cAAc;IAC1B,YACkB,WAAwB,EACxB,WAAwB,EACxB,UAAsB;QAFtB,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAa;QACxB,eAAU,GAAV,UAAU,CAAY;IACrC,CAAC;IAKE,AAAN,KAAK,CAAC,qBAAqB,CAAC,IAA0B;QACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;QACnD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACzB,MAAM,CAAC,YAAY,GAAG,6CAAiC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAKK,AAAN,KAAK,CAAC,iBAAiB,CACtB,IAA0B,EAC1B,IAAc,EACR,OAAsB;QAE5B,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC;IACf,CAAC;IAGK,AAAN,KAAK,CAAC,sBAAsB,CAAC,IAAa,EAAE,GAAa;QACxD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAEnE,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IAGK,AAAN,KAAK,CAAC,eAAe,CAAC,GAAY,EAAE,GAAa;QAChD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;QAC5E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE3D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAExC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;CACD,CAAA;AAjDY,wCAAc;AAUpB;IAHL,IAAA,gBAAG,EAAC,SAAS,CAAC;IACd,IAAA,qBAAQ,EAAC,WAAW,CAAC;IACrB,IAAA,wBAAW,EAAC,aAAa,CAAC;;;;2DAO1B;AAKK;IAHL,IAAA,iBAAI,EAAC,SAAS,CAAC;IACf,IAAA,qBAAQ,EAAC,WAAW,CAAC;IACrB,IAAA,wBAAW,EAAC,aAAa,CAAC;IAIzB,WAAA,iBAAI,CAAA;;qDAAU,yBAAa;;uDAK5B;AAGK;IADL,IAAA,gBAAG,EAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;;;4DAKjC;AAGK;IADL,IAAA,gBAAG,EAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;;;qDAUpC;yBAhDW,cAAc;IAD1B,IAAA,2BAAc,EAAC,WAAW,CAAC;qCAGI,6BAAW;QACX,0BAAW;QACZ,wBAAU;GAJ5B,cAAc,CAiD1B"}
|
|
@@ -32,19 +32,13 @@ function getSamlLoginLabel() {
|
|
|
32
32
|
return config_1.default.getEnv(constants_1.SAML_LOGIN_LABEL);
|
|
33
33
|
}
|
|
34
34
|
async function setSamlLoginEnabled(enabled) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
await (0, sso_helpers_1.setCurrentAuthenticationMethod)('saml');
|
|
39
|
-
}
|
|
40
|
-
else if (!enabled) {
|
|
41
|
-
config_1.default.set(constants_1.SAML_LOGIN_ENABLED, false);
|
|
42
|
-
await (0, sso_helpers_1.setCurrentAuthenticationMethod)('email');
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
throw new internal_server_error_1.InternalServerError(`Cannot switch SAML login enabled state when an authentication method other than email or saml is active (current: ${(0, sso_helpers_1.getCurrentAuthenticationMethod)()})`);
|
|
35
|
+
const currentAuthenticationMethod = (0, sso_helpers_1.getCurrentAuthenticationMethod)();
|
|
36
|
+
if (enabled && !(0, sso_helpers_1.isEmailCurrentAuthenticationMethod)() && !(0, sso_helpers_1.isSamlCurrentAuthenticationMethod)()) {
|
|
37
|
+
throw new internal_server_error_1.InternalServerError(`Cannot switch SAML login enabled state when an authentication method other than email or saml is active (current: ${currentAuthenticationMethod})`);
|
|
47
38
|
}
|
|
39
|
+
const targetAuthenticationMethod = !enabled && currentAuthenticationMethod === 'saml' ? 'email' : currentAuthenticationMethod;
|
|
40
|
+
config_1.default.set(constants_1.SAML_LOGIN_ENABLED, enabled);
|
|
41
|
+
await (0, sso_helpers_1.setCurrentAuthenticationMethod)(enabled ? 'saml' : targetAuthenticationMethod);
|
|
48
42
|
}
|
|
49
43
|
function setSamlLoginLabel(label) {
|
|
50
44
|
config_1.default.set(constants_1.SAML_LOGIN_LABEL, label);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saml-helpers.js","sourceRoot":"","sources":["../../../src/sso.ee/saml/saml-helpers.ts"],"names":[],"mappings":";;;;;;AA0BA,gDAEC;AAED,8CAEC;AAGD,
|
|
1
|
+
{"version":3,"file":"saml-helpers.js","sourceRoot":"","sources":["../../../src/sso.ee/saml/saml-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export declare function setCurrentAuthenticationMethod(authenticationMethod: Aut
|
|
|
3
3
|
export declare function getCurrentAuthenticationMethod(): AuthProviderType;
|
|
4
4
|
export declare function isSamlCurrentAuthenticationMethod(): boolean;
|
|
5
5
|
export declare function isLdapCurrentAuthenticationMethod(): boolean;
|
|
6
|
+
export declare function isOidcCurrentAuthenticationMethod(): boolean;
|
|
6
7
|
export declare function isEmailCurrentAuthenticationMethod(): boolean;
|
|
7
8
|
export declare function isSsoJustInTimeProvisioningEnabled(): boolean;
|
|
8
9
|
export declare function doRedirectUsersFromLoginToSsoFlow(): boolean;
|
|
@@ -7,6 +7,7 @@ exports.setCurrentAuthenticationMethod = setCurrentAuthenticationMethod;
|
|
|
7
7
|
exports.getCurrentAuthenticationMethod = getCurrentAuthenticationMethod;
|
|
8
8
|
exports.isSamlCurrentAuthenticationMethod = isSamlCurrentAuthenticationMethod;
|
|
9
9
|
exports.isLdapCurrentAuthenticationMethod = isLdapCurrentAuthenticationMethod;
|
|
10
|
+
exports.isOidcCurrentAuthenticationMethod = isOidcCurrentAuthenticationMethod;
|
|
10
11
|
exports.isEmailCurrentAuthenticationMethod = isEmailCurrentAuthenticationMethod;
|
|
11
12
|
exports.isSsoJustInTimeProvisioningEnabled = isSsoJustInTimeProvisioningEnabled;
|
|
12
13
|
exports.doRedirectUsersFromLoginToSsoFlow = doRedirectUsersFromLoginToSsoFlow;
|
|
@@ -30,6 +31,9 @@ function isSamlCurrentAuthenticationMethod() {
|
|
|
30
31
|
function isLdapCurrentAuthenticationMethod() {
|
|
31
32
|
return getCurrentAuthenticationMethod() === 'ldap';
|
|
32
33
|
}
|
|
34
|
+
function isOidcCurrentAuthenticationMethod() {
|
|
35
|
+
return getCurrentAuthenticationMethod() === 'oidc';
|
|
36
|
+
}
|
|
33
37
|
function isEmailCurrentAuthenticationMethod() {
|
|
34
38
|
return getCurrentAuthenticationMethod() === 'email';
|
|
35
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso-helpers.js","sourceRoot":"","sources":["../../src/sso.ee/sso-helpers.ts"],"names":[],"mappings":";;;;;AAWA,wEAYC;AAED,wEAEC;AAED,8EAEC;AAED,8EAEC;AAED,gFAEC;AAED,gFAEC;AAED,8EAEC;
|
|
1
|
+
{"version":3,"file":"sso-helpers.js","sourceRoot":"","sources":["../../src/sso.ee/sso-helpers.ts"],"names":[],"mappings":";;;;;AAWA,wEAYC;AAED,wEAEC;AAED,8EAEC;AAED,8EAEC;AAED,8EAEC;AAED,gFAEC;AAED,gFAEC;AAED,8EAEC;AAnDD,gCAAoE;AACpE,gCAAoC;AAEpC,sDAA8B;AAQvB,KAAK,UAAU,8BAA8B,CACnD,oBAAsC;IAEtC,gBAAM,CAAC,GAAG,CAAC,qCAAqC,EAAE,oBAAoB,CAAC,CAAC;IACxE,MAAM,cAAS,CAAC,GAAG,CAAC,uBAAkB,CAAC,CAAC,IAAI,CAC3C;QACC,GAAG,EAAE,qCAAqC;QAC1C,KAAK,EAAE,oBAAoB;QAC3B,aAAa,EAAE,IAAI;KACnB,EACD,EAAE,WAAW,EAAE,KAAK,EAAE,CACtB,CAAC;AACH,CAAC;AAED,SAAgB,8BAA8B;IAC7C,OAAO,gBAAM,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,iCAAiC;IAChD,OAAO,8BAA8B,EAAE,KAAK,MAAM,CAAC;AACpD,CAAC;AAED,SAAgB,iCAAiC;IAChD,OAAO,8BAA8B,EAAE,KAAK,MAAM,CAAC;AACpD,CAAC;AAED,SAAgB,iCAAiC;IAChD,OAAO,8BAA8B,EAAE,KAAK,MAAM,CAAC;AACpD,CAAC;AAED,SAAgB,kCAAkC;IACjD,OAAO,8BAA8B,EAAE,KAAK,OAAO,CAAC;AACrD,CAAC;AAED,SAAgB,kCAAkC;IACjD,OAAO,gBAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,iCAAiC;IAChD,OAAO,gBAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -5,23 +5,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
9
|
exports.DefaultTaskRunnerDisconnectAnalyzer = void 0;
|
|
10
|
+
const config_1 = require("@n8n/config");
|
|
13
11
|
const di_1 = require("@n8n/di");
|
|
14
|
-
const config_1 = __importDefault(require("../config"));
|
|
15
12
|
const task_runner_disconnected_error_1 = require("./errors/task-runner-disconnected-error");
|
|
16
13
|
const task_runner_failed_heartbeat_error_1 = require("./errors/task-runner-failed-heartbeat.error");
|
|
17
14
|
let DefaultTaskRunnerDisconnectAnalyzer = class DefaultTaskRunnerDisconnectAnalyzer {
|
|
18
15
|
get isCloudDeployment() {
|
|
19
|
-
return
|
|
16
|
+
return di_1.Container.get(config_1.GlobalConfig).deployment.type === 'cloud';
|
|
20
17
|
}
|
|
21
18
|
async toDisconnectError(opts) {
|
|
22
19
|
const { reason, heartbeatInterval } = opts;
|
|
23
20
|
if (reason === 'failed-heartbeat-check' && heartbeatInterval) {
|
|
24
|
-
return new task_runner_failed_heartbeat_error_1.TaskRunnerFailedHeartbeatError(heartbeatInterval,
|
|
21
|
+
return new task_runner_failed_heartbeat_error_1.TaskRunnerFailedHeartbeatError(heartbeatInterval, di_1.Container.get(config_1.GlobalConfig).deployment.type !== 'cloud');
|
|
25
22
|
}
|
|
26
23
|
return new task_runner_disconnected_error_1.TaskRunnerDisconnectedError(opts.runnerId ?? 'Unknown runner ID', this.isCloudDeployment);
|
|
27
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-task-runner-disconnect-analyzer.js","sourceRoot":"","sources":["../../src/task-runners/default-task-runner-disconnect-analyzer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default-task-runner-disconnect-analyzer.js","sourceRoot":"","sources":["../../src/task-runners/default-task-runner-disconnect-analyzer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,wCAA2C;AAC3C,gCAA6C;AAO7C,4FAAsF;AACtF,oGAA6F;AAOtF,IAAM,mCAAmC,GAAzC,MAAM,mCAAmC;IAC/C,IAAI,iBAAiB;QACpB,OAAO,cAAS,CAAC,GAAG,CAAC,qBAAY,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAA4B;QACnD,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;QAE3C,IAAI,MAAM,KAAK,wBAAwB,IAAI,iBAAiB,EAAE,CAAC;YAC9D,OAAO,IAAI,mEAA8B,CACxC,iBAAiB,EACjB,cAAS,CAAC,GAAG,CAAC,qBAAY,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CACvD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,4DAA2B,CACrC,IAAI,CAAC,QAAQ,IAAI,mBAAmB,EACpC,IAAI,CAAC,iBAAiB,CACtB,CAAC;IACH,CAAC;CACD,CAAA;AApBY,kFAAmC;8CAAnC,mCAAmC;IAD/C,IAAA,YAAO,GAAE;GACG,mCAAmC,CAoB/C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Logger } from '@n8n/backend-common';
|
|
2
|
-
import { TaskRunnersConfig } from '@n8n/config';
|
|
2
|
+
import { GlobalConfig, TaskRunnersConfig } from '@n8n/config';
|
|
3
3
|
import type { BrokerMessage, RequesterMessage, RunnerMessage, TaskResultData } from '@n8n/task-runner';
|
|
4
4
|
import { TaskDeferredError } from '../../task-runners/task-broker/errors/task-deferred.error';
|
|
5
5
|
import { TaskRejectError } from '../../task-runners/task-broker/errors/task-reject.error';
|
|
@@ -38,6 +38,7 @@ export declare class TaskBroker {
|
|
|
38
38
|
private readonly logger;
|
|
39
39
|
private readonly taskRunnersConfig;
|
|
40
40
|
private readonly taskRunnerLifecycleEvents;
|
|
41
|
+
private readonly globalConfig;
|
|
41
42
|
private knownRunners;
|
|
42
43
|
private requesters;
|
|
43
44
|
private tasks;
|
|
@@ -45,7 +46,7 @@ export declare class TaskBroker {
|
|
|
45
46
|
private requesterAcceptRejects;
|
|
46
47
|
private pendingTaskOffers;
|
|
47
48
|
private pendingTaskRequests;
|
|
48
|
-
constructor(logger: Logger, taskRunnersConfig: TaskRunnersConfig, taskRunnerLifecycleEvents: TaskRunnerLifecycleEvents);
|
|
49
|
+
constructor(logger: Logger, taskRunnersConfig: TaskRunnersConfig, taskRunnerLifecycleEvents: TaskRunnerLifecycleEvents, globalConfig: GlobalConfig);
|
|
49
50
|
expireTasks(): void;
|
|
50
51
|
registerRunner(runner: TaskRunner, messageCallback: MessageCallback): void;
|
|
51
52
|
deregisterRunner(runnerId: string, error: Error): void;
|
|
@@ -8,9 +8,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
8
8
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
9
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
10
|
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.TaskBroker = void 0;
|
|
16
13
|
const backend_common_1 = require("@n8n/backend-common");
|
|
@@ -18,7 +15,6 @@ const config_1 = require("@n8n/config");
|
|
|
18
15
|
const di_1 = require("@n8n/di");
|
|
19
16
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
20
17
|
const nanoid_1 = require("nanoid");
|
|
21
|
-
const config_2 = __importDefault(require("../../config"));
|
|
22
18
|
const constants_1 = require("../../constants");
|
|
23
19
|
const task_deferred_error_1 = require("../../task-runners/task-broker/errors/task-deferred.error");
|
|
24
20
|
const task_reject_error_1 = require("../../task-runners/task-broker/errors/task-reject.error");
|
|
@@ -26,10 +22,11 @@ const task_runner_accept_timeout_error_1 = require("../../task-runners/task-brok
|
|
|
26
22
|
const task_runner_execution_timeout_error_1 = require("../../task-runners/task-broker/errors/task-runner-execution-timeout.error");
|
|
27
23
|
const task_runner_lifecycle_events_1 = require("../../task-runners/task-runner-lifecycle-events");
|
|
28
24
|
let TaskBroker = class TaskBroker {
|
|
29
|
-
constructor(logger, taskRunnersConfig, taskRunnerLifecycleEvents) {
|
|
25
|
+
constructor(logger, taskRunnersConfig, taskRunnerLifecycleEvents, globalConfig) {
|
|
30
26
|
this.logger = logger;
|
|
31
27
|
this.taskRunnersConfig = taskRunnersConfig;
|
|
32
28
|
this.taskRunnerLifecycleEvents = taskRunnerLifecycleEvents;
|
|
29
|
+
this.globalConfig = globalConfig;
|
|
33
30
|
this.knownRunners = new Map();
|
|
34
31
|
this.requesters = new Map();
|
|
35
32
|
this.tasks = new Map();
|
|
@@ -333,7 +330,7 @@ let TaskBroker = class TaskBroker {
|
|
|
333
330
|
const { taskTimeout, mode } = this.taskRunnersConfig;
|
|
334
331
|
await this.taskErrorHandler(taskId, new task_runner_execution_timeout_error_1.TaskRunnerExecutionTimeoutError({
|
|
335
332
|
taskTimeout,
|
|
336
|
-
isSelfHosted:
|
|
333
|
+
isSelfHosted: this.globalConfig.deployment.type !== 'cloud',
|
|
337
334
|
mode,
|
|
338
335
|
}));
|
|
339
336
|
}
|
|
@@ -495,6 +492,7 @@ exports.TaskBroker = TaskBroker = __decorate([
|
|
|
495
492
|
(0, di_1.Service)(),
|
|
496
493
|
__metadata("design:paramtypes", [backend_common_1.Logger,
|
|
497
494
|
config_1.TaskRunnersConfig,
|
|
498
|
-
task_runner_lifecycle_events_1.TaskRunnerLifecycleEvents
|
|
495
|
+
task_runner_lifecycle_events_1.TaskRunnerLifecycleEvents,
|
|
496
|
+
config_1.GlobalConfig])
|
|
499
497
|
], TaskBroker);
|
|
500
498
|
//# sourceMappingURL=task-broker.service.js.map
|