n8n 0.167.0 → 0.168.2
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/dist/commands/execute.js +3 -0
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/executeBatch.d.ts +2 -0
- package/dist/commands/executeBatch.js +3 -0
- package/dist/commands/executeBatch.js.map +1 -1
- package/dist/commands/import/credentials.d.ts +10 -0
- package/dist/commands/import/credentials.js +87 -26
- package/dist/commands/import/credentials.js.map +1 -1
- package/dist/commands/import/workflow.d.ts +11 -1
- package/dist/commands/import/workflow.js +109 -48
- package/dist/commands/import/workflow.js.map +1 -1
- package/dist/commands/start.js +25 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/user-management/reset.d.ts +7 -0
- package/dist/commands/user-management/reset.js +66 -0
- package/dist/commands/user-management/reset.js.map +1 -0
- package/dist/commands/worker.js +4 -1
- package/dist/commands/worker.js.map +1 -1
- package/dist/config/index.d.ts +23 -0
- package/dist/config/index.js +92 -4
- package/dist/config/index.js.map +1 -1
- package/dist/src/ActiveWorkflowRunner.d.ts +2 -1
- package/dist/src/ActiveWorkflowRunner.js +44 -24
- package/dist/src/ActiveWorkflowRunner.js.map +1 -1
- package/dist/src/CredentialsHelper.d.ts +10 -2
- package/dist/src/CredentialsHelper.js +40 -11
- package/dist/src/CredentialsHelper.js.map +1 -1
- package/dist/src/Db.d.ts +4 -1
- package/dist/src/Db.js +90 -66
- package/dist/src/Db.js.map +1 -1
- package/dist/src/GenericHelpers.d.ts +6 -0
- package/dist/src/GenericHelpers.js +18 -1
- package/dist/src/GenericHelpers.js.map +1 -1
- package/dist/src/Interfaces.d.ts +74 -9
- package/dist/src/InternalHooks.d.ts +42 -6
- package/dist/src/InternalHooks.js +54 -13
- package/dist/src/InternalHooks.js.map +1 -1
- package/dist/src/ResponseHelper.js +5 -0
- package/dist/src/ResponseHelper.js.map +1 -1
- package/dist/src/Server.d.ts +2 -0
- package/dist/src/Server.js +584 -458
- package/dist/src/Server.js.map +1 -1
- package/dist/src/TagHelpers.d.ts +3 -3
- package/dist/src/TagHelpers.js +5 -24
- package/dist/src/TagHelpers.js.map +1 -1
- package/dist/src/UserManagement/Interfaces.d.ts +34 -0
- package/dist/src/UserManagement/Interfaces.js +3 -0
- package/dist/src/UserManagement/Interfaces.js.map +1 -0
- package/dist/src/UserManagement/UserManagementHelper.d.ts +17 -0
- package/dist/src/UserManagement/UserManagementHelper.js +158 -0
- package/dist/src/UserManagement/UserManagementHelper.js.map +1 -0
- package/dist/src/UserManagement/auth/jwt.d.ts +7 -0
- package/dist/src/UserManagement/auth/jwt.js +57 -0
- package/dist/src/UserManagement/auth/jwt.js.map +1 -0
- package/dist/src/UserManagement/email/Interfaces.d.ts +29 -0
- package/dist/src/UserManagement/email/Interfaces.js +3 -0
- package/dist/src/UserManagement/email/Interfaces.js.map +1 -0
- package/dist/src/UserManagement/email/NodeMailer.d.ts +7 -0
- package/dist/src/UserManagement/email/NodeMailer.js +67 -0
- package/dist/src/UserManagement/email/NodeMailer.js.map +1 -0
- package/dist/src/UserManagement/email/UserManagementMailer.d.ts +9 -0
- package/dist/src/UserManagement/email/UserManagementMailer.js +77 -0
- package/dist/src/UserManagement/email/UserManagementMailer.js.map +1 -0
- package/dist/src/UserManagement/email/index.d.ts +2 -0
- package/dist/src/UserManagement/email/index.js +7 -0
- package/dist/src/UserManagement/email/index.js.map +1 -0
- package/dist/src/UserManagement/email/templates/instanceSetup.html +5 -0
- package/dist/src/UserManagement/email/templates/invite.html +4 -0
- package/dist/src/UserManagement/email/templates/passwordReset.html +5 -0
- package/dist/src/UserManagement/index.d.ts +4 -0
- package/dist/src/UserManagement/index.js +6 -0
- package/dist/src/UserManagement/index.js.map +1 -0
- package/dist/src/UserManagement/routes/auth.d.ts +2 -0
- package/dist/src/UserManagement/routes/auth.js +74 -0
- package/dist/src/UserManagement/routes/auth.js.map +1 -0
- package/dist/src/UserManagement/routes/index.d.ts +2 -0
- package/dist/src/UserManagement/routes/index.js +100 -0
- package/dist/src/UserManagement/routes/index.js.map +1 -0
- package/dist/src/UserManagement/routes/me.d.ts +2 -0
- package/dist/src/UserManagement/routes/me.js +85 -0
- package/dist/src/UserManagement/routes/me.js.map +1 -0
- package/dist/src/UserManagement/routes/owner.d.ts +2 -0
- package/dist/src/UserManagement/routes/owner.js +68 -0
- package/dist/src/UserManagement/routes/owner.js.map +1 -0
- package/dist/src/UserManagement/routes/passwordReset.d.ts +2 -0
- package/dist/src/UserManagement/routes/passwordReset.js +129 -0
- package/dist/src/UserManagement/routes/passwordReset.js.map +1 -0
- package/dist/src/UserManagement/routes/users.d.ts +2 -0
- package/dist/src/UserManagement/routes/users.js +334 -0
- package/dist/src/UserManagement/routes/users.js.map +1 -0
- package/dist/src/WaitTracker.js +6 -0
- package/dist/src/WaitTracker.js.map +1 -1
- package/dist/src/WaitingWebhooks.js +9 -1
- package/dist/src/WaitingWebhooks.js.map +1 -1
- package/dist/src/WebhookHelpers.js +17 -1
- package/dist/src/WebhookHelpers.js.map +1 -1
- package/dist/src/WorkflowExecuteAdditionalData.d.ts +3 -3
- package/dist/src/WorkflowExecuteAdditionalData.js +41 -13
- package/dist/src/WorkflowExecuteAdditionalData.js.map +1 -1
- package/dist/src/WorkflowHelpers.d.ts +9 -10
- package/dist/src/WorkflowHelpers.js +48 -17
- package/dist/src/WorkflowHelpers.js.map +1 -1
- package/dist/src/WorkflowRunner.js +4 -2
- package/dist/src/WorkflowRunner.js.map +1 -1
- package/dist/src/WorkflowRunnerProcess.js +7 -4
- package/dist/src/WorkflowRunnerProcess.js.map +1 -1
- package/dist/src/api/credentials.api.d.ts +1 -0
- package/dist/src/api/credentials.api.js +222 -0
- package/dist/src/api/credentials.api.js.map +1 -0
- package/dist/src/constants.d.ts +5 -0
- package/dist/src/constants.js +9 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/databases/entities/CredentialsEntity.d.ts +2 -0
- package/dist/src/databases/entities/CredentialsEntity.js +13 -2
- package/dist/src/databases/entities/CredentialsEntity.js.map +1 -1
- package/dist/src/databases/entities/Role.d.ts +16 -0
- package/dist/src/databases/entities/Role.js +87 -0
- package/dist/src/databases/entities/Role.js.map +1 -0
- package/dist/src/databases/entities/Settings.d.ts +6 -0
- package/dist/src/databases/entities/Settings.js +32 -0
- package/dist/src/databases/entities/Settings.js.map +1 -0
- package/dist/src/databases/entities/SharedCredentials.d.ts +13 -0
- package/dist/src/databases/entities/SharedCredentials.js +83 -0
- package/dist/src/databases/entities/SharedCredentials.js.map +1 -0
- package/dist/src/databases/entities/SharedWorkflow.d.ts +13 -0
- package/dist/src/databases/entities/SharedWorkflow.js +83 -0
- package/dist/src/databases/entities/SharedWorkflow.js.map +1 -0
- package/dist/src/databases/entities/TagEntity.js +6 -2
- package/dist/src/databases/entities/TagEntity.js.map +1 -1
- package/dist/src/databases/entities/User.d.ts +24 -0
- package/dist/src/databases/entities/User.js +145 -0
- package/dist/src/databases/entities/User.js.map +1 -0
- package/dist/src/databases/entities/WorkflowEntity.d.ts +2 -0
- package/dist/src/databases/entities/WorkflowEntity.js +8 -1
- package/dist/src/databases/entities/WorkflowEntity.js.map +1 -1
- package/dist/src/databases/entities/index.d.ts +10 -0
- package/dist/src/databases/entities/index.js +10 -0
- package/dist/src/databases/entities/index.js.map +1 -1
- package/dist/src/databases/mysqldb/migrations/1626183952959-AddWaitColumn.js +0 -1
- package/dist/src/databases/mysqldb/migrations/1626183952959-AddWaitColumn.js.map +1 -1
- package/dist/src/databases/mysqldb/migrations/1630451444017-UpdateWorkflowCredentials.js +0 -3
- package/dist/src/databases/mysqldb/migrations/1630451444017-UpdateWorkflowCredentials.js.map +1 -1
- package/dist/src/databases/mysqldb/migrations/1644424784709-AddExecutionEntityIndexes.js +21 -8
- package/dist/src/databases/mysqldb/migrations/1644424784709-AddExecutionEntityIndexes.js.map +1 -1
- package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
- package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.js +100 -0
- package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.js.map +1 -0
- package/dist/src/databases/mysqldb/migrations/index.js +2 -0
- package/dist/src/databases/mysqldb/migrations/index.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.d.ts +1 -1
- package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js +1 -1
- package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js +0 -1
- package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js +0 -3
- package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js +16 -17
- package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
- package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js +106 -0
- package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js.map +1 -0
- package/dist/src/databases/postgresdb/migrations/index.js +2 -0
- package/dist/src/databases/postgresdb/migrations/index.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1588102412422-InitialMigration.js +3 -0
- package/dist/src/databases/sqlite/migrations/1588102412422-InitialMigration.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1592445003908-WebhookModel.js +3 -0
- package/dist/src/databases/sqlite/migrations/1592445003908-WebhookModel.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.d.ts +1 -1
- package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.js +3 -0
- package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.d.ts +2 -1
- package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.js +6 -0
- package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.d.ts +1 -1
- package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.js +3 -0
- package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.d.ts +1 -1
- package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.js +3 -0
- package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.d.ts +1 -1
- package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.js +3 -0
- package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1621707690587-AddWaitColumn.js +3 -1
- package/dist/src/databases/sqlite/migrations/1621707690587-AddWaitColumn.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1630330987096-UpdateWorkflowCredentials.js +3 -3
- package/dist/src/databases/sqlite/migrations/1630330987096-UpdateWorkflowCredentials.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1644421939510-AddExecutionEntityIndexes.js +17 -13
- package/dist/src/databases/sqlite/migrations/1644421939510-AddExecutionEntityIndexes.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
- package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.js +73 -0
- package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.js.map +1 -0
- package/dist/src/databases/sqlite/migrations/index.d.ts +3 -2
- package/dist/src/databases/sqlite/migrations/index.js +4 -1
- package/dist/src/databases/sqlite/migrations/index.js.map +1 -1
- package/dist/src/databases/utils/customValidators.d.ts +1 -0
- package/dist/src/databases/utils/customValidators.js +22 -0
- package/dist/src/databases/utils/customValidators.js.map +1 -0
- package/dist/src/databases/utils/migrationHelpers.d.ts +3 -0
- package/dist/src/databases/utils/migrationHelpers.js +60 -0
- package/dist/src/databases/utils/migrationHelpers.js.map +1 -0
- package/dist/src/databases/utils/transformers.d.ts +9 -0
- package/dist/src/databases/utils/transformers.js +16 -0
- package/dist/src/databases/utils/transformers.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +4 -1
- package/dist/src/telemetry/index.js +4 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/test/{CredentialsHelper.test.d.ts → integration/auth.endpoints.test.d.ts} +0 -0
- package/dist/test/integration/auth.endpoints.test.js +99 -0
- package/dist/test/integration/auth.endpoints.test.js.map +1 -0
- package/dist/test/integration/auth.middleware.test.d.ts +1 -0
- package/dist/test/integration/auth.middleware.test.js +46 -0
- package/dist/test/integration/auth.middleware.test.js.map +1 -0
- package/dist/test/integration/credentials.api.test.d.ts +1 -0
- package/dist/test/integration/credentials.api.test.js +401 -0
- package/dist/test/integration/credentials.api.test.js.map +1 -0
- package/dist/test/integration/me.endpoints.test.d.ts +1 -0
- package/dist/test/integration/me.endpoints.test.js +383 -0
- package/dist/test/integration/me.endpoints.test.js.map +1 -0
- package/dist/test/integration/owner.endpoints.test.d.ts +1 -0
- package/dist/test/integration/owner.endpoints.test.js +125 -0
- package/dist/test/integration/owner.endpoints.test.js.map +1 -0
- package/dist/test/integration/passwordReset.endpoints.test.d.ts +1 -0
- package/dist/test/integration/passwordReset.endpoints.test.js +221 -0
- package/dist/test/integration/passwordReset.endpoints.test.js.map +1 -0
- package/dist/test/integration/shared/constants.d.ts +16 -0
- package/dist/test/integration/shared/constants.js +41 -0
- package/dist/test/integration/shared/constants.js.map +1 -0
- package/dist/test/integration/shared/random.d.ts +5 -0
- package/dist/test/integration/shared/random.js +34 -0
- package/dist/test/integration/shared/random.js.map +1 -0
- package/dist/test/integration/shared/testDb.d.ts +47 -0
- package/dist/test/integration/shared/testDb.js +280 -0
- package/dist/test/integration/shared/testDb.js.map +1 -0
- package/dist/test/integration/shared/utils.d.ts +20 -0
- package/dist/test/integration/shared/utils.js +132 -0
- package/dist/test/integration/shared/utils.js.map +1 -0
- package/dist/test/integration/users.endpoints.test.d.ts +1 -0
- package/dist/test/integration/users.endpoints.test.js +420 -0
- package/dist/test/integration/users.endpoints.test.js.map +1 -0
- package/dist/test/setup.d.ts +1 -0
- package/dist/test/setup.js +27 -0
- package/dist/test/setup.js.map +1 -0
- package/dist/test/teardown.d.ts +2 -0
- package/dist/test/teardown.js +33 -0
- package/dist/test/teardown.js.map +1 -0
- package/dist/test/unit/CredentialsHelper.test.d.ts +1 -0
- package/dist/test/{CredentialsHelper.test.js → unit/CredentialsHelper.test.js} +1 -1
- package/dist/test/unit/CredentialsHelper.test.js.map +1 -0
- package/dist/test/{Helpers.d.ts → unit/Helpers.d.ts} +0 -0
- package/dist/test/{Helpers.js → unit/Helpers.js} +0 -0
- package/dist/test/unit/Helpers.js.map +1 -0
- package/oclif.manifest.json +1 -1
- package/package.json +30 -29
- package/dist/src/PersonalizationSurvey.d.ts +0 -3
- package/dist/src/PersonalizationSurvey.js +0 -48
- package/dist/src/PersonalizationSurvey.js.map +0 -1
- package/dist/test/CredentialsHelper.test.js.map +0 -1
- package/dist/test/Helpers.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserManagementHelper.js","sourceRoot":"","sources":["../../../src/UserManagement/UserManagementHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Response } from 'express';
|
|
2
|
+
import { JwtToken, JwtPayload } from '../Interfaces';
|
|
3
|
+
import { User } from '../../databases/entities/User';
|
|
4
|
+
export declare function issueJWT(user: User): JwtToken;
|
|
5
|
+
export declare function resolveJwtContent(jwtPayload: JwtPayload): Promise<User>;
|
|
6
|
+
export declare function resolveJwt(token: string): Promise<User>;
|
|
7
|
+
export declare function issueCookie(res: Response, user: User): Promise<void>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.issueCookie = exports.resolveJwt = exports.resolveJwtContent = exports.issueJWT = void 0;
|
|
4
|
+
const jwt = require("jsonwebtoken");
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
const __1 = require("../..");
|
|
7
|
+
const constants_1 = require("../../constants");
|
|
8
|
+
const config = require("../../../config");
|
|
9
|
+
function issueJWT(user) {
|
|
10
|
+
const { id, email, password } = user;
|
|
11
|
+
const expiresIn = 7 * 86400000;
|
|
12
|
+
const payload = {
|
|
13
|
+
id,
|
|
14
|
+
email,
|
|
15
|
+
password: password !== null && password !== void 0 ? password : null,
|
|
16
|
+
};
|
|
17
|
+
if (password) {
|
|
18
|
+
payload.password = crypto_1.createHash('sha256')
|
|
19
|
+
.update(password.slice(password.length / 2))
|
|
20
|
+
.digest('hex');
|
|
21
|
+
}
|
|
22
|
+
const signedToken = jwt.sign(payload, config.get('userManagement.jwtSecret'), {
|
|
23
|
+
expiresIn: expiresIn / 1000,
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
token: signedToken,
|
|
27
|
+
expiresIn,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
exports.issueJWT = issueJWT;
|
|
31
|
+
async function resolveJwtContent(jwtPayload) {
|
|
32
|
+
const user = await __1.Db.collections.User.findOne(jwtPayload.id, {
|
|
33
|
+
relations: ['globalRole'],
|
|
34
|
+
});
|
|
35
|
+
let passwordHash = null;
|
|
36
|
+
if (user === null || user === void 0 ? void 0 : user.password) {
|
|
37
|
+
passwordHash = crypto_1.createHash('sha256')
|
|
38
|
+
.update(user.password.slice(user.password.length / 2))
|
|
39
|
+
.digest('hex');
|
|
40
|
+
}
|
|
41
|
+
if (!user || jwtPayload.password !== passwordHash || user.email !== jwtPayload.email) {
|
|
42
|
+
throw new Error('Invalid token content');
|
|
43
|
+
}
|
|
44
|
+
return user;
|
|
45
|
+
}
|
|
46
|
+
exports.resolveJwtContent = resolveJwtContent;
|
|
47
|
+
async function resolveJwt(token) {
|
|
48
|
+
const jwtPayload = jwt.verify(token, config.get('userManagement.jwtSecret'));
|
|
49
|
+
return resolveJwtContent(jwtPayload);
|
|
50
|
+
}
|
|
51
|
+
exports.resolveJwt = resolveJwt;
|
|
52
|
+
async function issueCookie(res, user) {
|
|
53
|
+
const userData = issueJWT(user);
|
|
54
|
+
res.cookie(constants_1.AUTH_COOKIE_NAME, userData.token, { maxAge: userData.expiresIn, httpOnly: true });
|
|
55
|
+
}
|
|
56
|
+
exports.issueCookie = issueCookie;
|
|
57
|
+
//# sourceMappingURL=jwt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../../../src/UserManagement/auth/jwt.ts"],"names":[],"mappings":";;;AAGA,oCAAoC;AAEpC,mCAAoC;AACpC,6BAA2B;AAC3B,+CAAmD;AAGnD,0CAA2C;AAE3C,SAAgB,QAAQ,CAAC,IAAU;IAClC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACrC,MAAM,SAAS,GAAG,CAAC,GAAG,QAAQ,CAAC;IAE/B,MAAM,OAAO,GAAe;QAC3B,EAAE;QACF,KAAK;QACL,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI;KAC1B,CAAC;IAEF,IAAI,QAAQ,EAAE;QACb,OAAO,CAAC,QAAQ,GAAG,mBAAU,CAAC,QAAQ,CAAC;aACrC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aAC3C,MAAM,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE;QAC7E,SAAS,EAAE,SAAS,GAAG,IAAI;KAC3B,CAAC,CAAC;IAEH,OAAO;QACN,KAAK,EAAE,WAAW;QAClB,SAAS;KACT,CAAC;AACH,CAAC;AAxBD,4BAwBC;AAEM,KAAK,UAAU,iBAAiB,CAAC,UAAsB;IAC7D,MAAM,IAAI,GAAG,MAAM,MAAE,CAAC,WAAW,CAAC,IAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE;QAC9D,SAAS,EAAE,CAAC,YAAY,CAAC;KACzB,CAAC,CAAC;IAEH,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAE;QACnB,YAAY,GAAG,mBAAU,CAAC,QAAQ,CAAC;aACjC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aACrD,MAAM,CAAC,KAAK,CAAC,CAAC;KAChB;IAED,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,KAAK,YAAY,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,EAAE;QAGrF,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KACzC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAlBD,8CAkBC;AAEM,KAAK,UAAU,UAAU,CAAC,KAAa;IAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAe,CAAC;IAC3F,OAAO,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAHD,gCAGC;AAEM,KAAK,UAAU,WAAW,CAAC,GAAa,EAAE,IAAU;IAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,GAAG,CAAC,MAAM,CAAC,4BAAgB,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9F,CAAC;AAHD,kCAGC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export interface UserManagementMailerImplementation {
|
|
3
|
+
sendMail: (mailData: MailData) => Promise<SendEmailResult>;
|
|
4
|
+
verifyConnection: () => Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export declare type InviteEmailData = {
|
|
7
|
+
email: string;
|
|
8
|
+
firstName?: string;
|
|
9
|
+
lastName?: string;
|
|
10
|
+
inviteAcceptUrl: string;
|
|
11
|
+
domain: string;
|
|
12
|
+
};
|
|
13
|
+
export declare type PasswordResetData = {
|
|
14
|
+
email: string;
|
|
15
|
+
firstName?: string;
|
|
16
|
+
lastName?: string;
|
|
17
|
+
passwordResetUrl: string;
|
|
18
|
+
domain: string;
|
|
19
|
+
};
|
|
20
|
+
export declare type SendEmailResult = {
|
|
21
|
+
success: boolean;
|
|
22
|
+
error?: Error;
|
|
23
|
+
};
|
|
24
|
+
export declare type MailData = {
|
|
25
|
+
body: string | Buffer;
|
|
26
|
+
emailRecipients: string | string[];
|
|
27
|
+
subject: string;
|
|
28
|
+
textOnly?: string;
|
|
29
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Interfaces.js","sourceRoot":"","sources":["../../../../src/UserManagement/email/Interfaces.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MailData, SendEmailResult, UserManagementMailerImplementation } from './Interfaces';
|
|
2
|
+
export declare class NodeMailer implements UserManagementMailerImplementation {
|
|
3
|
+
private transport;
|
|
4
|
+
constructor();
|
|
5
|
+
verifyConnection(): Promise<void>;
|
|
6
|
+
sendMail(mailData: MailData): Promise<SendEmailResult>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeMailer = void 0;
|
|
4
|
+
const nodemailer_1 = require("nodemailer");
|
|
5
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
6
|
+
const config = require("../../../config");
|
|
7
|
+
class NodeMailer {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.transport = nodemailer_1.createTransport({
|
|
10
|
+
host: config.get('userManagement.emails.smtp.host'),
|
|
11
|
+
port: config.get('userManagement.emails.smtp.port'),
|
|
12
|
+
secure: config.get('userManagement.emails.smtp.secure'),
|
|
13
|
+
auth: {
|
|
14
|
+
user: config.get('userManagement.emails.smtp.auth.user'),
|
|
15
|
+
pass: config.get('userManagement.emails.smtp.auth.pass'),
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async verifyConnection() {
|
|
20
|
+
const host = config.get('userManagement.emails.smtp.host');
|
|
21
|
+
const user = config.get('userManagement.emails.smtp.auth.user');
|
|
22
|
+
const pass = config.get('userManagement.emails.smtp.auth.pass');
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
this.transport.verify((error) => {
|
|
25
|
+
if (!error) {
|
|
26
|
+
resolve();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const message = [];
|
|
30
|
+
if (!host)
|
|
31
|
+
message.push('SMTP host not defined (N8N_SMTP_HOST).');
|
|
32
|
+
if (!user)
|
|
33
|
+
message.push('SMTP user not defined (N8N_SMTP_USER).');
|
|
34
|
+
if (!pass)
|
|
35
|
+
message.push('SMTP pass not defined (N8N_SMTP_PASS).');
|
|
36
|
+
reject(new Error(message.length ? message.join(' ') : error.message));
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async sendMail(mailData) {
|
|
41
|
+
let sender = config.get('userManagement.emails.smtp.sender');
|
|
42
|
+
const user = config.get('userManagement.emails.smtp.auth.user');
|
|
43
|
+
if (!sender && user.includes('@')) {
|
|
44
|
+
sender = user;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
await this.transport.sendMail({
|
|
48
|
+
from: sender,
|
|
49
|
+
to: mailData.emailRecipients,
|
|
50
|
+
subject: mailData.subject,
|
|
51
|
+
text: mailData.textOnly,
|
|
52
|
+
html: mailData.body,
|
|
53
|
+
});
|
|
54
|
+
n8n_workflow_1.LoggerProxy.verbose(`Email sent successfully to the following recipients: ${mailData.emailRecipients.toString()}`);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
n8n_workflow_1.LoggerProxy.error('Failed to send email', { recipients: mailData.emailRecipients, error });
|
|
58
|
+
return {
|
|
59
|
+
success: false,
|
|
60
|
+
error,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return { success: true };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.NodeMailer = NodeMailer;
|
|
67
|
+
//# sourceMappingURL=NodeMailer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeMailer.js","sourceRoot":"","sources":["../../../../src/UserManagement/email/NodeMailer.ts"],"names":[],"mappings":";;;AACA,2CAA0D;AAC1D,+CAAqD;AACrD,0CAA2C;AAG3C,MAAa,UAAU;IAGtB;QACC,IAAI,CAAC,SAAS,GAAG,4BAAe,CAAC;YAChC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC;YACnD,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC;YACnD,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC;YACvD,IAAI,EAAE;gBACL,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC;gBACxD,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC;aACxD;SACD,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB;QACrB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAW,CAAC;QACrE,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAW,CAAC;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAW,CAAC;QAE1E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAY,EAAE,EAAE;gBACtC,IAAI,CAAC,KAAK,EAAE;oBACX,OAAO,EAAE,CAAC;oBACV,OAAO;iBACP;gBAED,MAAM,OAAO,GAAG,EAAE,CAAC;gBAEnB,IAAI,CAAC,IAAI;oBAAE,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBAClE,IAAI,CAAC,IAAI;oBAAE,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBAClE,IAAI,CAAC,IAAI;oBAAE,OAAO,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;gBAElE,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAkB;QAChC,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAW,CAAC;QAE1E,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClC,MAAM,GAAG,IAAI,CAAC;SACd;QAED,IAAI;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC7B,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,QAAQ,CAAC,eAAe;gBAC5B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACnB,CAAC,CAAC;YACH,0BAAM,CAAC,OAAO,CACb,wDAAwD,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,CAC7F,CAAC;SACF;QAAC,OAAO,KAAK,EAAE;YACf,0BAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YACtF,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK;aACL,CAAC;SACF;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;CACD;AAnED,gCAmEC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InviteEmailData, PasswordResetData, SendEmailResult } from './Interfaces';
|
|
2
|
+
export declare class UserManagementMailer {
|
|
3
|
+
private mailer;
|
|
4
|
+
constructor();
|
|
5
|
+
verifyConnection(): Promise<void>;
|
|
6
|
+
invite(inviteEmailData: InviteEmailData): Promise<SendEmailResult>;
|
|
7
|
+
passwordReset(passwordResetData: PasswordResetData): Promise<SendEmailResult>;
|
|
8
|
+
}
|
|
9
|
+
export declare function getInstance(): Promise<UserManagementMailer>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getInstance = exports.UserManagementMailer = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const __1 = require("../..");
|
|
7
|
+
const config = require("../../../config");
|
|
8
|
+
const NodeMailer_1 = require("./NodeMailer");
|
|
9
|
+
async function getTemplate(configKeyName, defaultFilename) {
|
|
10
|
+
const templateOverride = (await __1.GenericHelpers.getConfigValue(`userManagement.emails.templates.${configKeyName}`));
|
|
11
|
+
let template;
|
|
12
|
+
if (templateOverride && fs_1.existsSync(templateOverride)) {
|
|
13
|
+
template = fs_1.readFileSync(templateOverride, {
|
|
14
|
+
encoding: 'utf-8',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
template = fs_1.readFileSync(path_1.join(__dirname, `templates/${defaultFilename}`), {
|
|
19
|
+
encoding: 'utf-8',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return template;
|
|
23
|
+
}
|
|
24
|
+
function replaceStrings(template, data) {
|
|
25
|
+
let output = template;
|
|
26
|
+
const keys = Object.keys(data);
|
|
27
|
+
keys.forEach((key) => {
|
|
28
|
+
const regex = new RegExp(`\\{\\{\\s*${key}\\s*\\}\\}`, 'g');
|
|
29
|
+
output = output.replace(regex, data[key]);
|
|
30
|
+
});
|
|
31
|
+
return output;
|
|
32
|
+
}
|
|
33
|
+
class UserManagementMailer {
|
|
34
|
+
constructor() {
|
|
35
|
+
if (config.get('userManagement.emails.mode') === 'smtp') {
|
|
36
|
+
this.mailer = new NodeMailer_1.NodeMailer();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async verifyConnection() {
|
|
40
|
+
if (!this.mailer)
|
|
41
|
+
return Promise.reject();
|
|
42
|
+
return this.mailer.verifyConnection();
|
|
43
|
+
}
|
|
44
|
+
async invite(inviteEmailData) {
|
|
45
|
+
var _a;
|
|
46
|
+
let template = await getTemplate('invite', 'invite.html');
|
|
47
|
+
template = replaceStrings(template, inviteEmailData);
|
|
48
|
+
const result = await ((_a = this.mailer) === null || _a === void 0 ? void 0 : _a.sendMail({
|
|
49
|
+
emailRecipients: inviteEmailData.email,
|
|
50
|
+
subject: 'You have been invited to n8n',
|
|
51
|
+
body: template,
|
|
52
|
+
}));
|
|
53
|
+
return result !== null && result !== void 0 ? result : { success: true };
|
|
54
|
+
}
|
|
55
|
+
async passwordReset(passwordResetData) {
|
|
56
|
+
var _a;
|
|
57
|
+
let template = await getTemplate('passwordReset', 'passwordReset.html');
|
|
58
|
+
template = replaceStrings(template, passwordResetData);
|
|
59
|
+
const result = await ((_a = this.mailer) === null || _a === void 0 ? void 0 : _a.sendMail({
|
|
60
|
+
emailRecipients: passwordResetData.email,
|
|
61
|
+
subject: 'n8n password reset',
|
|
62
|
+
body: template,
|
|
63
|
+
}));
|
|
64
|
+
return result !== null && result !== void 0 ? result : { success: true };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.UserManagementMailer = UserManagementMailer;
|
|
68
|
+
let mailerInstance;
|
|
69
|
+
async function getInstance() {
|
|
70
|
+
if (mailerInstance === undefined) {
|
|
71
|
+
mailerInstance = new UserManagementMailer();
|
|
72
|
+
await mailerInstance.verifyConnection();
|
|
73
|
+
}
|
|
74
|
+
return mailerInstance;
|
|
75
|
+
}
|
|
76
|
+
exports.getInstance = getInstance;
|
|
77
|
+
//# sourceMappingURL=UserManagementMailer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserManagementMailer.js","sourceRoot":"","sources":["../../../../src/UserManagement/email/UserManagementMailer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserManagementMailer = exports.getInstance = void 0;
|
|
4
|
+
const UserManagementMailer_1 = require("./UserManagementMailer");
|
|
5
|
+
Object.defineProperty(exports, "getInstance", { enumerable: true, get: function () { return UserManagementMailer_1.getInstance; } });
|
|
6
|
+
Object.defineProperty(exports, "UserManagementMailer", { enumerable: true, get: function () { return UserManagementMailer_1.UserManagementMailer; } });
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/UserManagement/email/index.ts"],"names":[],"mappings":";;;AACA,iEAA2E;AAElE,4FAFA,kCAAW,OAEA;AAAE,qGAFA,2CAAoB,OAEA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<p>Hi {{firstName}},</p>
|
|
2
|
+
<p>Somebody asked to reset your password on n8n ({{ domain }}).</p>
|
|
3
|
+
<p>If it was not you, you can safely ignore this email.</p>
|
|
4
|
+
<p>Click the following link to choose a new password. The link is valid for 2 hours.</p>
|
|
5
|
+
<a href="{{ passwordResetUrl }}">{{ passwordResetUrl }}</a>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/UserManagement/index.ts"],"names":[],"mappings":";;;AACA,qCAAqC;AAExB,QAAA,oBAAoB,GAAG,EAAE,SAAS,EAAT,kBAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authenticationMethods = void 0;
|
|
4
|
+
const bcryptjs_1 = require("bcryptjs");
|
|
5
|
+
const __1 = require("../..");
|
|
6
|
+
const constants_1 = require("../../constants");
|
|
7
|
+
const jwt_1 = require("../auth/jwt");
|
|
8
|
+
const UserManagementHelper_1 = require("../UserManagementHelper");
|
|
9
|
+
function authenticationMethods() {
|
|
10
|
+
this.app.post(`/${this.restEndpoint}/login`, __1.ResponseHelper.send(async (req, res) => {
|
|
11
|
+
if (!req.body.email) {
|
|
12
|
+
throw new Error('Email is required to log in');
|
|
13
|
+
}
|
|
14
|
+
if (!req.body.password) {
|
|
15
|
+
throw new Error('Password is required to log in');
|
|
16
|
+
}
|
|
17
|
+
let user;
|
|
18
|
+
try {
|
|
19
|
+
user = await __1.Db.collections.User.findOne({
|
|
20
|
+
email: req.body.email,
|
|
21
|
+
}, {
|
|
22
|
+
relations: ['globalRole'],
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
throw new Error('Unable to access database.');
|
|
27
|
+
}
|
|
28
|
+
if (!user || !user.password || !(await bcryptjs_1.compare(req.body.password, user.password))) {
|
|
29
|
+
const error = new Error('Wrong username or password. Do you have caps lock on?');
|
|
30
|
+
error.httpStatusCode = 401;
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
await jwt_1.issueCookie(res, user);
|
|
34
|
+
return UserManagementHelper_1.sanitizeUser(user);
|
|
35
|
+
}));
|
|
36
|
+
this.app.get(`/${this.restEndpoint}/login`, __1.ResponseHelper.send(async (req, res) => {
|
|
37
|
+
var _a;
|
|
38
|
+
const cookieContents = (_a = req.cookies) === null || _a === void 0 ? void 0 : _a[constants_1.AUTH_COOKIE_NAME];
|
|
39
|
+
let user;
|
|
40
|
+
if (cookieContents) {
|
|
41
|
+
try {
|
|
42
|
+
user = await jwt_1.resolveJwt(cookieContents);
|
|
43
|
+
return UserManagementHelper_1.sanitizeUser(user);
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
res.clearCookie(constants_1.AUTH_COOKIE_NAME);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (await UserManagementHelper_1.isInstanceOwnerSetup()) {
|
|
50
|
+
const error = new Error('Not logged in');
|
|
51
|
+
error.httpStatusCode = 401;
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
user = await __1.Db.collections.User.findOneOrFail({ relations: ['globalRole'] });
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw new Error('No users found in database - did you wipe the users table? Create at least one user.');
|
|
59
|
+
}
|
|
60
|
+
if (user.email || user.password) {
|
|
61
|
+
throw new Error('Invalid database state - user has password set.');
|
|
62
|
+
}
|
|
63
|
+
await jwt_1.issueCookie(res, user);
|
|
64
|
+
return UserManagementHelper_1.sanitizeUser(user);
|
|
65
|
+
}));
|
|
66
|
+
this.app.post(`/${this.restEndpoint}/logout`, __1.ResponseHelper.send(async (_, res) => {
|
|
67
|
+
res.clearCookie(constants_1.AUTH_COOKIE_NAME);
|
|
68
|
+
return {
|
|
69
|
+
loggedOut: true,
|
|
70
|
+
};
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
exports.authenticationMethods = authenticationMethods;
|
|
74
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/UserManagement/routes/auth.ts"],"names":[],"mappings":";;;AAKA,uCAAmC;AAEnC,6BAA2C;AAC3C,+CAAmD;AACnD,qCAAsD;AAEtD,kEAA6E;AAI7E,SAAgB,qBAAqB;IAMpC,IAAI,CAAC,GAAG,CAAC,IAAI,CACZ,IAAI,IAAI,CAAC,YAAY,QAAQ,EAC7B,kBAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAiB,EAAE,GAAa,EAAuB,EAAE;QACnF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC/C;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SAClD;QAED,IAAI,IAAI,CAAC;QACT,IAAI;YACH,IAAI,GAAG,MAAM,MAAE,CAAC,WAAW,CAAC,IAAK,CAAC,OAAO,CACxC;gBACC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK;aACrB,EACD;gBACC,SAAS,EAAE,CAAC,YAAY,CAAC;aACzB,CACD,CAAC;SACF;QAAC,OAAO,KAAK,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC9C;QACD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,kBAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;YAElF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAEjF,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;YAC3B,MAAM,KAAK,CAAC;SACZ;QAED,MAAM,iBAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE7B,OAAO,mCAAY,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CACF,CAAC;IAKF,IAAI,CAAC,GAAG,CAAC,GAAG,CACX,IAAI,IAAI,CAAC,YAAY,QAAQ,EAC7B,kBAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAY,EAAE,GAAa,EAAuB,EAAE;;QAE9E,MAAM,cAAc,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAG,4BAAgB,CAAuB,CAAC;QAE7E,IAAI,IAAU,CAAC;QACf,IAAI,cAAc,EAAE;YAEnB,IAAI;gBACH,IAAI,GAAG,MAAM,gBAAU,CAAC,cAAc,CAAC,CAAC;gBACxC,OAAO,mCAAY,CAAC,IAAI,CAAC,CAAC;aAC1B;YAAC,OAAO,KAAK,EAAE;gBACf,GAAG,CAAC,WAAW,CAAC,4BAAgB,CAAC,CAAC;aAClC;SACD;QAED,IAAI,MAAM,2CAAoB,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YAEzC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;YAC3B,MAAM,KAAK,CAAC;SACZ;QAED,IAAI;YACH,IAAI,GAAG,MAAM,MAAE,CAAC,WAAW,CAAC,IAAK,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;SAC/E;QAAC,OAAO,KAAK,EAAE;YACf,MAAM,IAAI,KAAK,CACd,sFAAsF,CACtF,CAAC;SACF;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;SACnE;QAED,MAAM,iBAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE7B,OAAO,mCAAY,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CACF,CAAC;IAOF,IAAI,CAAC,GAAG,CAAC,IAAI,CACZ,IAAI,IAAI,CAAC,YAAY,SAAS,EAC9B,kBAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAa,EAAwB,EAAE;QACpE,GAAG,CAAC,WAAW,CAAC,4BAAgB,CAAC,CAAC;QAClC,OAAO;YACN,SAAS,EAAE,IAAI;SACf,CAAC;IACH,CAAC,CAAC,CACF,CAAC;AACH,CAAC;AAvGD,sDAuGC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addRoutes = void 0;
|
|
4
|
+
const cookieParser = require("cookie-parser");
|
|
5
|
+
const passport = require("passport");
|
|
6
|
+
const passport_jwt_1 = require("passport-jwt");
|
|
7
|
+
const jwt = require("jsonwebtoken");
|
|
8
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
9
|
+
const auth_1 = require("./auth");
|
|
10
|
+
const config = require("../../../config");
|
|
11
|
+
const constants_1 = require("../../constants");
|
|
12
|
+
const jwt_1 = require("../auth/jwt");
|
|
13
|
+
const me_1 = require("./me");
|
|
14
|
+
const users_1 = require("./users");
|
|
15
|
+
const passwordReset_1 = require("./passwordReset");
|
|
16
|
+
const owner_1 = require("./owner");
|
|
17
|
+
const UserManagementHelper_1 = require("../UserManagementHelper");
|
|
18
|
+
function addRoutes(ignoredEndpoints, restEndpoint) {
|
|
19
|
+
this.app.use(cookieParser());
|
|
20
|
+
const options = {
|
|
21
|
+
jwtFromRequest: (req) => {
|
|
22
|
+
var _a, _b;
|
|
23
|
+
return (_b = (_a = req.cookies) === null || _a === void 0 ? void 0 : _a[constants_1.AUTH_COOKIE_NAME]) !== null && _b !== void 0 ? _b : null;
|
|
24
|
+
},
|
|
25
|
+
secretOrKey: config.get('userManagement.jwtSecret'),
|
|
26
|
+
};
|
|
27
|
+
passport.use(new passport_jwt_1.Strategy(options, async function validateCookieContents(jwtPayload, done) {
|
|
28
|
+
try {
|
|
29
|
+
const user = await jwt_1.resolveJwtContent(jwtPayload);
|
|
30
|
+
return done(null, user);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
n8n_workflow_1.LoggerProxy.debug('Failed to extract user from JWT payload', { jwtPayload });
|
|
34
|
+
return done(null, false, { message: 'User not found' });
|
|
35
|
+
}
|
|
36
|
+
}));
|
|
37
|
+
this.app.use(passport.initialize());
|
|
38
|
+
this.app.use((req, res, next) => {
|
|
39
|
+
if (req.method === 'OPTIONS' ||
|
|
40
|
+
req.url === '/index.html' ||
|
|
41
|
+
req.url === '/favicon.ico' ||
|
|
42
|
+
req.url.startsWith('/css/') ||
|
|
43
|
+
req.url.startsWith('/js/') ||
|
|
44
|
+
req.url.startsWith('/fonts/') ||
|
|
45
|
+
req.url.includes('.svg') ||
|
|
46
|
+
req.url.startsWith(`/${restEndpoint}/settings`) ||
|
|
47
|
+
req.url.startsWith(`/${restEndpoint}/login`) ||
|
|
48
|
+
req.url.startsWith(`/${restEndpoint}/logout`) ||
|
|
49
|
+
req.url.startsWith(`/${restEndpoint}/resolve-signup-token`) ||
|
|
50
|
+
UserManagementHelper_1.isPostUsersId(req, restEndpoint) ||
|
|
51
|
+
req.url.startsWith(`/${restEndpoint}/forgot-password`) ||
|
|
52
|
+
req.url.startsWith(`/${restEndpoint}/resolve-password-token`) ||
|
|
53
|
+
req.url.startsWith(`/${restEndpoint}/change-password`) ||
|
|
54
|
+
UserManagementHelper_1.isAuthExcluded(req.url, ignoredEndpoints)) {
|
|
55
|
+
return next();
|
|
56
|
+
}
|
|
57
|
+
return passport.authenticate('jwt', { session: false })(req, res, next);
|
|
58
|
+
});
|
|
59
|
+
this.app.use((req, res, next) => {
|
|
60
|
+
if (!req.user || (UserManagementHelper_1.isAuthenticatedRequest(req) && req.user.globalRole.name === 'owner')) {
|
|
61
|
+
next();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const postRestrictedUrls = [`/${this.restEndpoint}/users`, `/${this.restEndpoint}/owner`];
|
|
65
|
+
const getRestrictedUrls = [`/${this.restEndpoint}/users`];
|
|
66
|
+
const trimmedUrl = req.url.endsWith('/') ? req.url.slice(0, -1) : req.url;
|
|
67
|
+
if ((req.method === 'POST' && postRestrictedUrls.includes(trimmedUrl)) ||
|
|
68
|
+
(req.method === 'GET' && getRestrictedUrls.includes(trimmedUrl)) ||
|
|
69
|
+
(req.method === 'DELETE' &&
|
|
70
|
+
new RegExp(`/${restEndpoint}/users/[^/]+`, 'gm').test(trimmedUrl)) ||
|
|
71
|
+
(req.method === 'POST' &&
|
|
72
|
+
new RegExp(`/${restEndpoint}/users/[^/]+/reinvite`, 'gm').test(trimmedUrl)) ||
|
|
73
|
+
new RegExp(`/${restEndpoint}/owner/[^/]+`, 'gm').test(trimmedUrl)) {
|
|
74
|
+
n8n_workflow_1.LoggerProxy.verbose('User attempted to access endpoint without authorization', {
|
|
75
|
+
endpoint: `${req.method} ${trimmedUrl}`,
|
|
76
|
+
userId: UserManagementHelper_1.isAuthenticatedRequest(req) ? req.user.id : 'unknown',
|
|
77
|
+
});
|
|
78
|
+
res.status(403).json({ status: 'error', message: 'Unauthorized' });
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
next();
|
|
82
|
+
});
|
|
83
|
+
this.app.use(async (req, res, next) => {
|
|
84
|
+
const cookieAuth = options.jwtFromRequest(req);
|
|
85
|
+
if (cookieAuth && req.user) {
|
|
86
|
+
const cookieContents = jwt.decode(cookieAuth);
|
|
87
|
+
if (cookieContents.exp * 1000 - Date.now() < 259200000) {
|
|
88
|
+
await jwt_1.issueCookie(res, req.user);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
next();
|
|
92
|
+
});
|
|
93
|
+
auth_1.authenticationMethods.apply(this);
|
|
94
|
+
owner_1.ownerNamespace.apply(this);
|
|
95
|
+
me_1.meNamespace.apply(this);
|
|
96
|
+
passwordReset_1.passwordResetNamespace.apply(this);
|
|
97
|
+
users_1.usersNamespace.apply(this);
|
|
98
|
+
}
|
|
99
|
+
exports.addRoutes = addRoutes;
|
|
100
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/UserManagement/routes/index.ts"],"names":[],"mappings":"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"}
|