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.
Files changed (258) hide show
  1. package/dist/commands/execute.js +3 -0
  2. package/dist/commands/execute.js.map +1 -1
  3. package/dist/commands/executeBatch.d.ts +2 -0
  4. package/dist/commands/executeBatch.js +3 -0
  5. package/dist/commands/executeBatch.js.map +1 -1
  6. package/dist/commands/import/credentials.d.ts +10 -0
  7. package/dist/commands/import/credentials.js +87 -26
  8. package/dist/commands/import/credentials.js.map +1 -1
  9. package/dist/commands/import/workflow.d.ts +11 -1
  10. package/dist/commands/import/workflow.js +109 -48
  11. package/dist/commands/import/workflow.js.map +1 -1
  12. package/dist/commands/start.js +25 -0
  13. package/dist/commands/start.js.map +1 -1
  14. package/dist/commands/user-management/reset.d.ts +7 -0
  15. package/dist/commands/user-management/reset.js +66 -0
  16. package/dist/commands/user-management/reset.js.map +1 -0
  17. package/dist/commands/worker.js +4 -1
  18. package/dist/commands/worker.js.map +1 -1
  19. package/dist/config/index.d.ts +23 -0
  20. package/dist/config/index.js +92 -4
  21. package/dist/config/index.js.map +1 -1
  22. package/dist/src/ActiveWorkflowRunner.d.ts +2 -1
  23. package/dist/src/ActiveWorkflowRunner.js +44 -24
  24. package/dist/src/ActiveWorkflowRunner.js.map +1 -1
  25. package/dist/src/CredentialsHelper.d.ts +10 -2
  26. package/dist/src/CredentialsHelper.js +40 -11
  27. package/dist/src/CredentialsHelper.js.map +1 -1
  28. package/dist/src/Db.d.ts +4 -1
  29. package/dist/src/Db.js +90 -66
  30. package/dist/src/Db.js.map +1 -1
  31. package/dist/src/GenericHelpers.d.ts +6 -0
  32. package/dist/src/GenericHelpers.js +18 -1
  33. package/dist/src/GenericHelpers.js.map +1 -1
  34. package/dist/src/Interfaces.d.ts +74 -9
  35. package/dist/src/InternalHooks.d.ts +42 -6
  36. package/dist/src/InternalHooks.js +54 -13
  37. package/dist/src/InternalHooks.js.map +1 -1
  38. package/dist/src/ResponseHelper.js +5 -0
  39. package/dist/src/ResponseHelper.js.map +1 -1
  40. package/dist/src/Server.d.ts +2 -0
  41. package/dist/src/Server.js +584 -458
  42. package/dist/src/Server.js.map +1 -1
  43. package/dist/src/TagHelpers.d.ts +3 -3
  44. package/dist/src/TagHelpers.js +5 -24
  45. package/dist/src/TagHelpers.js.map +1 -1
  46. package/dist/src/UserManagement/Interfaces.d.ts +34 -0
  47. package/dist/src/UserManagement/Interfaces.js +3 -0
  48. package/dist/src/UserManagement/Interfaces.js.map +1 -0
  49. package/dist/src/UserManagement/UserManagementHelper.d.ts +17 -0
  50. package/dist/src/UserManagement/UserManagementHelper.js +158 -0
  51. package/dist/src/UserManagement/UserManagementHelper.js.map +1 -0
  52. package/dist/src/UserManagement/auth/jwt.d.ts +7 -0
  53. package/dist/src/UserManagement/auth/jwt.js +57 -0
  54. package/dist/src/UserManagement/auth/jwt.js.map +1 -0
  55. package/dist/src/UserManagement/email/Interfaces.d.ts +29 -0
  56. package/dist/src/UserManagement/email/Interfaces.js +3 -0
  57. package/dist/src/UserManagement/email/Interfaces.js.map +1 -0
  58. package/dist/src/UserManagement/email/NodeMailer.d.ts +7 -0
  59. package/dist/src/UserManagement/email/NodeMailer.js +67 -0
  60. package/dist/src/UserManagement/email/NodeMailer.js.map +1 -0
  61. package/dist/src/UserManagement/email/UserManagementMailer.d.ts +9 -0
  62. package/dist/src/UserManagement/email/UserManagementMailer.js +77 -0
  63. package/dist/src/UserManagement/email/UserManagementMailer.js.map +1 -0
  64. package/dist/src/UserManagement/email/index.d.ts +2 -0
  65. package/dist/src/UserManagement/email/index.js +7 -0
  66. package/dist/src/UserManagement/email/index.js.map +1 -0
  67. package/dist/src/UserManagement/email/templates/instanceSetup.html +5 -0
  68. package/dist/src/UserManagement/email/templates/invite.html +4 -0
  69. package/dist/src/UserManagement/email/templates/passwordReset.html +5 -0
  70. package/dist/src/UserManagement/index.d.ts +4 -0
  71. package/dist/src/UserManagement/index.js +6 -0
  72. package/dist/src/UserManagement/index.js.map +1 -0
  73. package/dist/src/UserManagement/routes/auth.d.ts +2 -0
  74. package/dist/src/UserManagement/routes/auth.js +74 -0
  75. package/dist/src/UserManagement/routes/auth.js.map +1 -0
  76. package/dist/src/UserManagement/routes/index.d.ts +2 -0
  77. package/dist/src/UserManagement/routes/index.js +100 -0
  78. package/dist/src/UserManagement/routes/index.js.map +1 -0
  79. package/dist/src/UserManagement/routes/me.d.ts +2 -0
  80. package/dist/src/UserManagement/routes/me.js +85 -0
  81. package/dist/src/UserManagement/routes/me.js.map +1 -0
  82. package/dist/src/UserManagement/routes/owner.d.ts +2 -0
  83. package/dist/src/UserManagement/routes/owner.js +68 -0
  84. package/dist/src/UserManagement/routes/owner.js.map +1 -0
  85. package/dist/src/UserManagement/routes/passwordReset.d.ts +2 -0
  86. package/dist/src/UserManagement/routes/passwordReset.js +129 -0
  87. package/dist/src/UserManagement/routes/passwordReset.js.map +1 -0
  88. package/dist/src/UserManagement/routes/users.d.ts +2 -0
  89. package/dist/src/UserManagement/routes/users.js +334 -0
  90. package/dist/src/UserManagement/routes/users.js.map +1 -0
  91. package/dist/src/WaitTracker.js +6 -0
  92. package/dist/src/WaitTracker.js.map +1 -1
  93. package/dist/src/WaitingWebhooks.js +9 -1
  94. package/dist/src/WaitingWebhooks.js.map +1 -1
  95. package/dist/src/WebhookHelpers.js +17 -1
  96. package/dist/src/WebhookHelpers.js.map +1 -1
  97. package/dist/src/WorkflowExecuteAdditionalData.d.ts +3 -3
  98. package/dist/src/WorkflowExecuteAdditionalData.js +41 -13
  99. package/dist/src/WorkflowExecuteAdditionalData.js.map +1 -1
  100. package/dist/src/WorkflowHelpers.d.ts +9 -10
  101. package/dist/src/WorkflowHelpers.js +48 -17
  102. package/dist/src/WorkflowHelpers.js.map +1 -1
  103. package/dist/src/WorkflowRunner.js +4 -2
  104. package/dist/src/WorkflowRunner.js.map +1 -1
  105. package/dist/src/WorkflowRunnerProcess.js +7 -4
  106. package/dist/src/WorkflowRunnerProcess.js.map +1 -1
  107. package/dist/src/api/credentials.api.d.ts +1 -0
  108. package/dist/src/api/credentials.api.js +222 -0
  109. package/dist/src/api/credentials.api.js.map +1 -0
  110. package/dist/src/constants.d.ts +5 -0
  111. package/dist/src/constants.js +9 -0
  112. package/dist/src/constants.js.map +1 -0
  113. package/dist/src/databases/entities/CredentialsEntity.d.ts +2 -0
  114. package/dist/src/databases/entities/CredentialsEntity.js +13 -2
  115. package/dist/src/databases/entities/CredentialsEntity.js.map +1 -1
  116. package/dist/src/databases/entities/Role.d.ts +16 -0
  117. package/dist/src/databases/entities/Role.js +87 -0
  118. package/dist/src/databases/entities/Role.js.map +1 -0
  119. package/dist/src/databases/entities/Settings.d.ts +6 -0
  120. package/dist/src/databases/entities/Settings.js +32 -0
  121. package/dist/src/databases/entities/Settings.js.map +1 -0
  122. package/dist/src/databases/entities/SharedCredentials.d.ts +13 -0
  123. package/dist/src/databases/entities/SharedCredentials.js +83 -0
  124. package/dist/src/databases/entities/SharedCredentials.js.map +1 -0
  125. package/dist/src/databases/entities/SharedWorkflow.d.ts +13 -0
  126. package/dist/src/databases/entities/SharedWorkflow.js +83 -0
  127. package/dist/src/databases/entities/SharedWorkflow.js.map +1 -0
  128. package/dist/src/databases/entities/TagEntity.js +6 -2
  129. package/dist/src/databases/entities/TagEntity.js.map +1 -1
  130. package/dist/src/databases/entities/User.d.ts +24 -0
  131. package/dist/src/databases/entities/User.js +145 -0
  132. package/dist/src/databases/entities/User.js.map +1 -0
  133. package/dist/src/databases/entities/WorkflowEntity.d.ts +2 -0
  134. package/dist/src/databases/entities/WorkflowEntity.js +8 -1
  135. package/dist/src/databases/entities/WorkflowEntity.js.map +1 -1
  136. package/dist/src/databases/entities/index.d.ts +10 -0
  137. package/dist/src/databases/entities/index.js +10 -0
  138. package/dist/src/databases/entities/index.js.map +1 -1
  139. package/dist/src/databases/mysqldb/migrations/1626183952959-AddWaitColumn.js +0 -1
  140. package/dist/src/databases/mysqldb/migrations/1626183952959-AddWaitColumn.js.map +1 -1
  141. package/dist/src/databases/mysqldb/migrations/1630451444017-UpdateWorkflowCredentials.js +0 -3
  142. package/dist/src/databases/mysqldb/migrations/1630451444017-UpdateWorkflowCredentials.js.map +1 -1
  143. package/dist/src/databases/mysqldb/migrations/1644424784709-AddExecutionEntityIndexes.js +21 -8
  144. package/dist/src/databases/mysqldb/migrations/1644424784709-AddExecutionEntityIndexes.js.map +1 -1
  145. package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
  146. package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.js +100 -0
  147. package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.js.map +1 -0
  148. package/dist/src/databases/mysqldb/migrations/index.js +2 -0
  149. package/dist/src/databases/mysqldb/migrations/index.js.map +1 -1
  150. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.d.ts +1 -1
  151. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js +1 -1
  152. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js.map +1 -1
  153. package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js +0 -1
  154. package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js.map +1 -1
  155. package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js +0 -3
  156. package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js.map +1 -1
  157. package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js +16 -17
  158. package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js.map +1 -1
  159. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
  160. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js +106 -0
  161. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js.map +1 -0
  162. package/dist/src/databases/postgresdb/migrations/index.js +2 -0
  163. package/dist/src/databases/postgresdb/migrations/index.js.map +1 -1
  164. package/dist/src/databases/sqlite/migrations/1588102412422-InitialMigration.js +3 -0
  165. package/dist/src/databases/sqlite/migrations/1588102412422-InitialMigration.js.map +1 -1
  166. package/dist/src/databases/sqlite/migrations/1592445003908-WebhookModel.js +3 -0
  167. package/dist/src/databases/sqlite/migrations/1592445003908-WebhookModel.js.map +1 -1
  168. package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.d.ts +1 -1
  169. package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.js +3 -0
  170. package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.js.map +1 -1
  171. package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.d.ts +2 -1
  172. package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.js +6 -0
  173. package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.js.map +1 -1
  174. package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.d.ts +1 -1
  175. package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.js +3 -0
  176. package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.js.map +1 -1
  177. package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.d.ts +1 -1
  178. package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.js +3 -0
  179. package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.js.map +1 -1
  180. package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.d.ts +1 -1
  181. package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.js +3 -0
  182. package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.js.map +1 -1
  183. package/dist/src/databases/sqlite/migrations/1621707690587-AddWaitColumn.js +3 -1
  184. package/dist/src/databases/sqlite/migrations/1621707690587-AddWaitColumn.js.map +1 -1
  185. package/dist/src/databases/sqlite/migrations/1630330987096-UpdateWorkflowCredentials.js +3 -3
  186. package/dist/src/databases/sqlite/migrations/1630330987096-UpdateWorkflowCredentials.js.map +1 -1
  187. package/dist/src/databases/sqlite/migrations/1644421939510-AddExecutionEntityIndexes.js +17 -13
  188. package/dist/src/databases/sqlite/migrations/1644421939510-AddExecutionEntityIndexes.js.map +1 -1
  189. package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
  190. package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.js +73 -0
  191. package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.js.map +1 -0
  192. package/dist/src/databases/sqlite/migrations/index.d.ts +3 -2
  193. package/dist/src/databases/sqlite/migrations/index.js +4 -1
  194. package/dist/src/databases/sqlite/migrations/index.js.map +1 -1
  195. package/dist/src/databases/utils/customValidators.d.ts +1 -0
  196. package/dist/src/databases/utils/customValidators.js +22 -0
  197. package/dist/src/databases/utils/customValidators.js.map +1 -0
  198. package/dist/src/databases/utils/migrationHelpers.d.ts +3 -0
  199. package/dist/src/databases/utils/migrationHelpers.js +60 -0
  200. package/dist/src/databases/utils/migrationHelpers.js.map +1 -0
  201. package/dist/src/databases/utils/transformers.d.ts +9 -0
  202. package/dist/src/databases/utils/transformers.js +16 -0
  203. package/dist/src/databases/utils/transformers.js.map +1 -0
  204. package/dist/src/telemetry/index.d.ts +4 -1
  205. package/dist/src/telemetry/index.js +4 -2
  206. package/dist/src/telemetry/index.js.map +1 -1
  207. package/dist/test/{CredentialsHelper.test.d.ts → integration/auth.endpoints.test.d.ts} +0 -0
  208. package/dist/test/integration/auth.endpoints.test.js +99 -0
  209. package/dist/test/integration/auth.endpoints.test.js.map +1 -0
  210. package/dist/test/integration/auth.middleware.test.d.ts +1 -0
  211. package/dist/test/integration/auth.middleware.test.js +46 -0
  212. package/dist/test/integration/auth.middleware.test.js.map +1 -0
  213. package/dist/test/integration/credentials.api.test.d.ts +1 -0
  214. package/dist/test/integration/credentials.api.test.js +401 -0
  215. package/dist/test/integration/credentials.api.test.js.map +1 -0
  216. package/dist/test/integration/me.endpoints.test.d.ts +1 -0
  217. package/dist/test/integration/me.endpoints.test.js +383 -0
  218. package/dist/test/integration/me.endpoints.test.js.map +1 -0
  219. package/dist/test/integration/owner.endpoints.test.d.ts +1 -0
  220. package/dist/test/integration/owner.endpoints.test.js +125 -0
  221. package/dist/test/integration/owner.endpoints.test.js.map +1 -0
  222. package/dist/test/integration/passwordReset.endpoints.test.d.ts +1 -0
  223. package/dist/test/integration/passwordReset.endpoints.test.js +221 -0
  224. package/dist/test/integration/passwordReset.endpoints.test.js.map +1 -0
  225. package/dist/test/integration/shared/constants.d.ts +16 -0
  226. package/dist/test/integration/shared/constants.js +41 -0
  227. package/dist/test/integration/shared/constants.js.map +1 -0
  228. package/dist/test/integration/shared/random.d.ts +5 -0
  229. package/dist/test/integration/shared/random.js +34 -0
  230. package/dist/test/integration/shared/random.js.map +1 -0
  231. package/dist/test/integration/shared/testDb.d.ts +47 -0
  232. package/dist/test/integration/shared/testDb.js +280 -0
  233. package/dist/test/integration/shared/testDb.js.map +1 -0
  234. package/dist/test/integration/shared/utils.d.ts +20 -0
  235. package/dist/test/integration/shared/utils.js +132 -0
  236. package/dist/test/integration/shared/utils.js.map +1 -0
  237. package/dist/test/integration/users.endpoints.test.d.ts +1 -0
  238. package/dist/test/integration/users.endpoints.test.js +420 -0
  239. package/dist/test/integration/users.endpoints.test.js.map +1 -0
  240. package/dist/test/setup.d.ts +1 -0
  241. package/dist/test/setup.js +27 -0
  242. package/dist/test/setup.js.map +1 -0
  243. package/dist/test/teardown.d.ts +2 -0
  244. package/dist/test/teardown.js +33 -0
  245. package/dist/test/teardown.js.map +1 -0
  246. package/dist/test/unit/CredentialsHelper.test.d.ts +1 -0
  247. package/dist/test/{CredentialsHelper.test.js → unit/CredentialsHelper.test.js} +1 -1
  248. package/dist/test/unit/CredentialsHelper.test.js.map +1 -0
  249. package/dist/test/{Helpers.d.ts → unit/Helpers.d.ts} +0 -0
  250. package/dist/test/{Helpers.js → unit/Helpers.js} +0 -0
  251. package/dist/test/unit/Helpers.js.map +1 -0
  252. package/oclif.manifest.json +1 -1
  253. package/package.json +30 -29
  254. package/dist/src/PersonalizationSurvey.d.ts +0 -3
  255. package/dist/src/PersonalizationSurvey.js +0 -48
  256. package/dist/src/PersonalizationSurvey.js.map +0 -1
  257. package/dist/test/CredentialsHelper.test.js.map +0 -1
  258. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Interfaces.js.map
