n8n 1.42.1 → 1.43.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/AbstractServer.js +4 -1
- package/dist/AbstractServer.js.map +1 -1
- package/dist/ActiveWebhooks.js +2 -2
- package/dist/ActiveWebhooks.js.map +1 -1
- package/dist/ActiveWorkflowManager.js +2 -7
- package/dist/ActiveWorkflowManager.js.map +1 -1
- package/dist/CredentialsHelper.d.ts +5 -7
- package/dist/CredentialsHelper.js +38 -34
- package/dist/CredentialsHelper.js.map +1 -1
- package/dist/Interfaces.d.ts +2 -1
- package/dist/Interfaces.js.map +1 -1
- package/dist/InternalHooks.d.ts +29 -3
- package/dist/InternalHooks.js +39 -9
- package/dist/InternalHooks.js.map +1 -1
- package/dist/Ldap/helpers.d.ts +1 -29
- package/dist/Ldap/helpers.js +16 -7
- package/dist/Ldap/helpers.js.map +1 -1
- package/dist/Ldap/ldap.service.js +1 -1
- package/dist/Ldap/ldap.service.js.map +1 -1
- package/dist/License.d.ts +4 -0
- package/dist/License.js +13 -0
- package/dist/License.js.map +1 -1
- package/dist/Mfa/mfa.service.d.ts +1 -1
- package/dist/Mfa/mfa.service.js +22 -10
- package/dist/Mfa/mfa.service.js.map +1 -1
- package/dist/PublicApi/types.d.ts +5 -2
- package/dist/PublicApi/types.js.map +1 -1
- package/dist/PublicApi/v1/handlers/audit/audit.handler.d.ts +3 -1
- package/dist/PublicApi/v1/handlers/audit/audit.handler.js +1 -1
- package/dist/PublicApi/v1/handlers/audit/audit.handler.js.map +1 -1
- package/dist/PublicApi/v1/handlers/credentials/credentials.handler.d.ts +6 -5
- package/dist/PublicApi/v1/handlers/credentials/credentials.handler.js +1 -3
- package/dist/PublicApi/v1/handlers/credentials/credentials.handler.js.map +1 -1
- package/dist/PublicApi/v1/handlers/credentials/credentials.service.js +4 -2
- package/dist/PublicApi/v1/handlers/credentials/credentials.service.js.map +1 -1
- package/dist/PublicApi/v1/handlers/executions/executions.handler.d.ts +2 -2
- package/dist/PublicApi/v1/handlers/executions/executions.handler.js +3 -6
- package/dist/PublicApi/v1/handlers/executions/executions.handler.js.map +1 -1
- package/dist/PublicApi/v1/handlers/sourceControl/sourceControl.handler.d.ts +3 -1
- package/dist/PublicApi/v1/handlers/sourceControl/sourceControl.handler.js +1 -1
- package/dist/PublicApi/v1/handlers/sourceControl/sourceControl.handler.js.map +1 -1
- package/dist/PublicApi/v1/handlers/tags/tags.handler.d.ts +15 -5
- package/dist/PublicApi/v1/handlers/tags/tags.handler.js +5 -5
- package/dist/PublicApi/v1/handlers/tags/tags.handler.js.map +1 -1
- package/dist/PublicApi/v1/handlers/users/users.handler.ee.d.ts +6 -3
- package/dist/PublicApi/v1/handlers/users/users.handler.ee.js +2 -2
- package/dist/PublicApi/v1/handlers/users/users.handler.ee.js.map +1 -1
- package/dist/PublicApi/v1/handlers/workflows/workflows.handler.d.ts +22 -8
- package/dist/PublicApi/v1/handlers/workflows/workflows.handler.js +48 -44
- package/dist/PublicApi/v1/handlers/workflows/workflows.handler.js.map +1 -1
- package/dist/PublicApi/v1/handlers/workflows/workflows.service.d.ts +4 -2
- package/dist/PublicApi/v1/handlers/workflows/workflows.service.js +18 -13
- package/dist/PublicApi/v1/handlers/workflows/workflows.service.js.map +1 -1
- package/dist/PublicApi/v1/shared/middlewares/global.middleware.d.ts +8 -2
- package/dist/PublicApi/v1/shared/middlewares/global.middleware.js +22 -7
- package/dist/PublicApi/v1/shared/middlewares/global.middleware.js.map +1 -1
- package/dist/Server.js +4 -0
- package/dist/Server.js.map +1 -1
- package/dist/UserManagement/PermissionChecker.d.ts +4 -6
- package/dist/UserManagement/PermissionChecker.js +22 -31
- package/dist/UserManagement/PermissionChecker.js.map +1 -1
- package/dist/UserManagement/email/NodeMailer.js +1 -0
- package/dist/UserManagement/email/NodeMailer.js.map +1 -1
- package/dist/WaitTracker.js +3 -3
- package/dist/WaitTracker.js.map +1 -1
- package/dist/WaitingWebhooks.js +1 -8
- package/dist/WaitingWebhooks.js.map +1 -1
- package/dist/WebhookHelpers.js +7 -14
- package/dist/WebhookHelpers.js.map +1 -1
- package/dist/WorkflowExecuteAdditionalData.d.ts +2 -2
- package/dist/WorkflowExecuteAdditionalData.js +10 -11
- package/dist/WorkflowExecuteAdditionalData.js.map +1 -1
- package/dist/WorkflowRunner.js +1 -1
- package/dist/WorkflowRunner.js.map +1 -1
- package/dist/auth/auth.service.js +2 -2
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/build.tsbuildinfo +1 -1
- package/dist/commands/import/credentials.d.ts +2 -2
- package/dist/commands/import/credentials.js +55 -31
- package/dist/commands/import/credentials.js.map +1 -1
- package/dist/commands/import/workflow.d.ts +2 -1
- package/dist/commands/import/workflow.js +50 -21
- package/dist/commands/import/workflow.js.map +1 -1
- package/dist/commands/ldap/reset.d.ts +9 -0
- package/dist/commands/ldap/reset.js +96 -1
- package/dist/commands/ldap/reset.js.map +1 -1
- package/dist/commands/mfa/disable.js +11 -2
- package/dist/commands/mfa/disable.js.map +1 -1
- package/dist/commands/user-management/reset.js +5 -3
- package/dist/commands/user-management/reset.js.map +1 -1
- package/dist/commands/worker.js +1 -3
- package/dist/commands/worker.js.map +1 -1
- package/dist/config/index.d.ts +1 -0
- package/dist/config/schema.d.ts +6 -0
- package/dist/config/schema.js +6 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/constants.d.ts +19 -14
- package/dist/constants.js +5 -0
- package/dist/constants.js.map +1 -1
- package/dist/controllers/auth.controller.js +2 -2
- package/dist/controllers/auth.controller.js.map +1 -1
- package/dist/controllers/dynamicNodeParameters.controller.d.ts +3 -5
- package/dist/controllers/dynamicNodeParameters.controller.js +10 -37
- package/dist/controllers/dynamicNodeParameters.controller.js.map +1 -1
- package/dist/controllers/invitation.controller.js +3 -3
- package/dist/controllers/invitation.controller.js.map +1 -1
- package/dist/controllers/oauth/abstractOAuth.controller.js +1 -1
- package/dist/controllers/oauth/abstractOAuth.controller.js.map +1 -1
- package/dist/controllers/passwordReset.controller.js +4 -4
- package/dist/controllers/passwordReset.controller.js.map +1 -1
- package/dist/controllers/project.controller.d.ts +32 -0
- package/dist/controllers/project.controller.js +227 -0
- package/dist/controllers/project.controller.js.map +1 -0
- package/dist/controllers/role.controller.d.ts +13 -0
- package/dist/controllers/role.controller.js +42 -0
- package/dist/controllers/role.controller.js.map +1 -0
- package/dist/controllers/users.controller.d.ts +9 -3
- package/dist/controllers/users.controller.js +62 -64
- package/dist/controllers/users.controller.js.map +1 -1
- package/dist/controllers/workflowStatistics.controller.d.ts +1 -1
- package/dist/controllers/workflowStatistics.controller.js +5 -3
- package/dist/controllers/workflowStatistics.controller.js.map +1 -1
- package/dist/credentials/credentials.controller.d.ts +25 -12
- package/dist/credentials/credentials.controller.js +67 -137
- package/dist/credentials/credentials.controller.js.map +1 -1
- package/dist/credentials/credentials.service.d.ts +30 -7
- package/dist/credentials/credentials.service.ee.d.ts +23 -15
- package/dist/credentials/credentials.service.ee.js +42 -39
- package/dist/credentials/credentials.service.ee.js.map +1 -1
- package/dist/credentials/credentials.service.js +157 -28
- package/dist/credentials/credentials.service.js.map +1 -1
- package/dist/databases/config.js +2 -0
- package/dist/databases/config.js.map +1 -1
- package/dist/databases/dsl/Column.js +5 -2
- package/dist/databases/dsl/Column.js.map +1 -1
- package/dist/databases/dsl/Table.d.ts +1 -0
- package/dist/databases/dsl/Table.js +2 -0
- package/dist/databases/dsl/Table.js.map +1 -1
- package/dist/databases/entities/ExecutionEntity.js +1 -1
- package/dist/databases/entities/ExecutionEntity.js.map +1 -1
- package/dist/databases/entities/Project.d.ts +12 -0
- package/dist/databases/entities/Project.js +41 -0
- package/dist/databases/entities/Project.js.map +1 -0
- package/dist/databases/entities/ProjectRelation.d.ts +11 -0
- package/dist/databases/entities/ProjectRelation.js +43 -0
- package/dist/databases/entities/ProjectRelation.js.map +1 -0
- package/dist/databases/entities/SharedCredentials.d.ts +3 -3
- package/dist/databases/entities/SharedCredentials.js +9 -9
- package/dist/databases/entities/SharedCredentials.js.map +1 -1
- package/dist/databases/entities/SharedWorkflow.d.ts +4 -4
- package/dist/databases/entities/SharedWorkflow.js +9 -9
- package/dist/databases/entities/SharedWorkflow.js.map +1 -1
- package/dist/databases/entities/User.d.ts +4 -1
- package/dist/databases/entities/User.js +20 -5
- package/dist/databases/entities/User.js.map +1 -1
- package/dist/databases/entities/index.d.ts +4 -0
- package/dist/databases/entities/index.js +4 -0
- package/dist/databases/entities/index.js.map +1 -1
- package/dist/databases/migrations/common/1711390882123-MoveSshKeysToDatabase.js +4 -0
- package/dist/databases/migrations/common/1711390882123-MoveSshKeysToDatabase.js.map +1 -1
- package/dist/databases/migrations/common/1714133768519-CreateProject.d.ts +13 -0
- package/dist/databases/migrations/common/1714133768519-CreateProject.js +221 -0
- package/dist/databases/migrations/common/1714133768519-CreateProject.js.map +1 -0
- package/dist/databases/migrations/common/1714133768521-MakeExecutionStatusNonNullable.d.ts +4 -0
- package/dist/databases/migrations/common/1714133768521-MakeExecutionStatusNonNullable.js +22 -0
- package/dist/databases/migrations/common/1714133768521-MakeExecutionStatusNonNullable.js.map +1 -0
- package/dist/databases/migrations/mysqldb/index.js +4 -0
- package/dist/databases/migrations/mysqldb/index.js.map +1 -1
- package/dist/databases/migrations/postgresdb/index.js +4 -0
- package/dist/databases/migrations/postgresdb/index.js.map +1 -1
- package/dist/databases/migrations/sqlite/index.js +4 -0
- package/dist/databases/migrations/sqlite/index.js.map +1 -1
- package/dist/databases/repositories/credentials.repository.d.ts +0 -2
- package/dist/databases/repositories/credentials.repository.js +10 -10
- package/dist/databases/repositories/credentials.repository.js.map +1 -1
- package/dist/databases/repositories/project.repository.d.ts +13 -0
- package/dist/databases/repositories/project.repository.js +56 -0
- package/dist/databases/repositories/project.repository.js.map +1 -0
- package/dist/databases/repositories/projectRelation.repository.d.ts +12 -0
- package/dist/databases/repositories/projectRelation.repository.js +59 -0
- package/dist/databases/repositories/projectRelation.repository.js.map +1 -0
- package/dist/databases/repositories/sharedCredentials.repository.d.ts +19 -8
- package/dist/databases/repositories/sharedCredentials.repository.js +73 -24
- package/dist/databases/repositories/sharedCredentials.repository.js.map +1 -1
- package/dist/databases/repositories/sharedWorkflow.repository.d.ts +14 -21
- package/dist/databases/repositories/sharedWorkflow.repository.js +104 -71
- package/dist/databases/repositories/sharedWorkflow.repository.js.map +1 -1
- package/dist/databases/repositories/user.repository.d.ts +7 -1
- package/dist/databases/repositories/user.repository.js +25 -0
- package/dist/databases/repositories/user.repository.js.map +1 -1
- package/dist/databases/repositories/workflow.repository.d.ts +3 -6
- package/dist/databases/repositories/workflow.repository.js +13 -24
- package/dist/databases/repositories/workflow.repository.js.map +1 -1
- package/dist/databases/repositories/workflowStatistics.repository.js +13 -11
- package/dist/databases/repositories/workflowStatistics.repository.js.map +1 -1
- package/dist/databases/subscribers/UserSubscriber.d.ts +6 -0
- package/dist/databases/subscribers/UserSubscriber.js +64 -0
- package/dist/databases/subscribers/UserSubscriber.js.map +1 -0
- package/dist/databases/subscribers/index.d.ts +4 -0
- package/dist/databases/subscribers/index.js +8 -0
- package/dist/databases/subscribers/index.js.map +1 -0
- package/dist/decorators/{Scopes.d.ts → Scoped.d.ts} +1 -0
- package/dist/decorators/Scoped.js +26 -0
- package/dist/decorators/Scoped.js.map +1 -0
- package/dist/decorators/constants.d.ts +1 -1
- package/dist/decorators/constants.js +2 -2
- package/dist/decorators/constants.js.map +1 -1
- package/dist/decorators/index.d.ts +1 -1
- package/dist/decorators/index.js +4 -3
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/registerController.d.ts +2 -2
- package/dist/decorators/registerController.js +17 -13
- package/dist/decorators/registerController.js.map +1 -1
- package/dist/decorators/types.d.ts +6 -1
- package/dist/environments/sourceControl/sourceControlExport.service.ee.js +44 -2
- package/dist/environments/sourceControl/sourceControlExport.service.ee.js.map +1 -1
- package/dist/environments/sourceControl/sourceControlImport.service.ee.d.ts +2 -1
- package/dist/environments/sourceControl/sourceControlImport.service.ee.js +75 -55
- package/dist/environments/sourceControl/sourceControlImport.service.ee.js.map +1 -1
- package/dist/environments/sourceControl/types/exportableCredential.d.ts +2 -1
- package/dist/environments/sourceControl/types/exportableWorkflow.d.ts +2 -1
- package/dist/environments/sourceControl/types/resourceOwner.d.ts +8 -0
- package/dist/environments/sourceControl/types/resourceOwner.js +3 -0
- package/dist/environments/sourceControl/types/resourceOwner.js.map +1 -0
- package/dist/errors/aborted-execution-retry.error.d.ts +4 -0
- package/dist/errors/aborted-execution-retry.error.js +13 -0
- package/dist/errors/aborted-execution-retry.error.js.map +1 -0
- package/dist/errors/response-errors/forbidden.error.d.ts +4 -0
- package/dist/errors/response-errors/forbidden.error.js +11 -0
- package/dist/errors/response-errors/forbidden.error.js.map +1 -0
- package/dist/errors/response-errors/unauthenticated.error.d.ts +4 -0
- package/dist/errors/response-errors/unauthenticated.error.js +11 -0
- package/dist/errors/response-errors/unauthenticated.error.js.map +1 -0
- package/dist/executions/execution.service.ee.js +8 -7
- package/dist/executions/execution.service.ee.js.map +1 -1
- package/dist/executions/execution.service.js +5 -0
- package/dist/executions/execution.service.js.map +1 -1
- package/dist/executions/executions.controller.js +15 -9
- package/dist/executions/executions.controller.js.map +1 -1
- package/dist/middlewares/listQuery/dtos/credentials.filter.dto.d.ts +1 -0
- package/dist/middlewares/listQuery/dtos/credentials.filter.dto.js +6 -0
- package/dist/middlewares/listQuery/dtos/credentials.filter.dto.js.map +1 -1
- package/dist/middlewares/listQuery/dtos/workflow.filter.dto.d.ts +1 -0
- package/dist/middlewares/listQuery/dtos/workflow.filter.dto.js +6 -0
- package/dist/middlewares/listQuery/dtos/workflow.filter.dto.js.map +1 -1
- package/dist/permissions/checkAccess.d.ts +7 -0
- package/dist/permissions/checkAccess.js +64 -0
- package/dist/permissions/checkAccess.js.map +1 -0
- package/dist/permissions/global-roles.d.ts +4 -0
- package/dist/permissions/{roles.js → global-roles.js} +11 -5
- package/dist/permissions/global-roles.js.map +1 -0
- package/dist/permissions/project-roles.d.ts +4 -0
- package/dist/permissions/project-roles.js +53 -0
- package/dist/permissions/project-roles.js.map +1 -0
- package/dist/permissions/resource-roles.d.ts +5 -0
- package/dist/permissions/resource-roles.js +23 -0
- package/dist/permissions/resource-roles.js.map +1 -0
- package/dist/push/index.d.ts +1 -1
- package/dist/requests.d.ts +83 -17
- package/dist/requests.js.map +1 -1
- package/dist/services/activeWorkflows.service.js +4 -2
- package/dist/services/activeWorkflows.service.js.map +1 -1
- package/dist/services/credentials-tester.service.js +1 -1
- package/dist/services/credentials-tester.service.js.map +1 -1
- package/dist/services/events.service.js +19 -13
- package/dist/services/events.service.js.map +1 -1
- package/dist/services/frontend.service.js +6 -0
- package/dist/services/frontend.service.js.map +1 -1
- package/dist/services/import.service.d.ts +1 -1
- package/dist/services/import.service.js +4 -5
- package/dist/services/import.service.js.map +1 -1
- package/dist/services/ownership.service.d.ts +9 -3
- package/dist/services/ownership.service.js +47 -15
- package/dist/services/ownership.service.js.map +1 -1
- package/dist/services/project.service.d.ts +61 -0
- package/dist/services/project.service.js +277 -0
- package/dist/services/project.service.js.map +1 -0
- package/dist/services/role.service.d.ts +31 -0
- package/dist/services/role.service.js +142 -0
- package/dist/services/role.service.js.map +1 -0
- package/dist/services/user.service.d.ts +3 -3
- package/dist/services/user.service.js +14 -6
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/userOnboarding.service.js +6 -1
- package/dist/services/userOnboarding.service.js.map +1 -1
- package/dist/sso/saml/saml.service.ee.js +1 -1
- package/dist/sso/saml/saml.service.ee.js.map +1 -1
- package/dist/sso/saml/samlHelpers.d.ts +1 -1
- package/dist/sso/saml/samlHelpers.js +14 -22
- package/dist/sso/saml/samlHelpers.js.map +1 -1
- package/dist/telemetry/index.js +4 -0
- package/dist/telemetry/index.js.map +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +3 -1
- package/dist/utils.js.map +1 -1
- package/dist/workflows/workflow.request.d.ts +12 -4
- package/dist/workflows/workflow.service.d.ts +16 -7
- package/dist/workflows/workflow.service.ee.d.ts +8 -8
- package/dist/workflows/workflow.service.ee.js +28 -35
- package/dist/workflows/workflow.service.ee.js.map +1 -1
- package/dist/workflows/workflow.service.js +93 -39
- package/dist/workflows/workflow.service.js.map +1 -1
- package/dist/workflows/workflowExecution.service.d.ts +2 -1
- package/dist/workflows/workflowExecution.service.js +2 -2
- package/dist/workflows/workflowExecution.service.js.map +1 -1
- package/dist/workflows/workflowHistory/workflowHistory.service.ee.d.ts +0 -1
- package/dist/workflows/workflowHistory/workflowHistory.service.ee.js +10 -14
- package/dist/workflows/workflowHistory/workflowHistory.service.ee.js.map +1 -1
- package/dist/workflows/workflowSharing.service.d.ts +12 -3
- package/dist/workflows/workflowSharing.service.js +24 -10
- package/dist/workflows/workflowSharing.service.js.map +1 -1
- package/dist/workflows/workflows.controller.d.ts +98 -11
- package/dist/workflows/workflows.controller.js +106 -77
- package/dist/workflows/workflows.controller.js.map +1 -1
- package/dist/workflows/workflows.types.d.ts +8 -2
- package/package.json +8 -8
- package/dist/decorators/Scopes.js +0 -15
- package/dist/decorators/Scopes.js.map +0 -1
- package/dist/errors/response-errors/unauthorized.error.d.ts +0 -4
- package/dist/errors/response-errors/unauthorized.error.js +0 -11
- package/dist/errors/response-errors/unauthorized.error.js.map +0 -1
- package/dist/permissions/roles.d.ts +0 -4
- package/dist/permissions/roles.js.map +0 -1
|
@@ -7,6 +7,7 @@ export declare class ImportCredentialsCommand extends BaseCommand {
|
|
|
7
7
|
input: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
8
|
separate: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
9
|
userId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
projectId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
11
|
};
|
|
11
12
|
private transactionManager;
|
|
12
13
|
init(): Promise<void>;
|
|
@@ -14,10 +15,9 @@ export declare class ImportCredentialsCommand extends BaseCommand {
|
|
|
14
15
|
catch(error: Error): Promise<void>;
|
|
15
16
|
private reportSuccess;
|
|
16
17
|
private storeCredential;
|
|
17
|
-
private getOwner;
|
|
18
18
|
private checkRelations;
|
|
19
19
|
private readCredentials;
|
|
20
|
-
private getAssignee;
|
|
21
20
|
private getCredentialOwner;
|
|
22
21
|
private credentialExists;
|
|
22
|
+
private getProject;
|
|
23
23
|
}
|
|
@@ -39,7 +39,9 @@ const commandHelpers_1 = require("../../databases/utils/commandHelpers");
|
|
|
39
39
|
const BaseCommand_1 = require("../BaseCommand");
|
|
40
40
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
41
41
|
const constants_1 = require("../../constants");
|
|
42
|
-
const
|
|
42
|
+
const project_repository_1 = require("../../databases/repositories/project.repository");
|
|
43
|
+
const Project_1 = require("../../databases/entities/Project");
|
|
44
|
+
const User_1 = require("../../databases/entities/User");
|
|
43
45
|
class ImportCredentialsCommand extends BaseCommand_1.BaseCommand {
|
|
44
46
|
async init() {
|
|
45
47
|
(0, commandHelpers_1.disableAutoGeneratedIds)(CredentialsEntity_1.CredentialsEntity);
|
|
@@ -59,16 +61,19 @@ class ImportCredentialsCommand extends BaseCommand_1.BaseCommand {
|
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
|
-
|
|
64
|
+
if (flags.projectId && flags.userId) {
|
|
65
|
+
throw new n8n_workflow_1.ApplicationError('You cannot use `--userId` and `--projectId` together. Use one or the other.');
|
|
66
|
+
}
|
|
63
67
|
const credentials = await this.readCredentials(flags.input, flags.separate);
|
|
64
68
|
await Db.getConnection().transaction(async (transactionManager) => {
|
|
65
69
|
this.transactionManager = transactionManager;
|
|
66
|
-
const
|
|
70
|
+
const project = await this.getProject(flags.userId, flags.projectId);
|
|
71
|
+
const result = await this.checkRelations(credentials, flags.projectId, flags.userId);
|
|
67
72
|
if (!result.success) {
|
|
68
73
|
throw new n8n_workflow_1.ApplicationError(result.message);
|
|
69
74
|
}
|
|
70
75
|
for (const credential of credentials) {
|
|
71
|
-
await this.storeCredential(credential,
|
|
76
|
+
await this.storeCredential(credential, project);
|
|
72
77
|
}
|
|
73
78
|
});
|
|
74
79
|
this.reportSuccess(credentials.length);
|
|
@@ -80,7 +85,7 @@ class ImportCredentialsCommand extends BaseCommand_1.BaseCommand {
|
|
|
80
85
|
reportSuccess(total) {
|
|
81
86
|
this.logger.info(`Successfully imported ${total} ${total === 1 ? 'credential.' : 'credentials.'}`);
|
|
82
87
|
}
|
|
83
|
-
async storeCredential(credential,
|
|
88
|
+
async storeCredential(credential, project) {
|
|
84
89
|
const result = await this.transactionManager.upsert(CredentialsEntity_1.CredentialsEntity, credential, ['id']);
|
|
85
90
|
const sharingExists = await this.transactionManager.existsBy(SharedCredentials_1.SharedCredentials, {
|
|
86
91
|
credentialsId: credential.id,
|
|
@@ -89,20 +94,13 @@ class ImportCredentialsCommand extends BaseCommand_1.BaseCommand {
|
|
|
89
94
|
if (!sharingExists) {
|
|
90
95
|
await this.transactionManager.upsert(SharedCredentials_1.SharedCredentials, {
|
|
91
96
|
credentialsId: result.identifiers[0].id,
|
|
92
|
-
userId: user.id,
|
|
93
97
|
role: 'credential:owner',
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
async getOwner() {
|
|
98
|
-
const owner = await typedi_1.Container.get(user_repository_1.UserRepository).findOneBy({ role: 'global:owner' });
|
|
99
|
-
if (!owner) {
|
|
100
|
-
throw new n8n_workflow_1.ApplicationError(`Failed to find owner. ${constants_1.UM_FIX_INSTRUCTION}`);
|
|
98
|
+
projectId: project.id,
|
|
99
|
+
}, ['credentialsId', 'projectId']);
|
|
101
100
|
}
|
|
102
|
-
return owner;
|
|
103
101
|
}
|
|
104
|
-
async checkRelations(credentials, userId) {
|
|
105
|
-
if (!userId) {
|
|
102
|
+
async checkRelations(credentials, projectId, userId) {
|
|
103
|
+
if (!projectId && !userId) {
|
|
106
104
|
return {
|
|
107
105
|
success: true,
|
|
108
106
|
message: undefined,
|
|
@@ -115,14 +113,21 @@ class ImportCredentialsCommand extends BaseCommand_1.BaseCommand {
|
|
|
115
113
|
if (!(await this.credentialExists(credential.id))) {
|
|
116
114
|
continue;
|
|
117
115
|
}
|
|
118
|
-
const
|
|
119
|
-
if (!
|
|
116
|
+
const { user, project: ownerProject } = await this.getCredentialOwner(credential.id);
|
|
117
|
+
if (!ownerProject) {
|
|
120
118
|
continue;
|
|
121
119
|
}
|
|
122
|
-
if (
|
|
120
|
+
if (ownerProject.id !== projectId) {
|
|
121
|
+
const currentOwner = ownerProject.type === 'personal'
|
|
122
|
+
? `the user with the ID "${user.id}"`
|
|
123
|
+
: `the project with the ID "${ownerProject.id}"`;
|
|
124
|
+
const newOwner = userId
|
|
125
|
+
?
|
|
126
|
+
`the user with the ID "${userId}"`
|
|
127
|
+
: `the project with the ID "${projectId}"`;
|
|
123
128
|
return {
|
|
124
129
|
success: false,
|
|
125
|
-
message: `The credential with
|
|
130
|
+
message: `The credential with ID "${credential.id}" is already owned by ${currentOwner}. It can't be re-owned by ${newOwner}.`,
|
|
126
131
|
};
|
|
127
132
|
}
|
|
128
133
|
}
|
|
@@ -158,23 +163,38 @@ class ImportCredentialsCommand extends BaseCommand_1.BaseCommand {
|
|
|
158
163
|
return credential;
|
|
159
164
|
});
|
|
160
165
|
}
|
|
161
|
-
async getAssignee(userId) {
|
|
162
|
-
const user = await typedi_1.Container.get(user_repository_1.UserRepository).findOneBy({ id: userId });
|
|
163
|
-
if (!user) {
|
|
164
|
-
throw new n8n_workflow_1.ApplicationError('Failed to find user', { extra: { userId } });
|
|
165
|
-
}
|
|
166
|
-
return user;
|
|
167
|
-
}
|
|
168
166
|
async getCredentialOwner(credentialsId) {
|
|
169
|
-
const sharedCredential = await this.transactionManager.
|
|
170
|
-
credentialsId,
|
|
171
|
-
|
|
167
|
+
const sharedCredential = await this.transactionManager.findOne(SharedCredentials_1.SharedCredentials, {
|
|
168
|
+
where: { credentialsId, role: 'credential:owner' },
|
|
169
|
+
relations: { project: true },
|
|
172
170
|
});
|
|
173
|
-
|
|
171
|
+
if (sharedCredential && sharedCredential.project.type === 'personal') {
|
|
172
|
+
const user = await this.transactionManager.findOneByOrFail(User_1.User, {
|
|
173
|
+
projectRelations: {
|
|
174
|
+
role: 'project:personalOwner',
|
|
175
|
+
projectId: sharedCredential.projectId,
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
return { user, project: sharedCredential.project };
|
|
179
|
+
}
|
|
180
|
+
return {};
|
|
174
181
|
}
|
|
175
182
|
async credentialExists(credentialId) {
|
|
176
183
|
return await this.transactionManager.existsBy(CredentialsEntity_1.CredentialsEntity, { id: credentialId });
|
|
177
184
|
}
|
|
185
|
+
async getProject(userId, projectId) {
|
|
186
|
+
if (projectId) {
|
|
187
|
+
return await this.transactionManager.findOneByOrFail(Project_1.Project, { id: projectId });
|
|
188
|
+
}
|
|
189
|
+
if (!userId) {
|
|
190
|
+
const owner = await this.transactionManager.findOneBy(User_1.User, { role: 'global:owner' });
|
|
191
|
+
if (!owner) {
|
|
192
|
+
throw new n8n_workflow_1.ApplicationError(`Failed to find owner. ${constants_1.UM_FIX_INSTRUCTION}`);
|
|
193
|
+
}
|
|
194
|
+
userId = owner.id;
|
|
195
|
+
}
|
|
196
|
+
return await typedi_1.Container.get(project_repository_1.ProjectRepository).getPersonalProjectForUserOrFail(userId, this.transactionManager);
|
|
197
|
+
}
|
|
178
198
|
}
|
|
179
199
|
exports.ImportCredentialsCommand = ImportCredentialsCommand;
|
|
180
200
|
ImportCredentialsCommand.description = 'Import credentials';
|
|
@@ -182,6 +202,7 @@ ImportCredentialsCommand.examples = [
|
|
|
182
202
|
'$ n8n import:credentials --input=file.json',
|
|
183
203
|
'$ n8n import:credentials --separate --input=backups/latest/',
|
|
184
204
|
'$ n8n import:credentials --input=file.json --userId=1d64c3d2-85fe-4a83-a649-e446b07b3aae',
|
|
205
|
+
'$ n8n import:credentials --input=file.json --projectId=Ox8O54VQrmBrb4qL',
|
|
185
206
|
'$ n8n import:credentials --separate --input=backups/latest/ --userId=1d64c3d2-85fe-4a83-a649-e446b07b3aae',
|
|
186
207
|
];
|
|
187
208
|
ImportCredentialsCommand.flags = {
|
|
@@ -196,5 +217,8 @@ ImportCredentialsCommand.flags = {
|
|
|
196
217
|
userId: core_1.Flags.string({
|
|
197
218
|
description: 'The ID of the user to assign the imported credentials to',
|
|
198
219
|
}),
|
|
220
|
+
projectId: core_1.Flags.string({
|
|
221
|
+
description: 'The ID of the project to assign the imported credential to',
|
|
222
|
+
}),
|
|
199
223
|
};
|
|
200
224
|
//# sourceMappingURL=credentials.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/commands/import/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAmC;AACnC,sCAAoC;AACpC,uCAAkC;AAClC,4CAAoB;AACpB,0DAA6B;AAG7B,yCAA2B;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/commands/import/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,14 +7,15 @@ export declare class ImportWorkflowsCommand extends BaseCommand {
|
|
|
7
7
|
input: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
8
|
separate: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
9
9
|
userId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
projectId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
11
|
};
|
|
11
12
|
init(): Promise<void>;
|
|
12
13
|
run(): Promise<void>;
|
|
13
14
|
private checkRelations;
|
|
14
15
|
catch(error: Error): Promise<void>;
|
|
15
16
|
private reportSuccess;
|
|
16
|
-
private getOwner;
|
|
17
17
|
private getWorkflowOwner;
|
|
18
18
|
private workflowExists;
|
|
19
19
|
private readWorkflows;
|
|
20
|
+
private getProject;
|
|
20
21
|
}
|
|
@@ -18,6 +18,7 @@ const workflow_repository_1 = require("../../databases/repositories/workflow.rep
|
|
|
18
18
|
const import_service_1 = require("../../services/import.service");
|
|
19
19
|
const BaseCommand_1 = require("../BaseCommand");
|
|
20
20
|
const sharedWorkflow_repository_1 = require("../../databases/repositories/sharedWorkflow.repository");
|
|
21
|
+
const project_repository_1 = require("../../databases/repositories/project.repository");
|
|
21
22
|
function assertHasWorkflowsToImport(workflows) {
|
|
22
23
|
if (!Array.isArray(workflows)) {
|
|
23
24
|
throw new n8n_workflow_1.ApplicationError('File does not seem to contain workflows. Make sure the workflows are contained in an array.');
|
|
@@ -36,7 +37,6 @@ class ImportWorkflowsCommand extends BaseCommand_1.BaseCommand {
|
|
|
36
37
|
await super.init();
|
|
37
38
|
}
|
|
38
39
|
async run() {
|
|
39
|
-
var _a;
|
|
40
40
|
const { flags } = await this.parse(ImportWorkflowsCommand);
|
|
41
41
|
if (!flags.input) {
|
|
42
42
|
this.logger.info('An input file or directory with --input must be provided');
|
|
@@ -50,18 +50,21 @@ class ImportWorkflowsCommand extends BaseCommand_1.BaseCommand {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
if (flags.projectId && flags.userId) {
|
|
54
|
+
throw new n8n_workflow_1.ApplicationError('You cannot use `--userId` and `--projectId` together. Use one or the other.');
|
|
55
|
+
}
|
|
56
|
+
const project = await this.getProject(flags.userId, flags.projectId);
|
|
54
57
|
const workflows = await this.readWorkflows(flags.input, flags.separate);
|
|
55
|
-
const result = await this.checkRelations(workflows, flags.userId);
|
|
58
|
+
const result = await this.checkRelations(workflows, flags.projectId, flags.userId);
|
|
56
59
|
if (!result.success) {
|
|
57
60
|
throw new n8n_workflow_1.ApplicationError(result.message);
|
|
58
61
|
}
|
|
59
62
|
this.logger.info(`Importing ${workflows.length} workflows...`);
|
|
60
|
-
await typedi_1.Container.get(import_service_1.ImportService).importWorkflows(workflows,
|
|
63
|
+
await typedi_1.Container.get(import_service_1.ImportService).importWorkflows(workflows, project.id);
|
|
61
64
|
this.reportSuccess(workflows.length);
|
|
62
65
|
}
|
|
63
|
-
async checkRelations(workflows, userId) {
|
|
64
|
-
if (!userId) {
|
|
66
|
+
async checkRelations(workflows, projectId, userId) {
|
|
67
|
+
if (!userId && !projectId) {
|
|
65
68
|
return {
|
|
66
69
|
success: true,
|
|
67
70
|
message: undefined,
|
|
@@ -71,14 +74,21 @@ class ImportWorkflowsCommand extends BaseCommand_1.BaseCommand {
|
|
|
71
74
|
if (!(await this.workflowExists(workflow))) {
|
|
72
75
|
continue;
|
|
73
76
|
}
|
|
74
|
-
const
|
|
75
|
-
if (!
|
|
77
|
+
const { user, project: ownerProject } = await this.getWorkflowOwner(workflow);
|
|
78
|
+
if (!ownerProject) {
|
|
76
79
|
continue;
|
|
77
80
|
}
|
|
78
|
-
if (
|
|
81
|
+
if (ownerProject.id !== projectId) {
|
|
82
|
+
const currentOwner = ownerProject.type === 'personal'
|
|
83
|
+
? `the user with the ID "${user.id}"`
|
|
84
|
+
: `the project with the ID "${ownerProject.id}"`;
|
|
85
|
+
const newOwner = userId
|
|
86
|
+
?
|
|
87
|
+
`the user with the ID "${userId}"`
|
|
88
|
+
: `the project with the ID "${projectId}"`;
|
|
79
89
|
return {
|
|
80
90
|
success: false,
|
|
81
|
-
message: `The credential with
|
|
91
|
+
message: `The credential with ID "${workflow.id}" is already owned by ${currentOwner}. It can't be re-owned by ${newOwner}.`,
|
|
82
92
|
};
|
|
83
93
|
}
|
|
84
94
|
}
|
|
@@ -94,19 +104,21 @@ class ImportWorkflowsCommand extends BaseCommand_1.BaseCommand {
|
|
|
94
104
|
reportSuccess(total) {
|
|
95
105
|
this.logger.info(`Successfully imported ${total} ${total === 1 ? 'workflow.' : 'workflows.'}`);
|
|
96
106
|
}
|
|
97
|
-
async getOwner() {
|
|
98
|
-
const owner = await typedi_1.Container.get(user_repository_1.UserRepository).findOneBy({ role: 'global:owner' });
|
|
99
|
-
if (!owner) {
|
|
100
|
-
throw new n8n_workflow_1.ApplicationError(`Failed to find owner. ${constants_1.UM_FIX_INSTRUCTION}`);
|
|
101
|
-
}
|
|
102
|
-
return owner;
|
|
103
|
-
}
|
|
104
107
|
async getWorkflowOwner(workflow) {
|
|
105
|
-
const sharing = await typedi_1.Container.get(sharedWorkflow_repository_1.SharedWorkflowRepository).
|
|
106
|
-
workflowId: workflow.id,
|
|
107
|
-
|
|
108
|
+
const sharing = await typedi_1.Container.get(sharedWorkflow_repository_1.SharedWorkflowRepository).findOne({
|
|
109
|
+
where: { workflowId: workflow.id, role: 'workflow:owner' },
|
|
110
|
+
relations: { project: true },
|
|
108
111
|
});
|
|
109
|
-
|
|
112
|
+
if (sharing && sharing.project.type === 'personal') {
|
|
113
|
+
const user = await typedi_1.Container.get(user_repository_1.UserRepository).findOneByOrFail({
|
|
114
|
+
projectRelations: {
|
|
115
|
+
role: 'project:personalOwner',
|
|
116
|
+
projectId: sharing.projectId,
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
return { user, project: sharing.project };
|
|
120
|
+
}
|
|
121
|
+
return {};
|
|
110
122
|
}
|
|
111
123
|
async workflowExists(workflow) {
|
|
112
124
|
return await typedi_1.Container.get(workflow_repository_1.WorkflowRepository).existsBy({ id: workflow.id });
|
|
@@ -137,6 +149,19 @@ class ImportWorkflowsCommand extends BaseCommand_1.BaseCommand {
|
|
|
137
149
|
return workflowInstances;
|
|
138
150
|
}
|
|
139
151
|
}
|
|
152
|
+
async getProject(userId, projectId) {
|
|
153
|
+
if (projectId) {
|
|
154
|
+
return await typedi_1.Container.get(project_repository_1.ProjectRepository).findOneByOrFail({ id: projectId });
|
|
155
|
+
}
|
|
156
|
+
if (!userId) {
|
|
157
|
+
const owner = await typedi_1.Container.get(user_repository_1.UserRepository).findOneBy({ role: 'global:owner' });
|
|
158
|
+
if (!owner) {
|
|
159
|
+
throw new n8n_workflow_1.ApplicationError(`Failed to find owner. ${constants_1.UM_FIX_INSTRUCTION}`);
|
|
160
|
+
}
|
|
161
|
+
userId = owner.id;
|
|
162
|
+
}
|
|
163
|
+
return await typedi_1.Container.get(project_repository_1.ProjectRepository).getPersonalProjectForUserOrFail(userId);
|
|
164
|
+
}
|
|
140
165
|
}
|
|
141
166
|
exports.ImportWorkflowsCommand = ImportWorkflowsCommand;
|
|
142
167
|
ImportWorkflowsCommand.description = 'Import workflows';
|
|
@@ -144,6 +169,7 @@ ImportWorkflowsCommand.examples = [
|
|
|
144
169
|
'$ n8n import:workflow --input=file.json',
|
|
145
170
|
'$ n8n import:workflow --separate --input=backups/latest/',
|
|
146
171
|
'$ n8n import:workflow --input=file.json --userId=1d64c3d2-85fe-4a83-a649-e446b07b3aae',
|
|
172
|
+
'$ n8n import:workflow --input=file.json --projectId=Ox8O54VQrmBrb4qL',
|
|
147
173
|
'$ n8n import:workflow --separate --input=backups/latest/ --userId=1d64c3d2-85fe-4a83-a649-e446b07b3aae',
|
|
148
174
|
];
|
|
149
175
|
ImportWorkflowsCommand.flags = {
|
|
@@ -158,5 +184,8 @@ ImportWorkflowsCommand.flags = {
|
|
|
158
184
|
userId: core_1.Flags.string({
|
|
159
185
|
description: 'The ID of the user to assign the imported workflows to',
|
|
160
186
|
}),
|
|
187
|
+
projectId: core_1.Flags.string({
|
|
188
|
+
description: 'The ID of the project to assign the imported workflows to',
|
|
189
|
+
}),
|
|
161
190
|
};
|
|
162
191
|
//# sourceMappingURL=workflow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/commands/import/workflow.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAmC;AACnC,sCAAoC;AACpC,+CAA2D;AAC3D,4CAAoB;AACpB,0DAA6B;AAE7B,2CAAiD;AACjD,gEAA6D;AAC7D,6DAAmE;AACnE,qDAAsD;AACtD,sEAAkE;AAClE,8EAA0E;AAE1E,8DAA0D;AAC1D,gDAA6C;AAC7C,0FAAsF;
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../../src/commands/import/workflow.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAmC;AACnC,sCAAoC;AACpC,+CAA2D;AAC3D,4CAAoB;AACpB,0DAA6B;AAE7B,2CAAiD;AACjD,gEAA6D;AAC7D,6DAAmE;AACnE,qDAAsD;AACtD,sEAAkE;AAClE,8EAA0E;AAE1E,8DAA0D;AAC1D,gDAA6C;AAC7C,0FAAsF;AACtF,oFAAgF;AAEhF,SAAS,0BAA0B,CAAC,SAAkB;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,+BAAgB,CACzB,6FAA6F,CAC7F,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAClC,IACC,OAAO,QAAQ,KAAK,QAAQ;YAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;YACxD,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,EAC7D,CAAC;YACF,MAAM,IAAI,+BAAgB,CAAC,gDAAgD,CAAC,CAAC;QAC9E,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAa,sBAAuB,SAAQ,yBAAW;IA4BtD,KAAK,CAAC,IAAI;QACT,IAAA,wCAAuB,EAAC,+BAAc,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAG;QACR,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAE3D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YAC7E,OAAO;QACR,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,YAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,YAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBAC9C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;oBAChE,OAAO;gBACR,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,IAAI,+BAAgB,CACzB,6EAA6E,CAC7E,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAErE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,+BAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,MAAM,eAAe,CAAC,CAAC;QAE/D,MAAM,kBAAS,CAAC,GAAG,CAAC,8BAAa,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAA2B,EAAE,SAAkB,EAAE,MAAe;QAE5F,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO;gBACN,OAAO,EAAE,IAAa;gBACtB,OAAO,EAAE,SAAS;aAClB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBAC5C,SAAS;YACV,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAE9E,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnB,SAAS;YACV,CAAC;YAED,IAAI,YAAY,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,YAAY,GACjB,YAAY,CAAC,IAAI,KAAK,UAAU;oBAC/B,CAAC,CAAC,yBAAyB,IAAI,CAAC,EAAE,GAAG;oBACrC,CAAC,CAAC,4BAA4B,YAAY,CAAC,EAAE,GAAG,CAAC;gBACnD,MAAM,QAAQ,GAAG,MAAM;oBACtB,CAAC;wBAEA,yBAAyB,MAAM,GAAG;oBACnC,CAAC,CAAC,4BAA4B,SAAS,GAAG,CAAC;gBAE5C,OAAO;oBACN,OAAO,EAAE,KAAc;oBACvB,OAAO,EAAE,2BAA2B,QAAQ,CAAC,EAAE,yBAAyB,YAAY,6BAA6B,QAAQ,GAAG;iBAC5H,CAAC;YACH,CAAC;QACF,CAAC;QAED,OAAO;YACN,OAAO,EAAE,IAAa;YACtB,OAAO,EAAE,SAAS;SAClB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAY;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAChG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEO,aAAa,CAAC,KAAa;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;IAChG,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,QAAwB;QACtD,MAAM,OAAO,GAAG,MAAM,kBAAS,CAAC,GAAG,CAAC,oDAAwB,CAAC,CAAC,OAAO,CAAC;YACrE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;YAC1D,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC5B,CAAC,CAAC;QAEH,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,MAAM,kBAAS,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC,eAAe,CAAC;gBAChE,gBAAgB,EAAE;oBACjB,IAAI,EAAE,uBAAuB;oBAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC5B;aACD,CAAC,CAAC;YAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3C,CAAC;QAED,OAAO,EAAE,CAAC;IACX,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,QAAwB;QACpD,OAAO,MAAM,kBAAS,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,QAAiB;QAC1D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAI,EAAC,QAAQ,EAAE;gBAClC,GAAG,EAAE,IAAI;gBACT,QAAQ,EAAE,IAAI;aACd,CAAC,CAAC;YACH,MAAM,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC5C,MAAM,QAAQ,GAAG,IAAA,wBAAS,EAAoB,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC3F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAClB,QAAQ,CAAC,EAAE,GAAG,IAAA,2BAAc,GAAE,CAAC;gBAChC,CAAC;gBAED,MAAM,gBAAgB,GAAG,kBAAS,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAE5E,OAAO,gBAAgB,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,OAAO,iBAAiB,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,MAAM,SAAS,GAAG,IAAA,wBAAS,EAAsB,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAE9F,MAAM,iBAAiB,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAS,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5F,0BAA0B,CAAC,SAAS,CAAC,CAAC;YAEtC,OAAO,iBAAiB,CAAC;QAC1B,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,MAAe,EAAE,SAAkB;QAC3D,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,MAAM,kBAAS,CAAC,GAAG,CAAC,sCAAiB,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,MAAM,kBAAS,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;YACtF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,MAAM,IAAI,+BAAgB,CAAC,yBAAyB,8BAAkB,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,kBAAS,CAAC,GAAG,CAAC,sCAAiB,CAAC,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC;IACvF,CAAC;;AApMF,wDAqMC;AApMO,kCAAW,GAAG,kBAAkB,CAAC;AAEjC,+BAAQ,GAAG;IACjB,yCAAyC;IACzC,0DAA0D;IAC1D,uFAAuF;IACvF,sEAAsE;IACtE,wGAAwG;CACxG,CAAC;AAEK,4BAAK,GAAG;IACd,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC/B,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,oDAAoD;KACjE,CAAC;IACF,QAAQ,EAAE,YAAK,CAAC,OAAO,CAAC;QACvB,WAAW,EAAE,yDAAyD;KACtE,CAAC;IACF,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,wDAAwD;KACrE,CAAC;IACF,SAAS,EAAE,YAAK,CAAC,MAAM,CAAC;QACvB,WAAW,EAAE,2DAA2D;KACxE,CAAC;CACF,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { BaseCommand } from '../BaseCommand';
|
|
2
2
|
export declare class Reset extends BaseCommand {
|
|
3
3
|
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
help: import("@oclif/core/lib/interfaces").BooleanFlag<void>;
|
|
7
|
+
userId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
8
|
+
projectId: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
9
|
+
deleteWorkflowsAndCredentials: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
4
11
|
run(): Promise<void>;
|
|
12
|
+
getProject(userId?: string, projectId?: string): Promise<import("../../databases/entities/Project").Project>;
|
|
5
13
|
catch(error: Error): Promise<void>;
|
|
14
|
+
private getOwner;
|
|
6
15
|
}
|
|
@@ -11,15 +11,69 @@ const authProviderSyncHistory_repository_1 = require("../../databases/repositori
|
|
|
11
11
|
const settings_repository_1 = require("../../databases/repositories/settings.repository");
|
|
12
12
|
const user_repository_1 = require("../../databases/repositories/user.repository");
|
|
13
13
|
const BaseCommand_1 = require("../BaseCommand");
|
|
14
|
+
const core_1 = require("@oclif/core");
|
|
15
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
16
|
+
const project_repository_1 = require("../../databases/repositories/project.repository");
|
|
17
|
+
const workflow_service_1 = require("../../workflows/workflow.service");
|
|
18
|
+
const typeorm_1 = require("@n8n/typeorm");
|
|
19
|
+
const sharedWorkflow_repository_1 = require("../../databases/repositories/sharedWorkflow.repository");
|
|
20
|
+
const sharedCredentials_repository_1 = require("../../databases/repositories/sharedCredentials.repository");
|
|
21
|
+
const projectRelation_repository_1 = require("../../databases/repositories/projectRelation.repository");
|
|
22
|
+
const credentials_service_1 = require("../../credentials/credentials.service");
|
|
23
|
+
const constants_2 = require("../../constants");
|
|
24
|
+
const wrongFlagsError = 'You must use exactly one of `--userId`, `--projectId` or `--deleteWorkflowsAndCredentials`.';
|
|
14
25
|
class Reset extends BaseCommand_1.BaseCommand {
|
|
15
26
|
async run() {
|
|
27
|
+
var _a;
|
|
28
|
+
const { flags } = await this.parse(Reset);
|
|
29
|
+
const numberOfOptions = Number(!!flags.userId) +
|
|
30
|
+
Number(!!flags.projectId) +
|
|
31
|
+
Number(!!flags.deleteWorkflowsAndCredentials);
|
|
32
|
+
if (numberOfOptions !== 1) {
|
|
33
|
+
throw new n8n_workflow_1.ApplicationError(wrongFlagsError);
|
|
34
|
+
}
|
|
35
|
+
const owner = await this.getOwner();
|
|
16
36
|
const ldapIdentities = await typedi_1.default.get(authIdentity_repository_1.AuthIdentityRepository).find({
|
|
17
37
|
where: { providerType: 'ldap' },
|
|
18
38
|
select: ['userId'],
|
|
19
39
|
});
|
|
40
|
+
const personalProjectIds = await typedi_1.default.get(projectRelation_repository_1.ProjectRelationRepository).getPersonalProjectsForUsers(ldapIdentities.map((i) => i.userId));
|
|
41
|
+
if ((_a = flags.projectId) !== null && _a !== void 0 ? _a : flags.userId) {
|
|
42
|
+
if (flags.userId && ldapIdentities.some((i) => i.userId === flags.userId)) {
|
|
43
|
+
throw new n8n_workflow_1.ApplicationError(`Can't migrate workflows and credentials to the user with the ID ${flags.userId}. That user was created via LDAP and will be deleted as well.`);
|
|
44
|
+
}
|
|
45
|
+
if (flags.projectId && personalProjectIds.includes(flags.projectId)) {
|
|
46
|
+
throw new n8n_workflow_1.ApplicationError(`Can't migrate workflows and credentials to the project with the ID ${flags.projectId}. That project is a personal project belonging to a user that was created via LDAP and will be deleted as well.`);
|
|
47
|
+
}
|
|
48
|
+
const project = await this.getProject(flags.userId, flags.projectId);
|
|
49
|
+
await typedi_1.default.get(user_repository_1.UserRepository).manager.transaction(async (trx) => {
|
|
50
|
+
for (const projectId of personalProjectIds) {
|
|
51
|
+
await typedi_1.default.get(workflow_service_1.WorkflowService).transferAll(projectId, project.id, trx);
|
|
52
|
+
await typedi_1.default.get(credentials_service_1.CredentialsService).transferAll(projectId, project.id, trx);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const [ownedSharedWorkflows, ownedSharedCredentials] = await Promise.all([
|
|
57
|
+
typedi_1.default.get(sharedWorkflow_repository_1.SharedWorkflowRepository).find({
|
|
58
|
+
select: { workflowId: true },
|
|
59
|
+
where: { projectId: (0, typeorm_1.In)(personalProjectIds), role: 'workflow:owner' },
|
|
60
|
+
}),
|
|
61
|
+
typedi_1.default.get(sharedCredentials_repository_1.SharedCredentialsRepository).find({
|
|
62
|
+
relations: { credentials: true },
|
|
63
|
+
where: { projectId: (0, typeorm_1.In)(personalProjectIds), role: 'credential:owner' },
|
|
64
|
+
}),
|
|
65
|
+
]);
|
|
66
|
+
const ownedCredentials = ownedSharedCredentials.map(({ credentials }) => credentials);
|
|
67
|
+
for (const { workflowId } of ownedSharedWorkflows) {
|
|
68
|
+
await typedi_1.default.get(workflow_service_1.WorkflowService).delete(owner, workflowId);
|
|
69
|
+
}
|
|
70
|
+
for (const credential of ownedCredentials) {
|
|
71
|
+
await typedi_1.default.get(credentials_service_1.CredentialsService).delete(credential);
|
|
72
|
+
}
|
|
20
73
|
await typedi_1.default.get(authProviderSyncHistory_repository_1.AuthProviderSyncHistoryRepository).delete({ providerType: 'ldap' });
|
|
21
74
|
await typedi_1.default.get(authIdentity_repository_1.AuthIdentityRepository).delete({ providerType: 'ldap' });
|
|
22
75
|
await typedi_1.default.get(user_repository_1.UserRepository).deleteMany(ldapIdentities.map((i) => i.userId));
|
|
76
|
+
await typedi_1.default.get(project_repository_1.ProjectRepository).delete({ id: (0, typeorm_1.In)(personalProjectIds) });
|
|
23
77
|
await typedi_1.default.get(settings_repository_1.SettingsRepository).delete({ key: constants_1.LDAP_FEATURE_NAME });
|
|
24
78
|
await typedi_1.default.get(settings_repository_1.SettingsRepository).insert({
|
|
25
79
|
key: constants_1.LDAP_FEATURE_NAME,
|
|
@@ -28,11 +82,52 @@ class Reset extends BaseCommand_1.BaseCommand {
|
|
|
28
82
|
});
|
|
29
83
|
this.logger.info('Successfully reset the database to default ldap state.');
|
|
30
84
|
}
|
|
85
|
+
async getProject(userId, projectId) {
|
|
86
|
+
if (projectId) {
|
|
87
|
+
const project = await typedi_1.default.get(project_repository_1.ProjectRepository).findOneBy({ id: projectId });
|
|
88
|
+
if (project === null) {
|
|
89
|
+
throw new n8n_workflow_1.ApplicationError(`Could not find the project with the ID ${projectId}.`);
|
|
90
|
+
}
|
|
91
|
+
return project;
|
|
92
|
+
}
|
|
93
|
+
if (userId) {
|
|
94
|
+
const project = await typedi_1.default.get(project_repository_1.ProjectRepository).getPersonalProjectForUser(userId);
|
|
95
|
+
if (project === null) {
|
|
96
|
+
throw new n8n_workflow_1.ApplicationError(`Could not find the user with the ID ${userId} or their personalProject.`);
|
|
97
|
+
}
|
|
98
|
+
return project;
|
|
99
|
+
}
|
|
100
|
+
throw new n8n_workflow_1.ApplicationError(wrongFlagsError);
|
|
101
|
+
}
|
|
31
102
|
async catch(error) {
|
|
32
103
|
this.logger.error('Error resetting database. See log messages for details.');
|
|
33
104
|
this.logger.error(error.message);
|
|
34
105
|
}
|
|
106
|
+
async getOwner() {
|
|
107
|
+
const owner = await typedi_1.default.get(user_repository_1.UserRepository).findOneBy({ role: 'global:owner' });
|
|
108
|
+
if (!owner) {
|
|
109
|
+
throw new n8n_workflow_1.ApplicationError(`Failed to find owner. ${constants_2.UM_FIX_INSTRUCTION}`);
|
|
110
|
+
}
|
|
111
|
+
return owner;
|
|
112
|
+
}
|
|
35
113
|
}
|
|
36
114
|
exports.Reset = Reset;
|
|
37
|
-
Reset.description = '\nResets the database to the default ldap state';
|
|
115
|
+
Reset.description = '\nResets the database to the default ldap state.\n\nTHIS DELETES ALL LDAP MANAGED USERS.';
|
|
116
|
+
Reset.examples = [
|
|
117
|
+
'$ n8n ldap:reset --userId=1d64c3d2-85fe-4a83-a649-e446b07b3aae',
|
|
118
|
+
'$ n8n ldap:reset --projectId=Ox8O54VQrmBrb4qL',
|
|
119
|
+
'$ n8n ldap:reset --deleteWorkflowsAndCredentials',
|
|
120
|
+
];
|
|
121
|
+
Reset.flags = {
|
|
122
|
+
help: core_1.Flags.help({ char: 'h' }),
|
|
123
|
+
userId: core_1.Flags.string({
|
|
124
|
+
description: 'The ID of the user to assign the workflows and credentials owned by the deleted LDAP users to',
|
|
125
|
+
}),
|
|
126
|
+
projectId: core_1.Flags.string({
|
|
127
|
+
description: 'The ID of the project to assign the workflows and credentials owned by the deleted LDAP users to',
|
|
128
|
+
}),
|
|
129
|
+
deleteWorkflowsAndCredentials: core_1.Flags.boolean({
|
|
130
|
+
description: 'Delete all workflows and credentials owned by the users that were created by the users managed via LDAP.',
|
|
131
|
+
}),
|
|
132
|
+
};
|
|
38
133
|
//# sourceMappingURL=reset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/commands/ldap/reset.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA+B;AAC/B,gDAAiF;AACjF,sFAAkF;AAClF,4GAAwG;AACxG,8EAA0E;AAC1E,sEAAkE;AAClE,gDAA6C;
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/commands/ldap/reset.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA+B;AAC/B,gDAAiF;AACjF,sFAAkF;AAClF,4GAAwG;AACxG,8EAA0E;AAC1E,sEAAkE;AAClE,gDAA6C;AAC7C,sCAAoC;AACpC,+CAAgD;AAChD,oFAAgF;AAChF,mEAA+D;AAC/D,0CAAkC;AAClC,kGAA8F;AAC9F,wGAAoG;AACpG,oGAAgG;AAChG,2EAAuE;AACvE,2CAAiD;AAEjD,MAAM,eAAe,GACpB,6FAA6F,CAAC;AAE/F,MAAa,KAAM,SAAQ,yBAAW;IA0BrC,KAAK,CAAC,GAAG;;QACR,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,eAAe,GACpB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;YACtB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;YACzB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAE/C,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,+BAAgB,CAAC,eAAe,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,MAAM,gBAAS,CAAC,GAAG,CAAC,gDAAsB,CAAC,CAAC,IAAI,CAAC;YACvE,KAAK,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;YAC/B,MAAM,EAAE,CAAC,QAAQ,CAAC;SAClB,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,MAAM,gBAAS,CAAC,GAAG,CAC7C,sDAAyB,CACzB,CAAC,2BAA2B,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAGnE,IAAI,MAAA,KAAK,CAAC,SAAS,mCAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACrC,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3E,MAAM,IAAI,+BAAgB,CACzB,mEAAmE,KAAK,CAAC,MAAM,+DAA+D,CAC9I,CAAC;YACH,CAAC;YAED,IAAI,KAAK,CAAC,SAAS,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,+BAAgB,CACzB,sEAAsE,KAAK,CAAC,SAAS,iHAAiH,CACtM,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAErE,MAAM,gBAAS,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBACrE,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;oBAC5C,MAAM,gBAAS,CAAC,GAAG,CAAC,kCAAe,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC7E,MAAM,gBAAS,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACjF,CAAC;YACF,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxE,gBAAS,CAAC,GAAG,CAAC,oDAAwB,CAAC,CAAC,IAAI,CAAC;gBAC5C,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC5B,KAAK,EAAE,EAAE,SAAS,EAAE,IAAA,YAAE,EAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE;aACpE,CAAC;YACF,gBAAS,CAAC,GAAG,CAAC,0DAA2B,CAAC,CAAC,IAAI,CAAC;gBAC/C,SAAS,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;gBAChC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAA,YAAE,EAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE;aACtE,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;QAEtF,KAAK,MAAM,EAAE,UAAU,EAAE,IAAI,oBAAoB,EAAE,CAAC;YACnD,MAAM,gBAAS,CAAC,GAAG,CAAC,kCAAe,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;YAC3C,MAAM,gBAAS,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,gBAAS,CAAC,GAAG,CAAC,sEAAiC,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,MAAM,gBAAS,CAAC,GAAG,CAAC,gDAAsB,CAAC,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7E,MAAM,gBAAS,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACpF,MAAM,gBAAS,CAAC,GAAG,CAAC,sCAAiB,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC9E,MAAM,gBAAS,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,6BAAiB,EAAE,CAAC,CAAC;QAC3E,MAAM,gBAAS,CAAC,GAAG,CAAC,wCAAkB,CAAC,CAAC,MAAM,CAAC;YAC9C,GAAG,EAAE,6BAAiB;YACtB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,sCAA0B,CAAC;YACjD,aAAa,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAe,EAAE,SAAkB;QACnD,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,gBAAS,CAAC,GAAG,CAAC,sCAAiB,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAEpF,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACtB,MAAM,IAAI,+BAAgB,CAAC,0CAA0C,SAAS,GAAG,CAAC,CAAC;YACpF,CAAC;YAED,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,MAAM,gBAAS,CAAC,GAAG,CAAC,sCAAiB,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;YAEzF,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACtB,MAAM,IAAI,+BAAgB,CACzB,uCAAuC,MAAM,4BAA4B,CACzE,CAAC;YACH,CAAC;YAED,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,+BAAgB,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAY;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,QAAQ;QACrB,MAAM,KAAK,GAAG,MAAM,gBAAS,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,IAAI,+BAAgB,CAAC,yBAAyB,8BAAkB,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,KAAK,CAAC;IACd,CAAC;;AA/IF,sBAgJC;AA/IO,iBAAW,GACjB,0FAA0F,CAAC;AAErF,cAAQ,GAAG;IACjB,gEAAgE;IAChE,+CAA+C;IAC/C,kDAAkD;CAClD,CAAC;AAEK,WAAK,GAAG;IACd,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC/B,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC;QACpB,WAAW,EACV,+FAA+F;KAChG,CAAC;IACF,SAAS,EAAE,YAAK,CAAC,MAAM,CAAC;QACvB,WAAW,EACV,kGAAkG;KACnG,CAAC;IACF,6BAA6B,EAAE,YAAK,CAAC,OAAO,CAAC;QAC5C,WAAW,EACV,0GAA0G;KAC3G,CAAC;CACF,CAAC"}
|
|
@@ -18,11 +18,20 @@ class DisableMFACommand extends BaseCommand_1.BaseCommand {
|
|
|
18
18
|
this.logger.info('An email with --email must be provided');
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
|
-
const
|
|
22
|
-
if (!
|
|
21
|
+
const user = await typedi_1.default.get(user_repository_1.UserRepository).findOneBy({ email: flags.email });
|
|
22
|
+
if (!user) {
|
|
23
23
|
this.reportUserDoesNotExistError(flags.email);
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
|
+
if (user.mfaSecret === null &&
|
|
27
|
+
Array.isArray(user.mfaRecoveryCodes) &&
|
|
28
|
+
user.mfaRecoveryCodes.length === 0 &&
|
|
29
|
+
!user.mfaEnabled) {
|
|
30
|
+
this.reportUserDoesNotExistError(flags.email);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
Object.assign(user, { mfaSecret: null, mfaRecoveryCodes: [], mfaEnabled: false });
|
|
34
|
+
await typedi_1.default.get(user_repository_1.UserRepository).save(user);
|
|
26
35
|
this.reportSuccess(flags.email);
|
|
27
36
|
}
|
|
28
37
|
async catch(error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../src/commands/mfa/disable.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA+B;AAC/B,sCAAoC;AACpC,sEAAkE;AAClE,gDAA6C;AAE7C,MAAa,iBAAkB,SAAQ,yBAAW;IAYjD,KAAK,CAAC,IAAI;QACT,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAG;QACR,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YAC3D,OAAO;QACR,CAAC;QAED,MAAM,
|
|
1
|
+
{"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../src/commands/mfa/disable.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA+B;AAC/B,sCAAoC;AACpC,sEAAkE;AAClE,gDAA6C;AAE7C,MAAa,iBAAkB,SAAQ,yBAAW;IAYjD,KAAK,CAAC,IAAI;QACT,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,GAAG;QACR,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEtD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YAC3D,OAAO;QACR,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,gBAAS,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnF,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO;QACR,CAAC;QAED,IACC,IAAI,CAAC,SAAS,KAAK,IAAI;YACvB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACpC,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAClC,CAAC,IAAI,CAAC,UAAU,EACf,CAAC;YACF,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO;QACR,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAElF,MAAM,gBAAS,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAY;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAEO,aAAa,CAAC,KAAa;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEO,2BAA2B,CAAC,KAAa;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,iBAAiB,CAAC,CAAC;IAC9D,CAAC;;AA3DF,8CA4DC;AA3DO,6BAAW,GAAG,uCAAuC,CAAC;AAEtD,0BAAQ,GAAG,CAAC,+CAA+C,CAAC,CAAC;AAE7D,uBAAK,GAAG;IACd,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC/B,KAAK,EAAE,YAAK,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,yDAAyD;KACtE,CAAC;CACF,CAAC"}
|
|
@@ -9,6 +9,7 @@ const sharedCredentials_repository_1 = require("../../databases/repositories/sha
|
|
|
9
9
|
const sharedWorkflow_repository_1 = require("../../databases/repositories/sharedWorkflow.repository");
|
|
10
10
|
const user_repository_1 = require("../../databases/repositories/user.repository");
|
|
11
11
|
const BaseCommand_1 = require("../BaseCommand");
|
|
12
|
+
const project_repository_1 = require("../../databases/repositories/project.repository");
|
|
12
13
|
const defaultUserProps = {
|
|
13
14
|
firstName: null,
|
|
14
15
|
lastName: null,
|
|
@@ -19,8 +20,9 @@ const defaultUserProps = {
|
|
|
19
20
|
class Reset extends BaseCommand_1.BaseCommand {
|
|
20
21
|
async run() {
|
|
21
22
|
const owner = await this.getInstanceOwner();
|
|
22
|
-
await typedi_1.Container.get(
|
|
23
|
-
await typedi_1.Container.get(
|
|
23
|
+
const personalProject = await typedi_1.Container.get(project_repository_1.ProjectRepository).getPersonalProjectForUserOrFail(owner.id);
|
|
24
|
+
await typedi_1.Container.get(sharedWorkflow_repository_1.SharedWorkflowRepository).makeOwnerOfAllWorkflows(personalProject);
|
|
25
|
+
await typedi_1.Container.get(sharedCredentials_repository_1.SharedCredentialsRepository).makeOwnerOfAllCredentials(personalProject);
|
|
24
26
|
await typedi_1.Container.get(user_repository_1.UserRepository).deleteAllExcept(owner);
|
|
25
27
|
await typedi_1.Container.get(user_repository_1.UserRepository).save(Object.assign(owner, defaultUserProps));
|
|
26
28
|
const danglingCredentials = await typedi_1.Container.get(credentials_repository_1.CredentialsRepository)
|
|
@@ -30,7 +32,7 @@ class Reset extends BaseCommand_1.BaseCommand {
|
|
|
30
32
|
.getMany();
|
|
31
33
|
const newSharedCredentials = danglingCredentials.map((credentials) => typedi_1.Container.get(sharedCredentials_repository_1.SharedCredentialsRepository).create({
|
|
32
34
|
credentials,
|
|
33
|
-
|
|
35
|
+
projectId: personalProject.id,
|
|
34
36
|
role: 'credential:owner',
|
|
35
37
|
}));
|
|
36
38
|
await typedi_1.Container.get(sharedCredentials_repository_1.SharedCredentialsRepository).save(newSharedCredentials);
|