@n8n/db 0.19.1 → 0.21.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/build.tsbuildinfo +1 -1
- package/dist/constants.d.ts +13 -0
- package/dist/constants.js +52 -0
- package/dist/constants.js.map +1 -0
- package/dist/entities/index.d.ts +1 -5
- package/dist/entities/index.js +1 -7
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/project-relation.d.ts +2 -2
- package/dist/entities/project-relation.js +4 -2
- package/dist/entities/project-relation.js.map +1 -1
- package/dist/entities/role.d.ts +2 -0
- package/dist/entities/role.js +4 -0
- package/dist/entities/role.js.map +1 -1
- package/dist/entities/types-db.d.ts +2 -3
- package/dist/entities/user.d.ts +3 -2
- package/dist/entities/user.js +13 -16
- package/dist/entities/user.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/migrations/common/1742918400000-AddScopesColumnToApiKeys.js +5 -1
- package/dist/migrations/common/1742918400000-AddScopesColumnToApiKeys.js.map +1 -1
- package/dist/migrations/common/1750252139170-RemoveOldRoleColumn.d.ts +5 -0
- package/dist/migrations/common/1750252139170-RemoveOldRoleColumn.js +25 -0
- package/dist/migrations/common/1750252139170-RemoveOldRoleColumn.js.map +1 -0
- package/dist/migrations/common/1753953244168-LinkRoleToProjectRelationTable.d.ts +5 -0
- package/dist/migrations/common/1753953244168-LinkRoleToProjectRelationTable.js +32 -0
- package/dist/migrations/common/1753953244168-LinkRoleToProjectRelationTable.js.map +1 -0
- package/dist/migrations/common/1754475614602-ReplaceDataStoreTablesWithDataTables.d.ts +5 -0
- package/dist/migrations/common/1754475614602-ReplaceDataStoreTablesWithDataTables.js +55 -0
- package/dist/migrations/common/1754475614602-ReplaceDataStoreTablesWithDataTables.js.map +1 -0
- package/dist/migrations/dsl/column.d.ts +1 -0
- package/dist/migrations/dsl/column.js +15 -0
- package/dist/migrations/dsl/column.js.map +1 -1
- package/dist/migrations/mysqldb/index.js +6 -0
- package/dist/migrations/mysqldb/index.js.map +1 -1
- package/dist/migrations/postgresdb/index.js +6 -0
- package/dist/migrations/postgresdb/index.js.map +1 -1
- package/dist/migrations/sqlite/index.js +6 -0
- package/dist/migrations/sqlite/index.js.map +1 -1
- package/dist/repositories/index.d.ts +0 -2
- package/dist/repositories/index.js +1 -5
- package/dist/repositories/index.js.map +1 -1
- package/dist/repositories/project-relation.repository.d.ts +1 -1
- package/dist/repositories/project-relation.repository.js +9 -3
- package/dist/repositories/project-relation.repository.js.map +1 -1
- package/dist/repositories/project.repository.js +10 -2
- package/dist/repositories/project.repository.js.map +1 -1
- package/dist/repositories/role.repository.d.ts +9 -1
- package/dist/repositories/role.repository.js +57 -2
- package/dist/repositories/role.repository.js.map +1 -1
- package/dist/repositories/scope.repository.d.ts +1 -0
- package/dist/repositories/scope.repository.js +3 -0
- package/dist/repositories/scope.repository.js.map +1 -1
- package/dist/repositories/shared-credentials.repository.js +1 -1
- package/dist/repositories/shared-credentials.repository.js.map +1 -1
- package/dist/repositories/shared-workflow.repository.d.ts +1 -1
- package/dist/repositories/shared-workflow.repository.js +3 -2
- package/dist/repositories/shared-workflow.repository.js.map +1 -1
- package/dist/repositories/user.repository.js +25 -13
- package/dist/repositories/user.repository.js.map +1 -1
- package/dist/repositories/workflow-statistics.repository.js +2 -1
- package/dist/repositories/workflow-statistics.repository.js.map +1 -1
- package/dist/services/auth.roles.service.js +11 -11
- package/dist/services/auth.roles.service.js.map +1 -1
- package/dist/utils/is-valid-email.d.ts +1 -0
- package/dist/utils/is-valid-email.js +8 -0
- package/dist/utils/is-valid-email.js.map +1 -0
- package/package.json +10 -9
- package/dist/entities/installed-nodes.d.ts +0 -7
- package/dist/entities/installed-nodes.js +0 -38
- package/dist/entities/installed-nodes.js.map +0 -1
- package/dist/entities/installed-packages.d.ts +0 -9
- package/dist/entities/installed-packages.js +0 -42
- package/dist/entities/installed-packages.js.map +0 -1
- package/dist/repositories/installed-nodes.repository.d.ts +0 -5
- package/dist/repositories/installed-nodes.repository.js +0 -26
- package/dist/repositories/installed-nodes.repository.js.map +0 -1
- package/dist/repositories/installed-packages.repository.d.ts +0 -9
- package/dist/repositories/installed-packages.repository.js +0 -54
- package/dist/repositories/installed-packages.repository.js.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ProjectRole, type GlobalRole, type Role as RoleDTO } from '@n8n/permissions';
|
|
2
|
+
import type { Role } from 'entities';
|
|
3
|
+
export declare function builtInRoleToRoleObject(role: RoleDTO, roleType: 'global' | 'project' | 'workflow' | 'credential'): Role;
|
|
4
|
+
export declare const ALL_BUILTIN_ROLES: Record<string, Role>;
|
|
5
|
+
export declare const GLOBAL_OWNER_ROLE: Role;
|
|
6
|
+
export declare const GLOBAL_ADMIN_ROLE: Role;
|
|
7
|
+
export declare const GLOBAL_MEMBER_ROLE: Role;
|
|
8
|
+
export declare const PROJECT_OWNER_ROLE: Role;
|
|
9
|
+
export declare const PROJECT_ADMIN_ROLE: Role;
|
|
10
|
+
export declare const PROJECT_EDITOR_ROLE: Role;
|
|
11
|
+
export declare const PROJECT_VIEWER_ROLE: Role;
|
|
12
|
+
export declare const GLOBAL_ROLES: Record<GlobalRole, Role>;
|
|
13
|
+
export declare const PROJECT_ROLES: Record<ProjectRole, Role>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PROJECT_ROLES = exports.GLOBAL_ROLES = exports.PROJECT_VIEWER_ROLE = exports.PROJECT_EDITOR_ROLE = exports.PROJECT_ADMIN_ROLE = exports.PROJECT_OWNER_ROLE = exports.GLOBAL_MEMBER_ROLE = exports.GLOBAL_ADMIN_ROLE = exports.GLOBAL_OWNER_ROLE = exports.ALL_BUILTIN_ROLES = void 0;
|
|
4
|
+
exports.builtInRoleToRoleObject = builtInRoleToRoleObject;
|
|
5
|
+
const permissions_1 = require("@n8n/permissions");
|
|
6
|
+
function builtInRoleToRoleObject(role, roleType) {
|
|
7
|
+
return {
|
|
8
|
+
slug: role.slug,
|
|
9
|
+
displayName: role.displayName,
|
|
10
|
+
scopes: role.scopes.map((scope) => {
|
|
11
|
+
return {
|
|
12
|
+
slug: scope,
|
|
13
|
+
displayName: scope,
|
|
14
|
+
description: null,
|
|
15
|
+
};
|
|
16
|
+
}),
|
|
17
|
+
systemRole: true,
|
|
18
|
+
roleType,
|
|
19
|
+
description: role.description,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function toRoleMap(allRoles) {
|
|
23
|
+
return allRoles.reduce((acc, role) => {
|
|
24
|
+
acc[role.slug] = role;
|
|
25
|
+
return acc;
|
|
26
|
+
}, {});
|
|
27
|
+
}
|
|
28
|
+
exports.ALL_BUILTIN_ROLES = toRoleMap([
|
|
29
|
+
...permissions_1.ALL_ROLES.global.map((role) => builtInRoleToRoleObject(role, 'global')),
|
|
30
|
+
...permissions_1.ALL_ROLES.project.map((role) => builtInRoleToRoleObject(role, 'project')),
|
|
31
|
+
...permissions_1.ALL_ROLES.credential.map((role) => builtInRoleToRoleObject(role, 'credential')),
|
|
32
|
+
...permissions_1.ALL_ROLES.workflow.map((role) => builtInRoleToRoleObject(role, 'workflow')),
|
|
33
|
+
]);
|
|
34
|
+
exports.GLOBAL_OWNER_ROLE = exports.ALL_BUILTIN_ROLES['global:owner'];
|
|
35
|
+
exports.GLOBAL_ADMIN_ROLE = exports.ALL_BUILTIN_ROLES['global:admin'];
|
|
36
|
+
exports.GLOBAL_MEMBER_ROLE = exports.ALL_BUILTIN_ROLES['global:member'];
|
|
37
|
+
exports.PROJECT_OWNER_ROLE = exports.ALL_BUILTIN_ROLES[permissions_1.PROJECT_OWNER_ROLE_SLUG];
|
|
38
|
+
exports.PROJECT_ADMIN_ROLE = exports.ALL_BUILTIN_ROLES[permissions_1.PROJECT_ADMIN_ROLE_SLUG];
|
|
39
|
+
exports.PROJECT_EDITOR_ROLE = exports.ALL_BUILTIN_ROLES[permissions_1.PROJECT_EDITOR_ROLE_SLUG];
|
|
40
|
+
exports.PROJECT_VIEWER_ROLE = exports.ALL_BUILTIN_ROLES[permissions_1.PROJECT_VIEWER_ROLE_SLUG];
|
|
41
|
+
exports.GLOBAL_ROLES = {
|
|
42
|
+
'global:owner': exports.GLOBAL_OWNER_ROLE,
|
|
43
|
+
'global:admin': exports.GLOBAL_ADMIN_ROLE,
|
|
44
|
+
'global:member': exports.GLOBAL_MEMBER_ROLE,
|
|
45
|
+
};
|
|
46
|
+
exports.PROJECT_ROLES = {
|
|
47
|
+
[permissions_1.PROJECT_OWNER_ROLE_SLUG]: exports.PROJECT_OWNER_ROLE,
|
|
48
|
+
[permissions_1.PROJECT_ADMIN_ROLE_SLUG]: exports.PROJECT_ADMIN_ROLE,
|
|
49
|
+
[permissions_1.PROJECT_EDITOR_ROLE_SLUG]: exports.PROJECT_EDITOR_ROLE,
|
|
50
|
+
[permissions_1.PROJECT_VIEWER_ROLE_SLUG]: exports.PROJECT_VIEWER_ROLE,
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAaA,0DAkBC;AA/BD,kDAS0B;AAI1B,SAAgB,uBAAuB,CACtC,IAAa,EACb,QAA0D;IAE1D,OAAO;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,OAAO;gBACN,IAAI,EAAE,KAAK;gBACX,WAAW,EAAE,KAAK;gBAClB,WAAW,EAAE,IAAI;aACjB,CAAC;QACH,CAAC,CAAC;QACF,UAAU,EAAE,IAAI;QAChB,QAAQ;QACR,WAAW,EAAE,IAAI,CAAC,WAAW;KACrB,CAAC;AACX,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB;IAClC,OAAO,QAAQ,CAAC,MAAM,CACrB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;QACb,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACtB,OAAO,GAAG,CAAC;IACZ,CAAC,EACD,EAA0B,CAC1B,CAAC;AACH,CAAC;AAEY,QAAA,iBAAiB,GAAG,SAAS,CAAC;IAC1C,GAAG,uBAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1E,GAAG,uBAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5E,GAAG,uBAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAClF,GAAG,uBAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;CAC9E,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,yBAAiB,CAAC,cAAc,CAAC,CAAC;AACtD,QAAA,iBAAiB,GAAG,yBAAiB,CAAC,cAAc,CAAC,CAAC;AACtD,QAAA,kBAAkB,GAAG,yBAAiB,CAAC,eAAe,CAAC,CAAC;AAExD,QAAA,kBAAkB,GAAG,yBAAiB,CAAC,qCAAuB,CAAC,CAAC;AAChE,QAAA,kBAAkB,GAAG,yBAAiB,CAAC,qCAAuB,CAAC,CAAC;AAChE,QAAA,mBAAmB,GAAG,yBAAiB,CAAC,sCAAwB,CAAC,CAAC;AAClE,QAAA,mBAAmB,GAAG,yBAAiB,CAAC,sCAAwB,CAAC,CAAC;AAElE,QAAA,YAAY,GAA6B;IACrD,cAAc,EAAE,yBAAiB;IACjC,cAAc,EAAE,yBAAiB;IACjC,eAAe,EAAE,0BAAkB;CACnC,CAAC;AAEW,QAAA,aAAa,GAA8B;IACvD,CAAC,qCAAuB,CAAC,EAAE,0BAAkB;IAC7C,CAAC,qCAAuB,CAAC,EAAE,0BAAkB;IAC7C,CAAC,sCAAwB,CAAC,EAAE,2BAAmB;IAC/C,CAAC,sCAAwB,CAAC,EAAE,2BAAmB;CAC/C,CAAC"}
|
package/dist/entities/index.d.ts
CHANGED
|
@@ -11,8 +11,6 @@ import { ExecutionEntity } from './execution-entity';
|
|
|
11
11
|
import { ExecutionMetadata } from './execution-metadata';
|
|
12
12
|
import { Folder } from './folder';
|
|
13
13
|
import { FolderTagMapping } from './folder-tag-mapping';
|
|
14
|
-
import { InstalledNodes } from './installed-nodes';
|
|
15
|
-
import { InstalledPackages } from './installed-packages';
|
|
16
14
|
import { InvalidAuthToken } from './invalid-auth-token';
|
|
17
15
|
import { ProcessedData } from './processed-data';
|
|
18
16
|
import { Project } from './project';
|
|
@@ -32,11 +30,9 @@ import { WorkflowEntity } from './workflow-entity';
|
|
|
32
30
|
import { WorkflowHistory } from './workflow-history';
|
|
33
31
|
import { WorkflowStatistics } from './workflow-statistics';
|
|
34
32
|
import { WorkflowTagMapping } from './workflow-tag-mapping';
|
|
35
|
-
export { EventDestinations,
|
|
33
|
+
export { EventDestinations, InvalidAuthToken, ProcessedData, Settings, Variables, ApiKey, WebhookEntity, AuthIdentity, CredentialsEntity, Folder, Project, ProjectRelation, Role, Scope, SharedCredentials, SharedWorkflow, TagEntity, User, WorkflowEntity, WorkflowStatistics, WorkflowTagMapping, FolderTagMapping, AuthProviderSyncHistory, WorkflowHistory, ExecutionData, ExecutionMetadata, AnnotationTagEntity, ExecutionAnnotation, AnnotationTagMapping, TestRun, TestCaseExecution, ExecutionEntity, };
|
|
36
34
|
export declare const entities: {
|
|
37
35
|
EventDestinations: typeof EventDestinations;
|
|
38
|
-
InstalledNodes: typeof InstalledNodes;
|
|
39
|
-
InstalledPackages: typeof InstalledPackages;
|
|
40
36
|
InvalidAuthToken: typeof InvalidAuthToken;
|
|
41
37
|
ProcessedData: typeof ProcessedData;
|
|
42
38
|
Settings: typeof Settings;
|
package/dist/entities/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.entities = exports.ExecutionEntity = exports.TestCaseExecution = exports.TestRun = exports.AnnotationTagMapping = exports.ExecutionAnnotation = exports.AnnotationTagEntity = exports.ExecutionMetadata = exports.ExecutionData = exports.WorkflowHistory = exports.AuthProviderSyncHistory = exports.FolderTagMapping = exports.WorkflowTagMapping = exports.WorkflowStatistics = exports.WorkflowEntity = exports.User = exports.TagEntity = exports.SharedWorkflow = exports.SharedCredentials = exports.Scope = exports.Role = exports.ProjectRelation = exports.Project = exports.Folder = exports.CredentialsEntity = exports.AuthIdentity = exports.WebhookEntity = exports.ApiKey = exports.Variables = exports.Settings = exports.ProcessedData = exports.InvalidAuthToken = exports.
|
|
3
|
+
exports.entities = exports.ExecutionEntity = exports.TestCaseExecution = exports.TestRun = exports.AnnotationTagMapping = exports.ExecutionAnnotation = exports.AnnotationTagEntity = exports.ExecutionMetadata = exports.ExecutionData = exports.WorkflowHistory = exports.AuthProviderSyncHistory = exports.FolderTagMapping = exports.WorkflowTagMapping = exports.WorkflowStatistics = exports.WorkflowEntity = exports.User = exports.TagEntity = exports.SharedWorkflow = exports.SharedCredentials = exports.Scope = exports.Role = exports.ProjectRelation = exports.Project = exports.Folder = exports.CredentialsEntity = exports.AuthIdentity = exports.WebhookEntity = exports.ApiKey = exports.Variables = exports.Settings = exports.ProcessedData = exports.InvalidAuthToken = exports.EventDestinations = void 0;
|
|
4
4
|
const annotation_tag_entity_ee_1 = require("./annotation-tag-entity.ee");
|
|
5
5
|
Object.defineProperty(exports, "AnnotationTagEntity", { enumerable: true, get: function () { return annotation_tag_entity_ee_1.AnnotationTagEntity; } });
|
|
6
6
|
const annotation_tag_mapping_ee_1 = require("./annotation-tag-mapping.ee");
|
|
@@ -27,10 +27,6 @@ const folder_1 = require("./folder");
|
|
|
27
27
|
Object.defineProperty(exports, "Folder", { enumerable: true, get: function () { return folder_1.Folder; } });
|
|
28
28
|
const folder_tag_mapping_1 = require("./folder-tag-mapping");
|
|
29
29
|
Object.defineProperty(exports, "FolderTagMapping", { enumerable: true, get: function () { return folder_tag_mapping_1.FolderTagMapping; } });
|
|
30
|
-
const installed_nodes_1 = require("./installed-nodes");
|
|
31
|
-
Object.defineProperty(exports, "InstalledNodes", { enumerable: true, get: function () { return installed_nodes_1.InstalledNodes; } });
|
|
32
|
-
const installed_packages_1 = require("./installed-packages");
|
|
33
|
-
Object.defineProperty(exports, "InstalledPackages", { enumerable: true, get: function () { return installed_packages_1.InstalledPackages; } });
|
|
34
30
|
const invalid_auth_token_1 = require("./invalid-auth-token");
|
|
35
31
|
Object.defineProperty(exports, "InvalidAuthToken", { enumerable: true, get: function () { return invalid_auth_token_1.InvalidAuthToken; } });
|
|
36
32
|
const processed_data_1 = require("./processed-data");
|
|
@@ -71,8 +67,6 @@ const workflow_tag_mapping_1 = require("./workflow-tag-mapping");
|
|
|
71
67
|
Object.defineProperty(exports, "WorkflowTagMapping", { enumerable: true, get: function () { return workflow_tag_mapping_1.WorkflowTagMapping; } });
|
|
72
68
|
exports.entities = {
|
|
73
69
|
EventDestinations: event_destinations_1.EventDestinations,
|
|
74
|
-
InstalledNodes: installed_nodes_1.InstalledNodes,
|
|
75
|
-
InstalledPackages: installed_packages_1.InstalledPackages,
|
|
76
70
|
InvalidAuthToken: invalid_auth_token_1.InvalidAuthToken,
|
|
77
71
|
ProcessedData: processed_data_1.ProcessedData,
|
|
78
72
|
Settings: settings_1.Settings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":";;;AAAA,yEAAiE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { ProjectRole } from '@n8n/permissions';
|
|
2
1
|
import { WithTimestamps } from './abstract-entity';
|
|
3
2
|
import { Project } from './project';
|
|
3
|
+
import { Role } from './role';
|
|
4
4
|
import { User } from './user';
|
|
5
5
|
export declare class ProjectRelation extends WithTimestamps {
|
|
6
|
-
role:
|
|
6
|
+
role: Role;
|
|
7
7
|
user: User;
|
|
8
8
|
userId: string;
|
|
9
9
|
project: Project;
|
|
@@ -13,13 +13,15 @@ exports.ProjectRelation = void 0;
|
|
|
13
13
|
const typeorm_1 = require("@n8n/typeorm");
|
|
14
14
|
const abstract_entity_1 = require("./abstract-entity");
|
|
15
15
|
const project_1 = require("./project");
|
|
16
|
+
const role_1 = require("./role");
|
|
16
17
|
const user_1 = require("./user");
|
|
17
18
|
let ProjectRelation = class ProjectRelation extends abstract_entity_1.WithTimestamps {
|
|
18
19
|
};
|
|
19
20
|
exports.ProjectRelation = ProjectRelation;
|
|
20
21
|
__decorate([
|
|
21
|
-
(0, typeorm_1.
|
|
22
|
-
|
|
22
|
+
(0, typeorm_1.ManyToOne)('Role', 'projectRelations'),
|
|
23
|
+
(0, typeorm_1.JoinColumn)({ name: 'role', referencedColumnName: 'slug' }),
|
|
24
|
+
__metadata("design:type", role_1.Role)
|
|
23
25
|
], ProjectRelation.prototype, "role", void 0);
|
|
24
26
|
__decorate([
|
|
25
27
|
(0, typeorm_1.ManyToOne)('User', 'projectRelations'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-relation.js","sourceRoot":"","sources":["../../src/entities/project-relation.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"project-relation.js","sourceRoot":"","sources":["../../src/entities/project-relation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAA4E;AAE5E,uDAAmD;AACnD,uCAAoC;AACpC,iCAA8B;AAC9B,iCAA8B;AAGvB,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,gCAAc;CAgBlD,CAAA;AAhBY,0CAAe;AAG3B;IAFC,IAAA,mBAAS,EAAC,MAAM,EAAE,kBAAkB,CAAC;IACrC,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC;8BACrD,WAAI;6CAAC;AAGX;IADC,IAAA,mBAAS,EAAC,MAAM,EAAE,kBAAkB,CAAC;8BAChC,WAAI;6CAAC;AAGX;IADC,IAAA,uBAAa,EAAC,MAAM,CAAC;;+CACP;AAGf;IADC,IAAA,mBAAS,EAAC,SAAS,EAAE,kBAAkB,CAAC;8BAChC,iBAAO;gDAAC;AAGjB;IADC,IAAA,uBAAa,GAAE;;kDACE;0BAfN,eAAe;IAD3B,IAAA,gBAAM,GAAE;GACI,eAAe,CAgB3B"}
|
package/dist/entities/role.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ProjectRelation } from './project-relation';
|
|
1
2
|
import { Scope } from './scope';
|
|
2
3
|
export declare class Role {
|
|
3
4
|
slug: string;
|
|
@@ -5,5 +6,6 @@ export declare class Role {
|
|
|
5
6
|
description: string | null;
|
|
6
7
|
systemRole: boolean;
|
|
7
8
|
roleType: 'global' | 'project' | 'workflow' | 'credential';
|
|
9
|
+
projectRelations: ProjectRelation[];
|
|
8
10
|
scopes: Scope[];
|
|
9
11
|
}
|
package/dist/entities/role.js
CHANGED
|
@@ -53,6 +53,10 @@ __decorate([
|
|
|
53
53
|
}),
|
|
54
54
|
__metadata("design:type", String)
|
|
55
55
|
], Role.prototype, "roleType", void 0);
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, typeorm_1.OneToMany)('ProjectRelation', 'role'),
|
|
58
|
+
__metadata("design:type", Array)
|
|
59
|
+
], Role.prototype, "projectRelations", void 0);
|
|
56
60
|
__decorate([
|
|
57
61
|
(0, typeorm_1.ManyToMany)(() => scope_1.Scope, {
|
|
58
62
|
eager: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/entities/role.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/entities/role.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAA+F;AAG/F,mCAAgC;AAKzB,IAAM,IAAI,GAAV,MAAM,IAAI;CAoDhB,CAAA;AApDY,oBAAI;AAKhB;IAJC,IAAA,uBAAa,EAAC;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;KACZ,CAAC;;kCACW;AAOb;IALC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,aAAa;KACnB,CAAC;;yCACkB;AAOpB;IALC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,aAAa;KACnB,CAAC;;yCACyB;AAU3B;IARC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,YAAY;KAClB,CAAC;;wCAIkB;AASpB;IAPC,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,UAAU;KAChB,CAAC;;sCAIyD;AAG3D;IADC,IAAA,mBAAS,EAAC,iBAAiB,EAAE,MAAM,CAAC;;8CACD;AAUpC;IARC,IAAA,oBAAU,EAAC,GAAG,EAAE,CAAC,aAAK,EAAE;QACxB,KAAK,EAAE,IAAI;KACX,CAAC;IACD,IAAA,mBAAS,EAAC;QACV,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,EAAE;QAC9D,iBAAiB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE;KACtE,CAAC;;oCACc;eAnDJ,IAAI;IAHhB,IAAA,gBAAM,EAAC;QACP,IAAI,EAAE,MAAM;KACZ,CAAC;GACW,IAAI,CAoDhB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Scope } from '@n8n/permissions';
|
|
2
2
|
import type { FindOperator } from '@n8n/typeorm';
|
|
3
3
|
import type express from 'express';
|
|
4
4
|
import type { ICredentialsEncrypted, IRunExecutionData, IWorkflowBase, WorkflowExecuteMode, ExecutionStatus, FeatureFlags, IUserSettings, AnnotationVote, ExecutionSummary, IUser } from 'n8n-workflow';
|
|
@@ -76,7 +76,7 @@ export interface PublicUser {
|
|
|
76
76
|
passwordResetToken?: string;
|
|
77
77
|
createdAt: Date;
|
|
78
78
|
isPending: boolean;
|
|
79
|
-
role?:
|
|
79
|
+
role?: string;
|
|
80
80
|
globalScopes?: Scope[];
|
|
81
81
|
signInType: AuthProviderType;
|
|
82
82
|
disabled: boolean;
|
|
@@ -242,7 +242,6 @@ export declare namespace ListQuery {
|
|
|
242
242
|
sortBy?: string;
|
|
243
243
|
};
|
|
244
244
|
}
|
|
245
|
-
export type ProjectRole = 'project:personalOwner' | 'project:admin' | 'project:editor' | 'project:viewer';
|
|
246
245
|
export interface IGetExecutionsQueryFilter {
|
|
247
246
|
id?: FindOperator<string> | string;
|
|
248
247
|
finished?: boolean;
|
package/dist/entities/user.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { AuthPrincipal
|
|
1
|
+
import type { AuthPrincipal } from '@n8n/permissions';
|
|
2
2
|
import type { IUser, IUserSettings } from 'n8n-workflow';
|
|
3
3
|
import { WithTimestamps } from './abstract-entity';
|
|
4
4
|
import type { ApiKey } from './api-key';
|
|
5
5
|
import type { AuthIdentity } from './auth-identity';
|
|
6
6
|
import type { ProjectRelation } from './project-relation';
|
|
7
|
+
import { Role } from './role';
|
|
7
8
|
import type { SharedCredentials } from './shared-credentials';
|
|
8
9
|
import type { SharedWorkflow } from './shared-workflow';
|
|
9
10
|
import type { IPersonalizationSurveyAnswers } from './types-db';
|
|
@@ -15,7 +16,7 @@ export declare class User extends WithTimestamps implements IUser, AuthPrincipal
|
|
|
15
16
|
password: string | null;
|
|
16
17
|
personalizationAnswers: IPersonalizationSurveyAnswers | null;
|
|
17
18
|
settings: IUserSettings | null;
|
|
18
|
-
role:
|
|
19
|
+
role: Role;
|
|
19
20
|
authIdentities: AuthIdentity[];
|
|
20
21
|
apiKeys: ApiKey[];
|
|
21
22
|
sharedWorkflows: SharedWorkflow[];
|
package/dist/entities/user.js
CHANGED
|
@@ -11,17 +11,23 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.User = void 0;
|
|
13
13
|
const typeorm_1 = require("@n8n/typeorm");
|
|
14
|
-
const class_validator_1 = require("class-validator");
|
|
15
14
|
const abstract_entity_1 = require("./abstract-entity");
|
|
15
|
+
const role_1 = require("./role");
|
|
16
|
+
const constants_1 = require("../constants");
|
|
17
|
+
const is_valid_email_1 = require("../utils/is-valid-email");
|
|
16
18
|
const transformers_1 = require("../utils/transformers");
|
|
17
|
-
const no_url_validator_1 = require("../utils/validators/no-url.validator");
|
|
18
|
-
const no_xss_validator_1 = require("../utils/validators/no-xss.validator");
|
|
19
19
|
let User = class User extends abstract_entity_1.WithTimestamps {
|
|
20
20
|
preUpsertHook() {
|
|
21
21
|
this.email = this.email?.toLowerCase() ?? null;
|
|
22
|
+
if (this.email !== null && this.email !== undefined) {
|
|
23
|
+
const result = (0, is_valid_email_1.isValidEmail)(this.email);
|
|
24
|
+
if (!result) {
|
|
25
|
+
throw new Error(`Cannot save user <${this.email}>: Provided email is invalid`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
22
28
|
}
|
|
23
29
|
computeIsPending() {
|
|
24
|
-
this.isPending = this.password === null && this.role !==
|
|
30
|
+
this.isPending = this.password === null && this.role?.slug !== constants_1.GLOBAL_OWNER_ROLE.slug;
|
|
25
31
|
}
|
|
26
32
|
toJSON() {
|
|
27
33
|
const { password, mfaSecret, mfaRecoveryCodes, ...rest } = this;
|
|
@@ -55,28 +61,18 @@ __decorate([
|
|
|
55
61
|
transformer: transformers_1.lowerCaser,
|
|
56
62
|
}),
|
|
57
63
|
(0, typeorm_1.Index)({ unique: true }),
|
|
58
|
-
(0, class_validator_1.IsEmail)(),
|
|
59
64
|
__metadata("design:type", String)
|
|
60
65
|
], User.prototype, "email", void 0);
|
|
61
66
|
__decorate([
|
|
62
67
|
(0, typeorm_1.Column)({ length: 32, nullable: true }),
|
|
63
|
-
(0, no_xss_validator_1.NoXss)(),
|
|
64
|
-
(0, no_url_validator_1.NoUrl)(),
|
|
65
|
-
(0, class_validator_1.IsString)({ message: 'First name must be of type string.' }),
|
|
66
|
-
(0, class_validator_1.Length)(1, 32, { message: 'First name must be $constraint1 to $constraint2 characters long.' }),
|
|
67
68
|
__metadata("design:type", String)
|
|
68
69
|
], User.prototype, "firstName", void 0);
|
|
69
70
|
__decorate([
|
|
70
71
|
(0, typeorm_1.Column)({ length: 32, nullable: true }),
|
|
71
|
-
(0, no_xss_validator_1.NoXss)(),
|
|
72
|
-
(0, no_url_validator_1.NoUrl)(),
|
|
73
|
-
(0, class_validator_1.IsString)({ message: 'Last name must be of type string.' }),
|
|
74
|
-
(0, class_validator_1.Length)(1, 32, { message: 'Last name must be $constraint1 to $constraint2 characters long.' }),
|
|
75
72
|
__metadata("design:type", String)
|
|
76
73
|
], User.prototype, "lastName", void 0);
|
|
77
74
|
__decorate([
|
|
78
75
|
(0, typeorm_1.Column)({ type: String, nullable: true }),
|
|
79
|
-
(0, class_validator_1.IsString)({ message: 'Password must be of type string.' }),
|
|
80
76
|
__metadata("design:type", Object)
|
|
81
77
|
], User.prototype, "password", void 0);
|
|
82
78
|
__decorate([
|
|
@@ -91,8 +87,9 @@ __decorate([
|
|
|
91
87
|
__metadata("design:type", Object)
|
|
92
88
|
], User.prototype, "settings", void 0);
|
|
93
89
|
__decorate([
|
|
94
|
-
(0, typeorm_1.
|
|
95
|
-
|
|
90
|
+
(0, typeorm_1.ManyToOne)(() => role_1.Role),
|
|
91
|
+
(0, typeorm_1.JoinColumn)({ name: 'roleSlug', referencedColumnName: 'slug' }),
|
|
92
|
+
__metadata("design:type", role_1.Role)
|
|
96
93
|
], User.prototype, "role", void 0);
|
|
97
94
|
__decorate([
|
|
98
95
|
(0, typeorm_1.OneToMany)('AuthIdentity', 'user'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/entities/user.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/entities/user.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export { WithStringId, WithTimestamps, WithTimestampsAndStringId, jsonColumnType, datetimeColumnType, dbType, JsonColumn, DateTimeColumn, } from './entities/abstract-entity';
|
|
2
2
|
export { generateNanoId } from './utils/generators';
|
|
3
3
|
export { isStringArray } from './utils/is-string-array';
|
|
4
|
+
export { isValidEmail } from './utils/is-valid-email';
|
|
4
5
|
export { separate } from './utils/separate';
|
|
5
6
|
export { sql } from './utils/sql';
|
|
6
7
|
export { idStringifier, lowerCaser, objectRetriever, sqlite } from './utils/transformers';
|
|
8
|
+
export * from './constants';
|
|
7
9
|
export * from './entities';
|
|
8
10
|
export * from './entities/types-db';
|
|
9
11
|
export { NoXss } from './utils/validators/no-xss.validator';
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.AuthRolesService = exports.DbConnectionOptions = exports.DbConnection = exports.wrapMigration = exports.postgresMigrations = exports.mysqlMigrations = exports.sqliteMigrations = exports.CreateTable = exports.DslColumn = exports.NoUrl = exports.NoXss = exports.sqlite = exports.objectRetriever = exports.lowerCaser = exports.idStringifier = exports.sql = exports.separate = exports.isStringArray = exports.generateNanoId = exports.DateTimeColumn = exports.JsonColumn = exports.dbType = exports.datetimeColumnType = exports.jsonColumnType = exports.WithTimestampsAndStringId = exports.WithTimestamps = exports.WithStringId = void 0;
|
|
17
|
+
exports.AuthRolesService = exports.DbConnectionOptions = exports.DbConnection = exports.wrapMigration = exports.postgresMigrations = exports.mysqlMigrations = exports.sqliteMigrations = exports.CreateTable = exports.DslColumn = exports.NoUrl = exports.NoXss = exports.sqlite = exports.objectRetriever = exports.lowerCaser = exports.idStringifier = exports.sql = exports.separate = exports.isValidEmail = exports.isStringArray = exports.generateNanoId = exports.DateTimeColumn = exports.JsonColumn = exports.dbType = exports.datetimeColumnType = exports.jsonColumnType = exports.WithTimestampsAndStringId = exports.WithTimestamps = exports.WithStringId = void 0;
|
|
18
18
|
var abstract_entity_1 = require("./entities/abstract-entity");
|
|
19
19
|
Object.defineProperty(exports, "WithStringId", { enumerable: true, get: function () { return abstract_entity_1.WithStringId; } });
|
|
20
20
|
Object.defineProperty(exports, "WithTimestamps", { enumerable: true, get: function () { return abstract_entity_1.WithTimestamps; } });
|
|
@@ -28,6 +28,8 @@ var generators_1 = require("./utils/generators");
|
|
|
28
28
|
Object.defineProperty(exports, "generateNanoId", { enumerable: true, get: function () { return generators_1.generateNanoId; } });
|
|
29
29
|
var is_string_array_1 = require("./utils/is-string-array");
|
|
30
30
|
Object.defineProperty(exports, "isStringArray", { enumerable: true, get: function () { return is_string_array_1.isStringArray; } });
|
|
31
|
+
var is_valid_email_1 = require("./utils/is-valid-email");
|
|
32
|
+
Object.defineProperty(exports, "isValidEmail", { enumerable: true, get: function () { return is_valid_email_1.isValidEmail; } });
|
|
31
33
|
var separate_1 = require("./utils/separate");
|
|
32
34
|
Object.defineProperty(exports, "separate", { enumerable: true, get: function () { return separate_1.separate; } });
|
|
33
35
|
var sql_1 = require("./utils/sql");
|
|
@@ -37,6 +39,7 @@ Object.defineProperty(exports, "idStringifier", { enumerable: true, get: functio
|
|
|
37
39
|
Object.defineProperty(exports, "lowerCaser", { enumerable: true, get: function () { return transformers_1.lowerCaser; } });
|
|
38
40
|
Object.defineProperty(exports, "objectRetriever", { enumerable: true, get: function () { return transformers_1.objectRetriever; } });
|
|
39
41
|
Object.defineProperty(exports, "sqlite", { enumerable: true, get: function () { return transformers_1.sqlite; } });
|
|
42
|
+
__exportStar(require("./constants"), exports);
|
|
40
43
|
__exportStar(require("./entities"), exports);
|
|
41
44
|
__exportStar(require("./entities/types-db"), exports);
|
|
42
45
|
var no_xss_validator_1 = require("./utils/validators/no-xss.validator");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DASoC;AARnC,+GAAA,YAAY,OAAA;AACZ,iHAAA,cAAc,OAAA;AACd,4HAAA,yBAAyB,OAAA;AACzB,iHAAA,cAAc,OAAA;AACd,qHAAA,kBAAkB,OAAA;AAClB,yGAAA,MAAM,OAAA;AACN,6GAAA,UAAU,OAAA;AACV,iHAAA,cAAc,OAAA;AAGf,iDAAoD;AAA3C,4GAAA,cAAc,OAAA;AACvB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,6CAA4C;AAAnC,oGAAA,QAAQ,OAAA;AACjB,mCAAkC;AAAzB,0FAAA,GAAG,OAAA;AACZ,qDAA0F;AAAjF,6GAAA,aAAa,OAAA;AAAE,0GAAA,UAAU,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,sGAAA,MAAM,OAAA;AAE3D,6CAA2B;AAC3B,sDAAoC;AACpC,wEAA4D;AAAnD,yGAAA,KAAK,OAAA;AACd,wEAA4D;AAAnD,yGAAA,KAAK,OAAA;AAEd,iDAA+B;AAC/B,gDAA8B;AAE9B,kDAA8D;AAArD,mGAAA,MAAM,OAAa;AAC5B,gDAAqD;AAA5C,oGAAA,WAAW,OAAA;AACpB,8CAAuD;AAA9C,0GAAA,gBAAgB,OAAA;AACzB,gDAAuD;AAA9C,0GAAA,eAAe,OAAA;AACxB,sDAA6D;AAApD,gHAAA,kBAAkB,OAAA;AAE3B,oEAA+D;AAAtD,kHAAA,aAAa,OAAA;AACtB,+DAA6C;AAC7C,4DAA0D;AAAjD,6GAAA,YAAY,OAAA;AACrB,4EAAyE;AAAhE,4HAAA,mBAAmB,OAAA;AAE5B,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,8DASoC;AARnC,+GAAA,YAAY,OAAA;AACZ,iHAAA,cAAc,OAAA;AACd,4HAAA,yBAAyB,OAAA;AACzB,iHAAA,cAAc,OAAA;AACd,qHAAA,kBAAkB,OAAA;AAClB,yGAAA,MAAM,OAAA;AACN,6GAAA,UAAU,OAAA;AACV,iHAAA,cAAc,OAAA;AAGf,iDAAoD;AAA3C,4GAAA,cAAc,OAAA;AACvB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,yDAAsD;AAA7C,8GAAA,YAAY,OAAA;AACrB,6CAA4C;AAAnC,oGAAA,QAAQ,OAAA;AACjB,mCAAkC;AAAzB,0FAAA,GAAG,OAAA;AACZ,qDAA0F;AAAjF,6GAAA,aAAa,OAAA;AAAE,0GAAA,UAAU,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,sGAAA,MAAM,OAAA;AAE3D,8CAA4B;AAC5B,6CAA2B;AAC3B,sDAAoC;AACpC,wEAA4D;AAAnD,yGAAA,KAAK,OAAA;AACd,wEAA4D;AAAnD,yGAAA,KAAK,OAAA;AAEd,iDAA+B;AAC/B,gDAA8B;AAE9B,kDAA8D;AAArD,mGAAA,MAAM,OAAa;AAC5B,gDAAqD;AAA5C,oGAAA,WAAW,OAAA;AACpB,8CAAuD;AAA9C,0GAAA,gBAAgB,OAAA;AACzB,gDAAuD;AAA9C,0GAAA,eAAe,OAAA;AACxB,sDAA6D;AAApD,gHAAA,kBAAkB,OAAA;AAE3B,oEAA+D;AAAtD,kHAAA,aAAa,OAAA;AACtB,+DAA6C;AAC7C,4DAA0D;AAAjD,6GAAA,YAAY,OAAA;AACrB,4EAAyE;AAAhE,4HAAA,mBAAmB,OAAA;AAE5B,oEAAiE;AAAxD,sHAAA,gBAAgB,OAAA"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AddScopesColumnToApiKeys1742918400000 = void 0;
|
|
4
4
|
const permissions_1 = require("@n8n/permissions");
|
|
5
|
+
const constants_1 = require("../../constants");
|
|
5
6
|
const entities_1 = require("../../entities");
|
|
6
7
|
class AddScopesColumnToApiKeys1742918400000 {
|
|
7
8
|
async up({ runQuery, escape, queryRunner, schemaBuilder: { addColumns, column }, }) {
|
|
@@ -13,7 +14,10 @@ class AddScopesColumnToApiKeys1742918400000 {
|
|
|
13
14
|
const roleColumn = escape.columnName('role');
|
|
14
15
|
const apiKeysWithRoles = await runQuery(`SELECT ${userApiKeysTable}.${idColumn} AS id, ${userTable}.${roleColumn} AS role FROM ${userApiKeysTable} JOIN ${userTable} ON ${userTable}.${idColumn} = ${userApiKeysTable}.${userIdColumn}`);
|
|
15
16
|
for (const { id, role } of apiKeysWithRoles) {
|
|
16
|
-
const
|
|
17
|
+
const dbRole = constants_1.GLOBAL_ROLES[role];
|
|
18
|
+
const scopes = (0, permissions_1.getApiKeyScopesForRole)({
|
|
19
|
+
role: dbRole,
|
|
20
|
+
});
|
|
17
21
|
await queryRunner.manager.update(entities_1.ApiKey, { id }, { scopes });
|
|
18
22
|
}
|
|
19
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1742918400000-AddScopesColumnToApiKeys.js","sourceRoot":"","sources":["../../../src/migrations/common/1742918400000-AddScopesColumnToApiKeys.ts"],"names":[],"mappings":";;;AACA,kDAA0D;AAE1D,6CAAwC;AAKxC,MAAa,qCAAqC;IACjD,KAAK,CAAC,EAAE,CAAC,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GACnB;QAClB,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3D,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE7C,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CACtC,UAAU,gBAAgB,IAAI,QAAQ,WAAW,SAAS,IAAI,UAAU,iBAAiB,gBAAgB,SAAS,SAAS,OAAO,SAAS,IAAI,QAAQ,MAAM,gBAAgB,IAAI,YAAY,EAAE,CAC/L,CAAC;QAEF,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,IAAA,oCAAsB,EAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"1742918400000-AddScopesColumnToApiKeys.js","sourceRoot":"","sources":["../../../src/migrations/common/1742918400000-AddScopesColumnToApiKeys.ts"],"names":[],"mappings":";;;AACA,kDAA0D;AAE1D,+CAA+C;AAC/C,6CAAwC;AAKxC,MAAa,qCAAqC;IACjD,KAAK,CAAC,EAAE,CAAC,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GACnB;QAClB,MAAM,UAAU,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAE3D,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE7C,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CACtC,UAAU,gBAAgB,IAAI,QAAQ,WAAW,SAAS,IAAI,UAAU,iBAAiB,gBAAgB,SAAS,SAAS,OAAO,SAAS,IAAI,QAAQ,MAAM,gBAAgB,IAAI,YAAY,EAAE,CAC/L,CAAC;QAEF,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,wBAAY,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,MAAM,GAAG,IAAA,oCAAsB,EAAC;gBACrC,IAAI,EAAE,MAAM;aACZ,CAAC,CAAC;YACH,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;IACF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,EAAoB;QAC9D,MAAM,WAAW,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;CACD;AA/BD,sFA+BC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MigrationContext, ReversibleMigration } from '../migration-types';
|
|
2
|
+
export declare class RemoveOldRoleColumn1750252139170 implements ReversibleMigration {
|
|
3
|
+
up({ schemaBuilder: { dropColumns }, escape, runQuery }: MigrationContext): Promise<void>;
|
|
4
|
+
down({ schemaBuilder: { addColumns, column }, escape, runQuery }: MigrationContext): Promise<void>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemoveOldRoleColumn1750252139170 = void 0;
|
|
4
|
+
class RemoveOldRoleColumn1750252139170 {
|
|
5
|
+
async up({ schemaBuilder: { dropColumns }, escape, runQuery }) {
|
|
6
|
+
const roleTableName = escape.tableName('role');
|
|
7
|
+
const userTableName = escape.tableName('user');
|
|
8
|
+
const slugColumn = escape.columnName('slug');
|
|
9
|
+
const roleColumn = escape.columnName('role');
|
|
10
|
+
const roleSlugColumn = escape.columnName('roleSlug');
|
|
11
|
+
await runQuery(`UPDATE ${userTableName} SET ${roleSlugColumn} = 'global:member', ${roleColumn} = 'global:member' WHERE NOT EXISTS (SELECT 1 FROM ${roleTableName} WHERE ${slugColumn} = ${roleColumn})`);
|
|
12
|
+
await runQuery(`UPDATE ${userTableName} SET ${roleSlugColumn} = ${roleColumn} WHERE ${roleColumn} != ${roleSlugColumn}`);
|
|
13
|
+
await dropColumns('user', ['role']);
|
|
14
|
+
}
|
|
15
|
+
async down({ schemaBuilder: { addColumns, column }, escape, runQuery }) {
|
|
16
|
+
const userTableName = escape.tableName('user');
|
|
17
|
+
const roleColumn = escape.columnName('role');
|
|
18
|
+
const roleSlugColumn = escape.columnName('roleSlug');
|
|
19
|
+
await addColumns('user', [column('role').varchar(128).default("'global:member'").notNull]);
|
|
20
|
+
await runQuery(`UPDATE ${userTableName} SET ${roleColumn} = ${roleSlugColumn} WHERE ${roleSlugColumn} != ${roleColumn}`);
|
|
21
|
+
await runQuery(`UPDATE ${userTableName} SET ${roleColumn} = 'global:member' WHERE NOT EXISTS (SELECT 1 FROM role WHERE slug = ${roleColumn})`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.RemoveOldRoleColumn1750252139170 = RemoveOldRoleColumn1750252139170;
|
|
25
|
+
//# sourceMappingURL=1750252139170-RemoveOldRoleColumn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1750252139170-RemoveOldRoleColumn.js","sourceRoot":"","sources":["../../../src/migrations/common/1750252139170-RemoveOldRoleColumn.ts"],"names":[],"mappings":";;;AASA,MAAa,gCAAgC;IAC5C,KAAK,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAoB;QAC9E,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAKrD,MAAM,QAAQ,CACb,UAAU,aAAa,QAAQ,cAAc,uBAAuB,UAAU,sDAAsD,aAAa,UAAU,UAAU,MAAM,UAAU,GAAG,CACxL,CAAC;QAEF,MAAM,QAAQ,CACb,UAAU,aAAa,QAAQ,cAAc,MAAM,UAAU,UAAU,UAAU,OAAO,cAAc,EAAE,CACxG,CAAC;QAEF,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAoB;QACvF,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAErD,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3F,MAAM,QAAQ,CACb,UAAU,aAAa,QAAQ,UAAU,MAAM,cAAc,UAAU,cAAc,OAAO,UAAU,EAAE,CACxG,CAAC;QAGF,MAAM,QAAQ,CACb,UAAU,aAAa,QAAQ,UAAU,wEAAwE,UAAU,GAAG,CAC9H,CAAC;IACH,CAAC;CACD;AAtCD,4EAsCC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MigrationContext, ReversibleMigration } from '../migration-types';
|
|
2
|
+
export declare class LinkRoleToProjectRelationTable1753953244168 implements ReversibleMigration {
|
|
3
|
+
up({ schemaBuilder: { addForeignKey }, escape, dbType, runQuery }: MigrationContext): Promise<void>;
|
|
4
|
+
down({ schemaBuilder: { dropForeignKey } }: MigrationContext): Promise<void>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LinkRoleToProjectRelationTable1753953244168 = void 0;
|
|
4
|
+
const constants_1 = require("../../constants");
|
|
5
|
+
class LinkRoleToProjectRelationTable1753953244168 {
|
|
6
|
+
async up({ schemaBuilder: { addForeignKey }, escape, dbType, runQuery }) {
|
|
7
|
+
const roleTableName = escape.tableName('role');
|
|
8
|
+
const projectRelationTableName = escape.tableName('project_relation');
|
|
9
|
+
const slugColumn = escape.columnName('slug');
|
|
10
|
+
const roleColumn = escape.columnName('role');
|
|
11
|
+
const roleTypeColumn = escape.columnName('roleType');
|
|
12
|
+
const systemRoleColumn = escape.columnName('systemRole');
|
|
13
|
+
const isPostgresOrSqlite = dbType === 'postgresdb' || dbType === 'sqlite';
|
|
14
|
+
const query = isPostgresOrSqlite
|
|
15
|
+
? `INSERT INTO ${roleTableName} (${slugColumn}, ${roleTypeColumn}, ${systemRoleColumn}) VALUES (:slug, :roleType, :systemRole) ON CONFLICT DO NOTHING`
|
|
16
|
+
: `INSERT IGNORE INTO ${roleTableName} (${slugColumn}, ${roleTypeColumn}, ${systemRoleColumn}) VALUES (:slug, :roleType, :systemRole)`;
|
|
17
|
+
for (const role of Object.values(constants_1.PROJECT_ROLES)) {
|
|
18
|
+
await runQuery(query, {
|
|
19
|
+
slug: role.slug,
|
|
20
|
+
roleType: role.roleType,
|
|
21
|
+
systemRole: role.systemRole,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
await runQuery(`UPDATE ${projectRelationTableName} SET ${roleColumn} = '${constants_1.PROJECT_VIEWER_ROLE.slug}' WHERE NOT EXISTS (SELECT 1 FROM ${roleTableName} WHERE ${slugColumn} = ${roleColumn})`);
|
|
25
|
+
await addForeignKey('project_relation', 'role', ['role', 'slug']);
|
|
26
|
+
}
|
|
27
|
+
async down({ schemaBuilder: { dropForeignKey } }) {
|
|
28
|
+
await dropForeignKey('project_relation', 'role', ['role', 'slug']);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.LinkRoleToProjectRelationTable1753953244168 = LinkRoleToProjectRelationTable1753953244168;
|
|
32
|
+
//# sourceMappingURL=1753953244168-LinkRoleToProjectRelationTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1753953244168-LinkRoleToProjectRelationTable.js","sourceRoot":"","sources":["../../../src/migrations/common/1753953244168-LinkRoleToProjectRelationTable.ts"],"names":[],"mappings":";;;AAAA,+CAAqE;AASrE,MAAa,2CAA2C;IACvD,KAAK,CAAC,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAoB;QACxF,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,wBAAwB,GAAG,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACrD,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAEzD,MAAM,kBAAkB,GAAG,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,QAAQ,CAAC;QAC1E,MAAM,KAAK,GAAG,kBAAkB;YAC/B,CAAC,CAAC,eAAe,aAAa,KAAK,UAAU,KAAK,cAAc,KAAK,gBAAgB,iEAAiE;YACtJ,CAAC,CAAC,sBAAsB,aAAa,KAAK,UAAU,KAAK,cAAc,KAAK,gBAAgB,0CAA0C,CAAC;QAGxI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,yBAAa,CAAC,EAAE,CAAC;YACjD,MAAM,QAAQ,CAAC,KAAK,EAAE;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC3B,CAAC,CAAC;QACJ,CAAC;QAKD,MAAM,QAAQ,CACb,UAAU,wBAAwB,QAAQ,UAAU,OAAO,+BAAmB,CAAC,IAAI,qCAAqC,aAAa,UAAU,UAAU,MAAM,UAAU,GAAG,CAC5K,CAAC;QAEF,MAAM,aAAa,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,EAAoB;QACjE,MAAM,cAAc,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;CACD;AApCD,kGAoCC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MigrationContext, ReversibleMigration } from '../migration-types';
|
|
2
|
+
export declare class ReplaceDataStoreTablesWithDataTables1754475614602 implements ReversibleMigration {
|
|
3
|
+
up({ schemaBuilder: { createTable, column, dropTable } }: MigrationContext): Promise<void>;
|
|
4
|
+
down({ schemaBuilder: { createTable, column, dropTable } }: MigrationContext): Promise<void>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReplaceDataStoreTablesWithDataTables1754475614602 = void 0;
|
|
4
|
+
const TABLE_TABLE_NAME_BEFORE = 'data_store';
|
|
5
|
+
const COLUMN_TABLE_NAME_BEFORE = 'data_store_column';
|
|
6
|
+
const TABLE_TABLE_NAME_AFTER = 'data_table';
|
|
7
|
+
const COLUMN_TABLE_NAME_AFTER = 'data_table_column';
|
|
8
|
+
class ReplaceDataStoreTablesWithDataTables1754475614602 {
|
|
9
|
+
async up({ schemaBuilder: { createTable, column, dropTable } }) {
|
|
10
|
+
await dropTable(COLUMN_TABLE_NAME_BEFORE);
|
|
11
|
+
await dropTable(TABLE_TABLE_NAME_BEFORE);
|
|
12
|
+
await createTable(TABLE_TABLE_NAME_AFTER)
|
|
13
|
+
.withColumns(column('id').varchar(36).primary, column('name').varchar(128).notNull, column('projectId').varchar(36).notNull)
|
|
14
|
+
.withForeignKey('projectId', {
|
|
15
|
+
tableName: 'project',
|
|
16
|
+
columnName: 'id',
|
|
17
|
+
onDelete: 'CASCADE',
|
|
18
|
+
})
|
|
19
|
+
.withUniqueConstraintOn(['projectId', 'name']).withTimestamps;
|
|
20
|
+
await createTable(COLUMN_TABLE_NAME_AFTER)
|
|
21
|
+
.withColumns(column('id').varchar(36).primary.notNull, column('name').varchar(128).notNull, column('type')
|
|
22
|
+
.varchar(32)
|
|
23
|
+
.notNull.comment('Expected: string, number, boolean, or date (not enforced as a constraint)'), column('index').int.notNull.comment('Column order, starting from 0 (0 = first column)'), column('dataTableId').varchar(36).notNull)
|
|
24
|
+
.withForeignKey('dataTableId', {
|
|
25
|
+
tableName: TABLE_TABLE_NAME_AFTER,
|
|
26
|
+
columnName: 'id',
|
|
27
|
+
onDelete: 'CASCADE',
|
|
28
|
+
})
|
|
29
|
+
.withUniqueConstraintOn(['dataTableId', 'name']).withTimestamps;
|
|
30
|
+
}
|
|
31
|
+
async down({ schemaBuilder: { createTable, column, dropTable } }) {
|
|
32
|
+
await dropTable(COLUMN_TABLE_NAME_AFTER);
|
|
33
|
+
await dropTable(TABLE_TABLE_NAME_AFTER);
|
|
34
|
+
await createTable(TABLE_TABLE_NAME_BEFORE)
|
|
35
|
+
.withColumns(column('id').varchar(36).primary, column('name').varchar(128).notNull, column('projectId').varchar(36).notNull, column('sizeBytes').int.default(0).notNull)
|
|
36
|
+
.withForeignKey('projectId', {
|
|
37
|
+
tableName: 'project',
|
|
38
|
+
columnName: 'id',
|
|
39
|
+
onDelete: 'CASCADE',
|
|
40
|
+
})
|
|
41
|
+
.withUniqueConstraintOn(['projectId', 'name']).withTimestamps;
|
|
42
|
+
await createTable(COLUMN_TABLE_NAME_BEFORE)
|
|
43
|
+
.withColumns(column('id').varchar(36).primary.notNull, column('name').varchar(128).notNull, column('type')
|
|
44
|
+
.varchar(32)
|
|
45
|
+
.notNull.comment('Expected: string, number, boolean, or date (not enforced as a constraint)'), column('index').int.notNull.comment('Column order, starting from 0 (0 = first column)'), column('dataStoreId').varchar(36).notNull)
|
|
46
|
+
.withForeignKey('dataStoreId', {
|
|
47
|
+
tableName: TABLE_TABLE_NAME_BEFORE,
|
|
48
|
+
columnName: 'id',
|
|
49
|
+
onDelete: 'CASCADE',
|
|
50
|
+
})
|
|
51
|
+
.withUniqueConstraintOn(['dataStoreId', 'name']).withTimestamps;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.ReplaceDataStoreTablesWithDataTables1754475614602 = ReplaceDataStoreTablesWithDataTables1754475614602;
|
|
55
|
+
//# sourceMappingURL=1754475614602-ReplaceDataStoreTablesWithDataTables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1754475614602-ReplaceDataStoreTablesWithDataTables.js","sourceRoot":"","sources":["../../../src/migrations/common/1754475614602-ReplaceDataStoreTablesWithDataTables.ts"],"names":[],"mappings":"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"}
|