n8n 1.3.0 → 1.4.0
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/ActiveWebhooks.js +2 -5
- package/dist/ActiveWebhooks.js.map +1 -1
- package/dist/ActiveWorkflowRunner.js +6 -7
- package/dist/ActiveWorkflowRunner.js.map +1 -1
- package/dist/CredentialsHelper.d.ts +1 -0
- package/dist/CredentialsHelper.js +23 -0
- package/dist/CredentialsHelper.js.map +1 -1
- package/dist/InternalHooks.js +7 -11
- package/dist/InternalHooks.js.map +1 -1
- package/dist/PublicApi/v1/handlers/workflows/workflows.service.js +2 -2
- package/dist/PublicApi/v1/handlers/workflows/workflows.service.js.map +1 -1
- package/dist/Server.js +18 -10
- package/dist/Server.js.map +1 -1
- package/dist/UserManagement/PermissionChecker.js +2 -2
- package/dist/UserManagement/PermissionChecker.js.map +1 -1
- package/dist/WebhookHelpers.js +5 -0
- package/dist/WebhookHelpers.js.map +1 -1
- package/dist/WorkflowHelpers.d.ts +2 -2
- package/dist/WorkflowHelpers.js +62 -45
- package/dist/WorkflowHelpers.js.map +1 -1
- package/dist/commands/executeBatch.js +1 -4
- package/dist/commands/executeBatch.js.map +1 -1
- package/dist/commands/import/workflow.d.ts +1 -0
- package/dist/commands/import/workflow.js +5 -5
- package/dist/commands/import/workflow.js.map +1 -1
- package/dist/commands/worker.d.ts +0 -2
- package/dist/commands/worker.js +26 -5
- package/dist/commands/worker.js.map +1 -1
- package/dist/config/schema.js +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/controllers/auth.controller.d.ts +2 -2
- package/dist/controllers/auth.controller.js +5 -7
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/me.controller.d.ts +3 -4
- package/dist/controllers/me.controller.js +12 -18
- package/dist/controllers/me.controller.js.map +1 -1
- package/dist/controllers/owner.controller.d.ts +7 -4
- package/dist/controllers/owner.controller.js +7 -4
- package/dist/controllers/owner.controller.js.map +1 -1
- package/dist/controllers/passwordReset.controller.d.ts +3 -6
- package/dist/controllers/passwordReset.controller.js +11 -14
- package/dist/controllers/passwordReset.controller.js.map +1 -1
- package/dist/controllers/tags.controller.d.ts +6 -10
- package/dist/controllers/tags.controller.js +10 -36
- package/dist/controllers/tags.controller.js.map +1 -1
- package/dist/controllers/users.controller.d.ts +3 -7
- package/dist/controllers/users.controller.js +20 -18
- package/dist/controllers/users.controller.js.map +1 -1
- package/dist/credentials/credentials.service.ee.js +2 -2
- package/dist/credentials/credentials.service.ee.js.map +1 -1
- package/dist/databases/migrations/common/1659888469333-AddJsonKeyPinData.js +2 -4
- package/dist/databases/migrations/common/1659888469333-AddJsonKeyPinData.js.map +1 -1
- package/dist/environments/sourceControl/sourceControl.service.ee.js.map +1 -1
- package/dist/environments/sourceControl/sourceControlImport.service.ee.js +2 -3
- package/dist/environments/sourceControl/sourceControlImport.service.ee.js.map +1 -1
- package/dist/eventbus/MessageEventBus/MessageEventBus.js +37 -4
- package/dist/eventbus/MessageEventBus/MessageEventBus.js.map +1 -1
- package/dist/eventbus/MessageEventBusWriter/MessageEventBusLogWriter.d.ts +4 -0
- package/dist/eventbus/MessageEventBusWriter/MessageEventBusLogWriter.js +16 -0
- package/dist/eventbus/MessageEventBusWriter/MessageEventBusLogWriter.js.map +1 -1
- package/dist/eventbus/MessageEventBusWriter/MessageEventBusLogWriterWorker.js +24 -0
- package/dist/eventbus/MessageEventBusWriter/MessageEventBusLogWriterWorker.js.map +1 -1
- package/dist/middlewares/listQuery/dtos/pagination.dto.d.ts +6 -0
- package/dist/middlewares/listQuery/dtos/pagination.dto.js +22 -0
- package/dist/middlewares/listQuery/dtos/pagination.dto.js.map +1 -0
- package/dist/middlewares/listQuery/dtos/workflow.filter.dto.d.ts +7 -0
- package/dist/middlewares/listQuery/dtos/workflow.filter.dto.js +55 -0
- package/dist/middlewares/listQuery/dtos/workflow.filter.dto.js.map +1 -0
- package/dist/middlewares/listQuery/dtos/workflow.select.dto.d.ts +5 -0
- package/dist/middlewares/listQuery/dtos/workflow.select.dto.js +31 -0
- package/dist/middlewares/listQuery/dtos/workflow.select.dto.js.map +1 -0
- package/dist/middlewares/listQuery/filter.d.ts +3 -2
- package/dist/middlewares/listQuery/filter.js +32 -15
- package/dist/middlewares/listQuery/filter.js.map +1 -1
- package/dist/middlewares/listQuery/index.d.ts +1 -1
- package/dist/middlewares/listQuery/pagination.js +33 -11
- package/dist/middlewares/listQuery/pagination.js.map +1 -1
- package/dist/middlewares/listQuery/select.js +8 -20
- package/dist/middlewares/listQuery/select.js.map +1 -1
- package/dist/requests.d.ts +33 -18
- package/dist/requests.js +5 -1
- package/dist/requests.js.map +1 -1
- package/dist/services/events.service.js +2 -2
- package/dist/services/events.service.js.map +1 -1
- package/dist/services/ownership.service.d.ts +7 -3
- package/dist/services/ownership.service.js +13 -4
- package/dist/services/ownership.service.js.map +1 -1
- package/dist/services/tag.service.d.ts +34 -0
- package/dist/services/tag.service.js +121 -0
- package/dist/services/tag.service.js.map +1 -0
- package/dist/services/user.service.d.ts +19 -0
- package/dist/services/user.service.js +62 -0
- package/dist/services/user.service.js.map +1 -0
- package/dist/sso/saml/schema/saml-schema-assertion-2.0.xsd.js +282 -282
- package/dist/sso/saml/schema/saml-schema-metadata-2.0.xsd.js +335 -335
- package/dist/sso/saml/schema/saml-schema-protocol-2.0.xsd.js +301 -301
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/index.js.map +1 -1
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +5 -1
- package/dist/utils.js.map +1 -1
- package/dist/workflows/workflows.controller.ee.js +5 -14
- package/dist/workflows/workflows.controller.ee.js.map +1 -1
- package/dist/workflows/workflows.controller.js +5 -5
- package/dist/workflows/workflows.controller.js.map +1 -1
- package/dist/workflows/workflows.services.d.ts +5 -5
- package/dist/workflows/workflows.services.ee.d.ts +1 -4
- package/dist/workflows/workflows.services.ee.js +2 -13
- package/dist/workflows/workflows.services.ee.js.map +1 -1
- package/dist/workflows/workflows.services.js +51 -38
- package/dist/workflows/workflows.services.js.map +1 -1
- package/dist/workflows/workflows.types.d.ts +0 -4
- package/oclif.manifest.json +1 -1
- package/package.json +8 -8
- package/templates/oauth-error-callback.handlebars +6 -6
- package/dist/TagHelpers.d.ts +0 -7
- package/dist/TagHelpers.js +0 -59
- package/dist/TagHelpers.js.map +0 -1
- package/dist/middlewares/listQuery/error.d.ts +0 -1
- package/dist/middlewares/listQuery/error.js +0 -40
- package/dist/middlewares/listQuery/error.js.map +0 -1
- package/dist/middlewares/listQuery/schema.d.ts +0 -5
- package/dist/middlewares/listQuery/schema.js +0 -13
- package/dist/middlewares/listQuery/schema.js.map +0 -1
- package/dist/middlewares/listQuery/workflow.schema.d.ts +0 -10
- package/dist/middlewares/listQuery/workflow.schema.js +0 -59
- package/dist/middlewares/listQuery/workflow.schema.js.map +0 -1
- package/dist/user/user.service.d.ts +0 -9
- package/dist/user/user.service.js +0 -53
- package/dist/user/user.service.js.map +0 -1
|
@@ -23,13 +23,14 @@ const jwt_1 = require("../auth/jwt");
|
|
|
23
23
|
const requests_1 = require("../requests");
|
|
24
24
|
const crypto_1 = require("crypto");
|
|
25
25
|
const samlHelpers_1 = require("../sso/saml/samlHelpers");
|
|
26
|
-
const user_service_1 = require("../
|
|
26
|
+
const user_service_1 = require("../services/user.service");
|
|
27
|
+
const typedi_1 = __importDefault(require("typedi"));
|
|
27
28
|
let MeController = exports.MeController = class MeController {
|
|
28
|
-
constructor({ logger, externalHooks, internalHooks,
|
|
29
|
+
constructor({ logger, externalHooks, internalHooks, }) {
|
|
29
30
|
this.logger = logger;
|
|
30
31
|
this.externalHooks = externalHooks;
|
|
31
32
|
this.internalHooks = internalHooks;
|
|
32
|
-
this.
|
|
33
|
+
this.userService = typedi_1.default.get(user_service_1.UserService);
|
|
33
34
|
}
|
|
34
35
|
async updateCurrentUser(req, res) {
|
|
35
36
|
const { id: userId, email: currentEmail } = req.user;
|
|
@@ -59,11 +60,8 @@ let MeController = exports.MeController = class MeController {
|
|
|
59
60
|
throw new ResponseHelper_1.BadRequestError('SAML user may not change their email');
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
|
-
await this.
|
|
63
|
-
const user = await this.
|
|
64
|
-
where: { id: userId },
|
|
65
|
-
relations: { globalRole: true },
|
|
66
|
-
});
|
|
63
|
+
await this.userService.update(userId, payload);
|
|
64
|
+
const user = await this.userService.findOneOrFail({ where: { id: userId } });
|
|
67
65
|
this.logger.info('User updated successfully', { userId });
|
|
68
66
|
await (0, jwt_1.issueCookie)(res, user);
|
|
69
67
|
const updatedKeys = Object.keys(payload);
|
|
@@ -95,7 +93,7 @@ let MeController = exports.MeController = class MeController {
|
|
|
95
93
|
}
|
|
96
94
|
const validPassword = (0, UserManagementHelper_1.validatePassword)(newPassword);
|
|
97
95
|
req.user.password = await (0, UserManagementHelper_1.hashPassword)(validPassword);
|
|
98
|
-
const user = await this.
|
|
96
|
+
const user = await this.userService.save(req.user);
|
|
99
97
|
this.logger.info('Password updated successfully', { userId: user.id });
|
|
100
98
|
await (0, jwt_1.issueCookie)(res, user);
|
|
101
99
|
void this.internalHooks.onUserUpdate({
|
|
@@ -113,7 +111,7 @@ let MeController = exports.MeController = class MeController {
|
|
|
113
111
|
});
|
|
114
112
|
throw new ResponseHelper_1.BadRequestError('Personalization answers are mandatory');
|
|
115
113
|
}
|
|
116
|
-
await this.
|
|
114
|
+
await this.userService.save({
|
|
117
115
|
id: req.user.id,
|
|
118
116
|
personalizationAnswers,
|
|
119
117
|
});
|
|
@@ -123,9 +121,7 @@ let MeController = exports.MeController = class MeController {
|
|
|
123
121
|
}
|
|
124
122
|
async createAPIKey(req) {
|
|
125
123
|
const apiKey = `n8n_api_${(0, crypto_1.randomBytes)(40).toString('hex')}`;
|
|
126
|
-
await this.
|
|
127
|
-
apiKey,
|
|
128
|
-
});
|
|
124
|
+
await this.userService.update(req.user.id, { apiKey });
|
|
129
125
|
void this.internalHooks.onApiKeyCreated({
|
|
130
126
|
user: req.user,
|
|
131
127
|
public_api: false,
|
|
@@ -136,9 +132,7 @@ let MeController = exports.MeController = class MeController {
|
|
|
136
132
|
return { apiKey: req.user.apiKey };
|
|
137
133
|
}
|
|
138
134
|
async deleteAPIKey(req) {
|
|
139
|
-
await this.
|
|
140
|
-
apiKey: null,
|
|
141
|
-
});
|
|
135
|
+
await this.userService.update(req.user.id, { apiKey: null });
|
|
142
136
|
void this.internalHooks.onApiKeyDeleted({
|
|
143
137
|
user: req.user,
|
|
144
138
|
public_api: false,
|
|
@@ -148,8 +142,8 @@ let MeController = exports.MeController = class MeController {
|
|
|
148
142
|
async updateCurrentUserSettings(req) {
|
|
149
143
|
const payload = (0, class_transformer_1.plainToInstance)(requests_1.UserSettingsUpdatePayload, req.body);
|
|
150
144
|
const { id } = req.user;
|
|
151
|
-
await
|
|
152
|
-
const user = await this.
|
|
145
|
+
await this.userService.updateSettings(id, payload);
|
|
146
|
+
const user = await this.userService.findOneOrFail({
|
|
153
147
|
select: ['settings'],
|
|
154
148
|
where: { id },
|
|
155
149
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"me.controller.js","sourceRoot":"","sources":["../../src/controllers/me.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC,yDAAoD;AACpD,6CAAoF;AACpF,gFAK+C;AAC/C,qDAAmD;AACnD,qDAAkD;AAClD,oCAAyC;
|
|
1
|
+
{"version":3,"file":"me.controller.js","sourceRoot":"","sources":["../../src/controllers/me.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,19 +3,22 @@ import type { ILogger } from 'n8n-workflow';
|
|
|
3
3
|
import type { Config } from '../config';
|
|
4
4
|
import { OwnerRequest } from '../requests';
|
|
5
5
|
import type { IDatabaseCollections, IInternalHooksClass } from '../Interfaces';
|
|
6
|
+
import type { PostHogClient } from '../posthog';
|
|
6
7
|
export declare class OwnerController {
|
|
7
8
|
private readonly config;
|
|
8
9
|
private readonly logger;
|
|
9
10
|
private readonly internalHooks;
|
|
10
|
-
private readonly
|
|
11
|
+
private readonly userService;
|
|
11
12
|
private readonly settingsRepository;
|
|
12
|
-
|
|
13
|
+
private readonly postHog?;
|
|
14
|
+
constructor({ config, logger, internalHooks, repositories, postHog, }: {
|
|
13
15
|
config: Config;
|
|
14
16
|
logger: ILogger;
|
|
15
17
|
internalHooks: IInternalHooksClass;
|
|
16
|
-
repositories: Pick<IDatabaseCollections, '
|
|
18
|
+
repositories: Pick<IDatabaseCollections, 'Settings'>;
|
|
19
|
+
postHog?: PostHogClient;
|
|
17
20
|
});
|
|
18
|
-
setupOwner(req: OwnerRequest.Post, res: Response): Promise<import("../Interfaces").
|
|
21
|
+
setupOwner(req: OwnerRequest.Post, res: Response): Promise<import("../Interfaces").CurrentUser>;
|
|
19
22
|
dismissBanner(req: OwnerRequest.DismissBanner): Promise<{
|
|
20
23
|
success: boolean;
|
|
21
24
|
}>;
|
|
@@ -19,13 +19,16 @@ const decorators_1 = require("../decorators");
|
|
|
19
19
|
const ResponseHelper_1 = require("../ResponseHelper");
|
|
20
20
|
const UserManagementHelper_1 = require("../UserManagement/UserManagementHelper");
|
|
21
21
|
const jwt_1 = require("../auth/jwt");
|
|
22
|
+
const user_service_1 = require("../services/user.service");
|
|
23
|
+
const typedi_1 = __importDefault(require("typedi"));
|
|
22
24
|
let OwnerController = exports.OwnerController = class OwnerController {
|
|
23
|
-
constructor({ config, logger, internalHooks, repositories, }) {
|
|
25
|
+
constructor({ config, logger, internalHooks, repositories, postHog, }) {
|
|
24
26
|
this.config = config;
|
|
25
27
|
this.logger = logger;
|
|
26
28
|
this.internalHooks = internalHooks;
|
|
27
|
-
this.
|
|
29
|
+
this.userService = typedi_1.default.get(user_service_1.UserService);
|
|
28
30
|
this.settingsRepository = repositories.Settings;
|
|
31
|
+
this.postHog = postHog;
|
|
29
32
|
}
|
|
30
33
|
async setupOwner(req, res) {
|
|
31
34
|
const { email, firstName, lastName, password } = req.body;
|
|
@@ -62,14 +65,14 @@ let OwnerController = exports.OwnerController = class OwnerController {
|
|
|
62
65
|
password: await (0, UserManagementHelper_1.hashPassword)(validPassword),
|
|
63
66
|
});
|
|
64
67
|
await (0, GenericHelpers_1.validateEntity)(owner);
|
|
65
|
-
owner = await this.
|
|
68
|
+
owner = await this.userService.save(owner);
|
|
66
69
|
this.logger.info('Owner was set up successfully', { userId });
|
|
67
70
|
await this.settingsRepository.update({ key: 'userManagement.isInstanceOwnerSetUp' }, { value: JSON.stringify(true) });
|
|
68
71
|
this.config.set('userManagement.isInstanceOwnerSetUp', true);
|
|
69
72
|
this.logger.debug('Setting isInstanceOwnerSetUp updated successfully', { userId });
|
|
70
73
|
await (0, jwt_1.issueCookie)(res, owner);
|
|
71
74
|
void this.internalHooks.onInstanceOwnerSetup({ user_id: userId });
|
|
72
|
-
return (0, UserManagementHelper_1.sanitizeUser)(owner);
|
|
75
|
+
return (0, UserManagementHelper_1.withFeatureFlags)(this.postHog, (0, UserManagementHelper_1.sanitizeUser)(owner));
|
|
73
76
|
}
|
|
74
77
|
async dismissBanner(req) {
|
|
75
78
|
const bannerName = 'banner' in req.body ? req.body.banner : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner.controller.js","sourceRoot":"","sources":["../../src/controllers/owner.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC,qDAAkD;AAClD,6CAAgE;AAChE,qDAAmD;AACnD,
|
|
1
|
+
{"version":3,"file":"owner.controller.js","sourceRoot":"","sources":["../../src/controllers/owner.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC,qDAAkD;AAClD,6CAAgE;AAChE,qDAAmD;AACnD,gFAK+C;AAC/C,oCAAyC;AAOzC,0DAAsD;AACtD,oDAA+B;AAKxB,IAAM,eAAe,6BAArB,MAAM,eAAe;IAa3B,YAAY,EACX,MAAM,EACN,MAAM,EACN,aAAa,EACb,YAAY,EACZ,OAAO,GAOP;QACA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,gBAAS,CAAC,GAAG,CAAC,0BAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAOK,AAAN,KAAK,CAAC,UAAU,CAAC,GAAsB,EAAE,GAAa;QACrD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAC1D,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;QAE5C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,qCAAqC,CAAC,EAAE;YAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,kFAAkF,EAClF;gBACC,MAAM;aACN,CACD,CAAC;YACF,MAAM,IAAI,gCAAe,CAAC,8BAA8B,CAAC,CAAC;SAC1D;QAED,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,EAAE;gBACxF,MAAM;gBACN,YAAY,EAAE,KAAK;aACnB,CAAC,CAAC;YACH,MAAM,IAAI,gCAAe,CAAC,uBAAuB,CAAC,CAAC;SACnD;QAED,MAAM,aAAa,GAAG,IAAA,uCAAgB,EAAC,QAAQ,CAAC,CAAC;QAEjD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,kGAAkG,EAClG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAC7B,CAAC;YACF,MAAM,IAAI,gCAAe,CAAC,oCAAoC,CAAC,CAAC;SAChE;QAGD,IAAI,UAAU,CAAC,KAAK,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE;YACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,iGAAiG,EACjG;gBACC,MAAM;aACN,CACD,CAAC;YACF,MAAM,IAAI,gCAAe,CAAC,iBAAiB,CAAC,CAAC;SAC7C;QAED,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;QAErB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YACpB,KAAK;YACL,SAAS;YACT,QAAQ;YACR,QAAQ,EAAE,MAAM,IAAA,mCAAY,EAAC,aAAa,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,IAAA,+BAAc,EAAC,KAAK,CAAC,CAAC;QAE5B,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAE9D,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CACnC,EAAE,GAAG,EAAE,qCAAqC,EAAE,EAC9C,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAC/B,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnF,MAAM,IAAA,iBAAW,EAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE9B,KAAK,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAElE,OAAO,IAAA,uCAAgB,EAAC,IAAI,CAAC,OAAO,EAAE,IAAA,mCAAY,EAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAGK,AAAN,KAAK,CAAC,aAAa,CAAC,GAA+B;QAClD,MAAM,UAAU,GAAG,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,MAAiB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAC7E,OAAO,QAAQ,CAAC;IACjB,CAAC;CACD,CAAA;AAhFM;IADL,IAAA,iBAAI,EAAC,QAAQ,CAAC;;;;iDAyEd;AAGK;IADL,IAAA,iBAAI,EAAC,iBAAiB,CAAC;;;;oDAKvB;0BAtHW,eAAe;IAF3B,IAAA,uBAAU,EAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAA,2BAAc,EAAC,QAAQ,CAAC;;GACZ,eAAe,CAuH3B"}
|
|
@@ -3,24 +3,21 @@ import { Response } from 'express';
|
|
|
3
3
|
import type { ILogger } from 'n8n-workflow';
|
|
4
4
|
import type { Config } from '../config';
|
|
5
5
|
import { PasswordResetRequest } from '../requests';
|
|
6
|
-
import type {
|
|
7
|
-
import type { JwtService } from '../services/jwt.service';
|
|
6
|
+
import type { IExternalHooksClass, IInternalHooksClass } from '../Interfaces';
|
|
8
7
|
export declare class PasswordResetController {
|
|
9
8
|
private readonly config;
|
|
10
9
|
private readonly logger;
|
|
11
10
|
private readonly externalHooks;
|
|
12
11
|
private readonly internalHooks;
|
|
13
12
|
private readonly mailer;
|
|
14
|
-
private readonly userRepository;
|
|
15
13
|
private readonly jwtService;
|
|
16
|
-
|
|
14
|
+
private readonly userService;
|
|
15
|
+
constructor({ config, logger, externalHooks, internalHooks, mailer, }: {
|
|
17
16
|
config: Config;
|
|
18
17
|
logger: ILogger;
|
|
19
18
|
externalHooks: IExternalHooksClass;
|
|
20
19
|
internalHooks: IInternalHooksClass;
|
|
21
20
|
mailer: UserManagementMailer;
|
|
22
|
-
repositories: Pick<IDatabaseCollections, 'User'>;
|
|
23
|
-
jwtService: JwtService;
|
|
24
21
|
});
|
|
25
22
|
forgotPassword(req: PasswordResetRequest.Email): Promise<void>;
|
|
26
23
|
resolvePasswordToken(req: PasswordResetRequest.Credentials): Promise<void>;
|
|
@@ -21,20 +21,21 @@ const UserManagementHelper_1 = require("../UserManagement/UserManagementHelper")
|
|
|
21
21
|
const jwt_1 = require("../auth/jwt");
|
|
22
22
|
const helpers_1 = require("../Ldap/helpers");
|
|
23
23
|
const ssoHelpers_1 = require("../sso/ssoHelpers");
|
|
24
|
-
const user_service_1 = require("../
|
|
24
|
+
const user_service_1 = require("../services/user.service");
|
|
25
25
|
const License_1 = require("../License");
|
|
26
26
|
const typedi_1 = require("typedi");
|
|
27
27
|
const constants_1 = require("../constants");
|
|
28
28
|
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
29
|
+
const jwt_service_1 = require("../services/jwt.service");
|
|
29
30
|
let PasswordResetController = exports.PasswordResetController = class PasswordResetController {
|
|
30
|
-
constructor({ config, logger, externalHooks, internalHooks, mailer,
|
|
31
|
+
constructor({ config, logger, externalHooks, internalHooks, mailer, }) {
|
|
31
32
|
this.config = config;
|
|
32
33
|
this.logger = logger;
|
|
33
34
|
this.externalHooks = externalHooks;
|
|
34
35
|
this.internalHooks = internalHooks;
|
|
35
36
|
this.mailer = mailer;
|
|
36
|
-
this.
|
|
37
|
-
this.
|
|
37
|
+
this.jwtService = typedi_1.Container.get(jwt_service_1.JwtService);
|
|
38
|
+
this.userService = typedi_1.Container.get(user_service_1.UserService);
|
|
38
39
|
}
|
|
39
40
|
async forgotPassword(req) {
|
|
40
41
|
var _a, _b;
|
|
@@ -51,7 +52,7 @@ let PasswordResetController = exports.PasswordResetController = class PasswordRe
|
|
|
51
52
|
this.logger.debug('Request to send password reset email failed because of invalid email in payload', { invalidEmail: email });
|
|
52
53
|
throw new ResponseHelper_1.BadRequestError('Invalid email address');
|
|
53
54
|
}
|
|
54
|
-
const user = await this.
|
|
55
|
+
const user = await this.userService.findOne({
|
|
55
56
|
where: {
|
|
56
57
|
email,
|
|
57
58
|
password: (0, typeorm_1.Not)((0, typeorm_1.IsNull)()),
|
|
@@ -80,7 +81,7 @@ let PasswordResetController = exports.PasswordResetController = class PasswordRe
|
|
|
80
81
|
const resetPasswordToken = this.jwtService.signData({ sub: id }, {
|
|
81
82
|
expiresIn: '1d',
|
|
82
83
|
});
|
|
83
|
-
const url =
|
|
84
|
+
const url = this.userService.generatePasswordResetUrl(baseUrl, resetPasswordToken);
|
|
84
85
|
try {
|
|
85
86
|
await this.mailer.passwordReset({
|
|
86
87
|
email,
|
|
@@ -117,10 +118,8 @@ let PasswordResetController = exports.PasswordResetController = class PasswordRe
|
|
|
117
118
|
throw new ResponseHelper_1.BadRequestError('');
|
|
118
119
|
}
|
|
119
120
|
const decodedToken = this.verifyResetPasswordToken(resetPasswordToken);
|
|
120
|
-
const user = await this.
|
|
121
|
-
where: {
|
|
122
|
-
id: decodedToken.sub,
|
|
123
|
-
},
|
|
121
|
+
const user = await this.userService.findOne({
|
|
122
|
+
where: { id: decodedToken.sub },
|
|
124
123
|
relations: ['globalRole'],
|
|
125
124
|
});
|
|
126
125
|
if (!(user === null || user === void 0 ? void 0 : user.isOwner) && !typedi_1.Container.get(License_1.License).isWithinUsersLimit()) {
|
|
@@ -148,7 +147,7 @@ let PasswordResetController = exports.PasswordResetController = class PasswordRe
|
|
|
148
147
|
}
|
|
149
148
|
const validPassword = (0, UserManagementHelper_1.validatePassword)(password);
|
|
150
149
|
const decodedToken = this.verifyResetPasswordToken(resetPasswordToken);
|
|
151
|
-
const user = await this.
|
|
150
|
+
const user = await this.userService.findOne({
|
|
152
151
|
where: { id: decodedToken.sub },
|
|
153
152
|
relations: ['authIdentities'],
|
|
154
153
|
});
|
|
@@ -159,9 +158,7 @@ let PasswordResetController = exports.PasswordResetController = class PasswordRe
|
|
|
159
158
|
throw new ResponseHelper_1.NotFoundError('');
|
|
160
159
|
}
|
|
161
160
|
const passwordHash = await (0, UserManagementHelper_1.hashPassword)(validPassword);
|
|
162
|
-
await this.
|
|
163
|
-
password: passwordHash,
|
|
164
|
-
});
|
|
161
|
+
await this.userService.update(user.id, { password: passwordHash });
|
|
165
162
|
this.logger.info('User password updated successfully', { userId: user.id });
|
|
166
163
|
await (0, jwt_1.issueCookie)(res, user);
|
|
167
164
|
void this.internalHooks.onUserUpdate({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passwordReset.controller.js","sourceRoot":"","sources":["../../src/controllers/passwordReset.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qCAAsC;AACtC,0DAAkC;AAClC,6CAAyD;AACzD,qDAM0B;AAC1B,gFAI+C;
|
|
1
|
+
{"version":3,"file":"passwordReset.controller.js","sourceRoot":"","sources":["../../src/controllers/passwordReset.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
import { Request, Response, NextFunction } from 'express';
|
|
2
|
-
import {
|
|
3
|
-
import type { TagEntity } from '../databases/entities/TagEntity';
|
|
4
|
-
import { TagRepository } from '../databases/repositories';
|
|
2
|
+
import { TagService } from '../services/tag.service';
|
|
5
3
|
import { TagsRequest } from '../requests';
|
|
6
|
-
import { ExternalHooks } from '../ExternalHooks';
|
|
7
4
|
export declare class TagsController {
|
|
8
|
-
private
|
|
9
|
-
private externalHooks;
|
|
5
|
+
private tagService;
|
|
10
6
|
private config;
|
|
11
|
-
constructor(
|
|
7
|
+
constructor(tagService: TagService);
|
|
12
8
|
workflowsEnabledMiddleware(req: Request, res: Response, next: NextFunction): void;
|
|
13
|
-
getAll(req: TagsRequest.GetAll): Promise<TagEntity[]
|
|
14
|
-
createTag(req: TagsRequest.Create): Promise<TagEntity>;
|
|
15
|
-
updateTag(req: TagsRequest.Update): Promise<TagEntity>;
|
|
9
|
+
getAll(req: TagsRequest.GetAll): Promise<import("../databases/entities/TagEntity").TagEntity[]>;
|
|
10
|
+
createTag(req: TagsRequest.Create): Promise<import("../databases/entities/TagEntity").TagEntity>;
|
|
11
|
+
updateTag(req: TagsRequest.Update): Promise<import("../databases/entities/TagEntity").TagEntity>;
|
|
16
12
|
deleteTag(req: TagsRequest.Delete): Promise<boolean>;
|
|
17
13
|
}
|
|
@@ -15,15 +15,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.TagsController = void 0;
|
|
16
16
|
const config_1 = __importDefault(require("../config"));
|
|
17
17
|
const decorators_1 = require("../decorators");
|
|
18
|
-
const
|
|
19
|
-
const GenericHelpers_1 = require("../GenericHelpers");
|
|
18
|
+
const tag_service_1 = require("../services/tag.service");
|
|
20
19
|
const ResponseHelper_1 = require("../ResponseHelper");
|
|
21
20
|
const typedi_1 = require("typedi");
|
|
22
|
-
const ExternalHooks_1 = require("../ExternalHooks");
|
|
23
21
|
let TagsController = exports.TagsController = class TagsController {
|
|
24
|
-
constructor(
|
|
25
|
-
this.
|
|
26
|
-
this.externalHooks = externalHooks;
|
|
22
|
+
constructor(tagService) {
|
|
23
|
+
this.tagService = tagService;
|
|
27
24
|
this.config = config_1.default;
|
|
28
25
|
}
|
|
29
26
|
workflowsEnabledMiddleware(req, res, next) {
|
|
@@ -32,41 +29,19 @@ let TagsController = exports.TagsController = class TagsController {
|
|
|
32
29
|
next();
|
|
33
30
|
}
|
|
34
31
|
async getAll(req) {
|
|
35
|
-
|
|
36
|
-
if (withUsageCount === 'true') {
|
|
37
|
-
return this.tagsRepository
|
|
38
|
-
.find({
|
|
39
|
-
select: ['id', 'name', 'createdAt', 'updatedAt'],
|
|
40
|
-
relations: ['workflowMappings'],
|
|
41
|
-
})
|
|
42
|
-
.then((tags) => tags.map(({ workflowMappings, ...rest }) => ({
|
|
43
|
-
...rest,
|
|
44
|
-
usageCount: workflowMappings.length,
|
|
45
|
-
})));
|
|
46
|
-
}
|
|
47
|
-
return this.tagsRepository.find({ select: ['id', 'name', 'createdAt', 'updatedAt'] });
|
|
32
|
+
return this.tagService.getAll({ withUsageCount: req.query.withUsageCount === 'true' });
|
|
48
33
|
}
|
|
49
34
|
async createTag(req) {
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
await (0, GenericHelpers_1.validateEntity)(newTag);
|
|
53
|
-
const tag = await this.tagsRepository.save(newTag);
|
|
54
|
-
await this.externalHooks.run('tag.afterCreate', [tag]);
|
|
55
|
-
return tag;
|
|
35
|
+
const tag = this.tagService.toEntity({ name: req.body.name });
|
|
36
|
+
return this.tagService.save(tag, 'create');
|
|
56
37
|
}
|
|
57
38
|
async updateTag(req) {
|
|
58
|
-
const newTag = this.
|
|
59
|
-
|
|
60
|
-
await (0, GenericHelpers_1.validateEntity)(newTag);
|
|
61
|
-
const tag = await this.tagsRepository.save(newTag);
|
|
62
|
-
await this.externalHooks.run('tag.afterUpdate', [tag]);
|
|
63
|
-
return tag;
|
|
39
|
+
const newTag = this.tagService.toEntity({ id: req.params.id, name: req.body.name.trim() });
|
|
40
|
+
return this.tagService.save(newTag, 'update');
|
|
64
41
|
}
|
|
65
42
|
async deleteTag(req) {
|
|
66
43
|
const { id } = req.params;
|
|
67
|
-
await this.
|
|
68
|
-
await this.tagsRepository.delete({ id });
|
|
69
|
-
await this.externalHooks.run('tag.afterDelete', [id]);
|
|
44
|
+
await this.tagService.delete(id);
|
|
70
45
|
return true;
|
|
71
46
|
}
|
|
72
47
|
};
|
|
@@ -105,7 +80,6 @@ exports.TagsController = TagsController = __decorate([
|
|
|
105
80
|
(0, decorators_1.Authorized)(),
|
|
106
81
|
(0, decorators_1.RestController)('/tags'),
|
|
107
82
|
(0, typedi_1.Service)(),
|
|
108
|
-
__metadata("design:paramtypes", [
|
|
109
|
-
ExternalHooks_1.ExternalHooks])
|
|
83
|
+
__metadata("design:paramtypes", [tag_service_1.TagService])
|
|
110
84
|
], TagsController);
|
|
111
85
|
//# sourceMappingURL=tags.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.controller.js","sourceRoot":"","sources":["../../src/controllers/tags.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,sDAA8B;AAC9B,6CAAgG;
|
|
1
|
+
{"version":3,"file":"tags.controller.js","sourceRoot":"","sources":["../../src/controllers/tags.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,sDAA8B;AAC9B,6CAAgG;AAChG,wDAAoD;AACpD,qDAAmD;AAEnD,mCAAiC;AAK1B,IAAM,cAAc,4BAApB,MAAM,cAAc;IAG1B,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAFlC,WAAM,GAAG,gBAAM,CAAC;IAEqB,CAAC;IAI9C,0BAA0B,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;QACzE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC;YAC7C,MAAM,IAAI,gCAAe,CAAC,4BAA4B,CAAC,CAAC;QACzD,IAAI,EAAE,CAAC;IACR,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAC,GAAuB;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,MAAM,EAAE,CAAC,CAAC;IACxF,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAC,GAAuB;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAGK,AAAN,KAAK,CAAC,SAAS,CAAC,GAAuB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAE3F,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAIK,AAAN,KAAK,CAAC,SAAS,CAAC,GAAuB;QACtC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAE1B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEjC,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAA;AAlCA;IADC,IAAA,uBAAU,GAAE;;;;gEAKZ;AAGK;IADL,IAAA,gBAAG,EAAC,GAAG,CAAC;;;;4CAGR;AAGK;IADL,IAAA,iBAAI,EAAC,GAAG,CAAC;;;;+CAKT;AAGK;IADL,IAAA,kBAAK,EAAC,YAAY,CAAC;;;;+CAKnB;AAIK;IAFL,IAAA,uBAAU,EAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAA,mBAAM,EAAC,YAAY,CAAC;;;;+CAOpB;yBAxCW,cAAc;IAH1B,IAAA,uBAAU,GAAE;IACZ,IAAA,2BAAc,EAAC,OAAO,CAAC;IACvB,IAAA,gBAAO,GAAE;qCAIuB,wBAAU;GAH9B,cAAc,CAyC1B"}
|
|
@@ -6,14 +6,11 @@ import type { UserManagementMailer } from '../UserManagement/email';
|
|
|
6
6
|
import type { PublicUser, IDatabaseCollections, IExternalHooksClass, IInternalHooksClass } from '../Interfaces';
|
|
7
7
|
import type { ActiveWorkflowRunner } from '../ActiveWorkflowRunner';
|
|
8
8
|
import type { PostHogClient } from '../posthog';
|
|
9
|
-
import type { JwtService } from '../services/jwt.service';
|
|
10
|
-
import type { RoleService } from '../services/role.service';
|
|
11
9
|
export declare class UsersController {
|
|
12
10
|
private config;
|
|
13
11
|
private logger;
|
|
14
12
|
private externalHooks;
|
|
15
13
|
private internalHooks;
|
|
16
|
-
private userRepository;
|
|
17
14
|
private sharedCredentialsRepository;
|
|
18
15
|
private sharedWorkflowRepository;
|
|
19
16
|
private activeWorkflowRunner;
|
|
@@ -21,17 +18,16 @@ export declare class UsersController {
|
|
|
21
18
|
private jwtService;
|
|
22
19
|
private postHog?;
|
|
23
20
|
private roleService;
|
|
24
|
-
|
|
21
|
+
private userService;
|
|
22
|
+
constructor({ config, logger, externalHooks, internalHooks, repositories, activeWorkflowRunner, mailer, postHog, }: {
|
|
25
23
|
config: Config;
|
|
26
24
|
logger: ILogger;
|
|
27
25
|
externalHooks: IExternalHooksClass;
|
|
28
26
|
internalHooks: IInternalHooksClass;
|
|
29
|
-
repositories: Pick<IDatabaseCollections, '
|
|
27
|
+
repositories: Pick<IDatabaseCollections, 'SharedCredentials' | 'SharedWorkflow'>;
|
|
30
28
|
activeWorkflowRunner: ActiveWorkflowRunner;
|
|
31
29
|
mailer: UserManagementMailer;
|
|
32
|
-
jwtService: JwtService;
|
|
33
30
|
postHog?: PostHogClient;
|
|
34
|
-
roleService: RoleService;
|
|
35
31
|
});
|
|
36
32
|
sendEmailInvites(req: UserRequest.Invite): Promise<{
|
|
37
33
|
user: {
|
|
@@ -26,25 +26,27 @@ const ResponseHelper_1 = require("../ResponseHelper");
|
|
|
26
26
|
const requests_1 = require("../requests");
|
|
27
27
|
const AuthIdentity_1 = require("../databases/entities/AuthIdentity");
|
|
28
28
|
const samlHelpers_1 = require("../sso/saml/samlHelpers");
|
|
29
|
-
const user_service_1 = require("../user/user.service");
|
|
30
29
|
const class_transformer_1 = require("class-transformer");
|
|
31
30
|
const License_1 = require("../License");
|
|
32
31
|
const typedi_1 = require("typedi");
|
|
33
32
|
const constants_1 = require("../constants");
|
|
33
|
+
const jwt_service_1 = require("../services/jwt.service");
|
|
34
|
+
const role_service_1 = require("../services/role.service");
|
|
35
|
+
const user_service_1 = require("../services/user.service");
|
|
34
36
|
let UsersController = exports.UsersController = class UsersController {
|
|
35
|
-
constructor({ config, logger, externalHooks, internalHooks, repositories, activeWorkflowRunner, mailer,
|
|
37
|
+
constructor({ config, logger, externalHooks, internalHooks, repositories, activeWorkflowRunner, mailer, postHog, }) {
|
|
36
38
|
this.config = config;
|
|
37
39
|
this.logger = logger;
|
|
38
40
|
this.externalHooks = externalHooks;
|
|
39
41
|
this.internalHooks = internalHooks;
|
|
40
|
-
this.userRepository = repositories.User;
|
|
41
42
|
this.sharedCredentialsRepository = repositories.SharedCredentials;
|
|
42
43
|
this.sharedWorkflowRepository = repositories.SharedWorkflow;
|
|
43
44
|
this.activeWorkflowRunner = activeWorkflowRunner;
|
|
44
45
|
this.mailer = mailer;
|
|
45
|
-
this.jwtService =
|
|
46
|
+
this.jwtService = typedi_1.Container.get(jwt_service_1.JwtService);
|
|
46
47
|
this.postHog = postHog;
|
|
47
|
-
this.roleService =
|
|
48
|
+
this.roleService = typedi_1.Container.get(role_service_1.RoleService);
|
|
49
|
+
this.userService = typedi_1.Container.get(user_service_1.UserService);
|
|
48
50
|
}
|
|
49
51
|
async sendEmailInvites(req) {
|
|
50
52
|
const isWithinUsersLimit = typedi_1.Container.get(License_1.License).isWithinUsersLimit();
|
|
@@ -84,7 +86,7 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
84
86
|
this.logger.error('Request to send email invite(s) to user(s) failed because no global member role was found in database');
|
|
85
87
|
throw new ResponseHelper_1.InternalServerError('Members role not found in database - inconsistent state');
|
|
86
88
|
}
|
|
87
|
-
const existingUsers = await this.
|
|
89
|
+
const existingUsers = await this.userService.findMany({
|
|
88
90
|
where: { email: (0, typeorm_1.In)(Object.keys(createUsers)) },
|
|
89
91
|
});
|
|
90
92
|
existingUsers.forEach((user) => {
|
|
@@ -98,7 +100,7 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
98
100
|
const total = usersToSetUp.length;
|
|
99
101
|
this.logger.debug(total > 1 ? `Creating ${total} user shells...` : 'Creating 1 user shell...');
|
|
100
102
|
try {
|
|
101
|
-
await this.
|
|
103
|
+
await this.userService.getManager().transaction(async (transactionManager) => Promise.all(usersToSetUp.map(async (email) => {
|
|
102
104
|
const newUser = Object.assign(new User_1.User(), {
|
|
103
105
|
email,
|
|
104
106
|
globalRole: role,
|
|
@@ -185,7 +187,7 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
185
187
|
throw new ResponseHelper_1.BadRequestError('Invalid payload');
|
|
186
188
|
}
|
|
187
189
|
const validPassword = (0, UserManagementHelper_1.validatePassword)(password);
|
|
188
|
-
const users = await this.
|
|
190
|
+
const users = await this.userService.findMany({
|
|
189
191
|
where: { id: (0, typeorm_1.In)([inviterId, inviteeId]) },
|
|
190
192
|
relations: ['globalRole'],
|
|
191
193
|
});
|
|
@@ -204,7 +206,7 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
204
206
|
invitee.firstName = firstName;
|
|
205
207
|
invitee.lastName = lastName;
|
|
206
208
|
invitee.password = await (0, UserManagementHelper_1.hashPassword)(validPassword);
|
|
207
|
-
const updatedUser = await this.
|
|
209
|
+
const updatedUser = await this.userService.save(invitee);
|
|
208
210
|
await (0, jwt_1.issueCookie)(res, updatedUser);
|
|
209
211
|
void this.internalHooks.onUserSignup(updatedUser, {
|
|
210
212
|
user_type: 'email',
|
|
@@ -215,11 +217,11 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
215
217
|
return (0, UserManagementHelper_1.withFeatureFlags)(this.postHog, (0, UserManagementHelper_1.sanitizeUser)(updatedUser));
|
|
216
218
|
}
|
|
217
219
|
async listUsers(req) {
|
|
218
|
-
const users = await this.
|
|
220
|
+
const users = await this.userService.findMany({ relations: ['globalRole', 'authIdentities'] });
|
|
219
221
|
return users.map((user) => (0, UserManagementHelper_1.addInviteLinkToUser)((0, UserManagementHelper_1.sanitizeUser)(user, ['personalizationAnswers']), req.user.id));
|
|
220
222
|
}
|
|
221
223
|
async getUserPasswordResetLink(req) {
|
|
222
|
-
const user = await this.
|
|
224
|
+
const user = await this.userService.findOneOrFail({
|
|
223
225
|
where: { id: req.params.id },
|
|
224
226
|
});
|
|
225
227
|
if (!user) {
|
|
@@ -229,7 +231,7 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
229
231
|
expiresIn: '1d',
|
|
230
232
|
});
|
|
231
233
|
const baseUrl = (0, UserManagementHelper_1.getInstanceBaseUrl)();
|
|
232
|
-
const link =
|
|
234
|
+
const link = this.userService.generatePasswordResetUrl(baseUrl, resetPasswordToken);
|
|
233
235
|
return {
|
|
234
236
|
link,
|
|
235
237
|
};
|
|
@@ -237,8 +239,8 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
237
239
|
async updateUserSettings(req) {
|
|
238
240
|
const payload = (0, class_transformer_1.plainToInstance)(requests_1.UserSettingsUpdatePayload, req.body);
|
|
239
241
|
const id = req.params.id;
|
|
240
|
-
await
|
|
241
|
-
const user = await this.
|
|
242
|
+
await this.userService.updateSettings(id, payload);
|
|
243
|
+
const user = await this.userService.findOneOrFail({
|
|
242
244
|
select: ['settings'],
|
|
243
245
|
where: { id },
|
|
244
246
|
});
|
|
@@ -254,7 +256,7 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
254
256
|
if (transferId === idToDelete) {
|
|
255
257
|
throw new ResponseHelper_1.BadRequestError('Request to delete a user failed because the user to delete and the transferee are the same user');
|
|
256
258
|
}
|
|
257
|
-
const users = await this.
|
|
259
|
+
const users = await this.userService.findMany({
|
|
258
260
|
where: { id: (0, typeorm_1.In)([transferId, idToDelete]) },
|
|
259
261
|
});
|
|
260
262
|
if (!users.length || (transferId && users.length !== 2)) {
|
|
@@ -276,7 +278,7 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
276
278
|
]);
|
|
277
279
|
if (transferId) {
|
|
278
280
|
const transferee = users.find((user) => user.id === transferId);
|
|
279
|
-
await this.
|
|
281
|
+
await this.userService.getManager().transaction(async (transactionManager) => {
|
|
280
282
|
const sharedWorkflowIds = await transactionManager
|
|
281
283
|
.getRepository(SharedWorkflow_1.SharedWorkflow)
|
|
282
284
|
.find({
|
|
@@ -322,7 +324,7 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
322
324
|
where: { userId: userToDelete.id, roleId: credentialOwnerRole === null || credentialOwnerRole === void 0 ? void 0 : credentialOwnerRole.id },
|
|
323
325
|
}),
|
|
324
326
|
]);
|
|
325
|
-
await this.
|
|
327
|
+
await this.userService.getManager().transaction(async (transactionManager) => {
|
|
326
328
|
const ownedWorkflows = await Promise.all(ownedSharedWorkflows.map(async ({ workflow }) => {
|
|
327
329
|
if (workflow.active) {
|
|
328
330
|
await this.activeWorkflowRunner.remove(workflow.id);
|
|
@@ -353,7 +355,7 @@ let UsersController = exports.UsersController = class UsersController {
|
|
|
353
355
|
this.logger.error('Request to reinvite a user failed because email sending was not set up');
|
|
354
356
|
throw new ResponseHelper_1.InternalServerError('Email sending must be set up in order to invite other users');
|
|
355
357
|
}
|
|
356
|
-
const reinvitee = await this.
|
|
358
|
+
const reinvitee = await this.userService.findOneBy({ id: idToReinvite });
|
|
357
359
|
if (!reinvitee) {
|
|
358
360
|
this.logger.debug('Request to reinvite a user failed because the ID of the reinvitee was not found in database');
|
|
359
361
|
throw new ResponseHelper_1.NotFoundError('Could not find user');
|