@@ -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,2 @@
1
+ import { getInstance, UserManagementMailer } from './UserManagementMailer';
2
+ export { getInstance, UserManagementMailer };
@@ -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
+ <h1>Hi there!</h1>
2
+ <p>Welcome to n8n, {{firstName}} {{lastName}}</p>
3
+ <p>Your instance is set up!</p>
4
+ <p>Use your email to login: {{email}} and the chosen password.</p>
5
+ <p>Have fun automating!</p>
@@ -0,0 +1,4 @@
1
+ <p>Hi there,</p>
2
+ <p>You have been invited to join n8n ({{ domain }}).</p>
3
+ <p>To accept, click the following link:</p>
4
+ <p><a href="{{ inviteAcceptUrl }}" target="_blank">{{ inviteAcceptUrl }}</a></p>
@@ -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,4 @@
1
+ import { addRoutes } from './routes';
2
+ export declare const userManagementRouter: {
3
+ addRoutes: typeof addRoutes;
4
+ };
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.userManagementRouter = void 0;
4
+ const routes_1 = require("./routes");
5
+ exports.userManagementRouter = { addRoutes: routes_1.addRoutes };
6
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ import { N8nApp } from '../Interfaces';
2
+ export declare function authenticationMethods(this: N8nApp): void;
@@ -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":"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"}
@@ -0,0 +1,2 @@
1
+ import { N8nApp } from '../Interfaces';
2
+ export declare function addRoutes(this: N8nApp, ignoredEndpoints: string[], restEndpoint: string): void;
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ import { N8nApp } from '../Interfaces';
2
+ export declare function meNamespace(this: N8nApp): void;