@things-factory/board-service 6.2.40 → 6.2.42
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-server/service/board/board-query.js +53 -2
- package/dist-server/service/board/board-query.js.map +1 -1
- package/dist-server/service/index.js +2 -10
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/permission/board-permission-subscriber.js +14 -39
- package/dist-server/service/permission/board-permission-subscriber.js.map +1 -1
- package/dist-server/service/permission/domain-permission-subscriber.js +5 -35
- package/dist-server/service/permission/domain-permission-subscriber.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
- package/server/service/board/board-query.ts +58 -2
- package/server/service/index.ts +2 -10
- package/server/service/permission/board-permission-subscriber.ts +18 -48
- package/server/service/permission/domain-permission-subscriber.ts +7 -40
- package/dist-server/service/board-secret/board-resolver.js +0 -156
- package/dist-server/service/board-secret/board-resolver.js.map +0 -1
- package/dist-server/service/board-secret/board-secret.js +0 -55
- package/dist-server/service/board-secret/board-secret.js.map +0 -1
- package/dist-server/service/board-secret/index.js +0 -8
- package/dist-server/service/board-secret/index.js.map +0 -1
- package/dist-server/service/domain-secret/domain-resolver.js +0 -46
- package/dist-server/service/domain-secret/domain-resolver.js.map +0 -1
- package/dist-server/service/domain-secret/domain-secret.js +0 -49
- package/dist-server/service/domain-secret/domain-secret.js.map +0 -1
- package/dist-server/service/domain-secret/index.js +0 -8
- package/dist-server/service/domain-secret/index.js.map +0 -1
- package/server/service/board-secret/board-resolver.ts +0 -148
- package/server/service/board-secret/board-secret.ts +0 -38
- package/server/service/board-secret/index.ts +0 -5
- package/server/service/domain-secret/domain-resolver.ts +0 -46
- package/server/service/domain-secret/domain-secret.ts +0 -34
- package/server/service/domain-secret/index.ts +0 -5
|
@@ -6,17 +6,61 @@ const typeorm_1 = require("typeorm");
|
|
|
6
6
|
const type_graphql_1 = require("type-graphql");
|
|
7
7
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
8
8
|
const shell_1 = require("@things-factory/shell");
|
|
9
|
+
const operato_license_checker_1 = require("@things-factory/operato-license-checker");
|
|
9
10
|
const group_1 = require("../group/group");
|
|
10
11
|
const play_group_1 = require("../play-group/play-group");
|
|
11
12
|
const board_1 = require("./board");
|
|
12
13
|
const board_type_1 = require("./board-type");
|
|
13
14
|
const board_history_1 = require("./board-history");
|
|
15
|
+
const license_error_1 = require("../../errors/license-error");
|
|
14
16
|
let BoardQuery = class BoardQuery {
|
|
17
|
+
async boardPermissions(context) {
|
|
18
|
+
const { user, domain } = context.state;
|
|
19
|
+
const licensedPermissions = ((0, operato_license_checker_1.getPermission)('Permissions For Board Usage') || 'Modeller, Viewer')
|
|
20
|
+
.split(',')
|
|
21
|
+
.map(p => p.trim());
|
|
22
|
+
var permissions = [];
|
|
23
|
+
licensedPermissions.includes('Modeller') &&
|
|
24
|
+
(await auth_base_1.User.hasPrivilege('mutation', 'board', domain, user)) &&
|
|
25
|
+
permissions.push('Modeller');
|
|
26
|
+
licensedPermissions.includes('Viewer') &&
|
|
27
|
+
(await auth_base_1.User.hasPrivilege('query', 'board', domain, user)) &&
|
|
28
|
+
permissions.push('Viewer');
|
|
29
|
+
return permissions;
|
|
30
|
+
}
|
|
15
31
|
async board(id, context) {
|
|
16
32
|
const { domain } = context.state;
|
|
17
|
-
|
|
33
|
+
var board = await (0, shell_1.getRepository)(board_1.Board).findOne({
|
|
18
34
|
where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, id }
|
|
19
35
|
});
|
|
36
|
+
if (domain) {
|
|
37
|
+
// 1. check domainSecret is over limit quantity or not
|
|
38
|
+
var count = await (0, shell_1.getRepository)(shell_1.Domain)
|
|
39
|
+
.manager.createQueryBuilder()
|
|
40
|
+
.select('id')
|
|
41
|
+
.from(shell_1.Domain, 'domain')
|
|
42
|
+
.getCount();
|
|
43
|
+
if (!(0, operato_license_checker_1.checkDomain)(count)) {
|
|
44
|
+
throw new license_error_1.LicenseError({
|
|
45
|
+
errorCode: context.t(license_error_1.LicenseError.ERROR_CODES.OVER_LIMIT)
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (board) {
|
|
50
|
+
// 1. check boardSecret is over limit quantity or not
|
|
51
|
+
var count = await (0, shell_1.getRepository)(board_1.Board)
|
|
52
|
+
.manager.createQueryBuilder()
|
|
53
|
+
.select('id')
|
|
54
|
+
.from(board_1.Board, 'board')
|
|
55
|
+
.where('"domain_id" = :domainId', { domainId: domain.id })
|
|
56
|
+
.getCount();
|
|
57
|
+
if (!(0, operato_license_checker_1.checkTarget)(count)) {
|
|
58
|
+
throw new license_error_1.LicenseError({
|
|
59
|
+
errorCode: context.t(license_error_1.LicenseError.ERROR_CODES.OVER_LIMIT)
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return board;
|
|
20
64
|
}
|
|
21
65
|
async boardByName(name, context) {
|
|
22
66
|
const { domain } = context.state;
|
|
@@ -96,8 +140,15 @@ let BoardQuery = class BoardQuery {
|
|
|
96
140
|
}
|
|
97
141
|
};
|
|
98
142
|
tslib_1.__decorate([
|
|
99
|
-
(0, type_graphql_1.Query)(returns =>
|
|
143
|
+
(0, type_graphql_1.Query)(returns => [String], { description: 'Board Usage Permissions' }),
|
|
144
|
+
tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
|
|
145
|
+
tslib_1.__metadata("design:type", Function),
|
|
146
|
+
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
147
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
148
|
+
], BoardQuery.prototype, "boardPermissions", null);
|
|
149
|
+
tslib_1.__decorate([
|
|
100
150
|
(0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "query", domainOwnerGranted: true)'),
|
|
151
|
+
(0, type_graphql_1.Query)(returns => board_1.Board, { description: 'To fetch a board' }),
|
|
101
152
|
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
102
153
|
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
103
154
|
tslib_1.__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-query.js","sourceRoot":"","sources":["../../../server/service/board/board-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\nimport { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root, Directive } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\n\nimport { Group } from '../group/group'\nimport { PlayGroup } from '../play-group/play-group'\nimport { Board } from './board'\nimport { BoardList } from './board-type'\nimport { BoardHistory } from './board-history'\n\n@Resolver(Board)\nexport class BoardQuery {\n @Query(returns => Board, { description: 'To fetch a Board' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async board(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n return await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id }\n })\n }\n\n @Query(returns => Board, { nullable: true, description: 'To fetch a Board Model by name' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n return await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name }\n })\n }\n\n @Query(returns => BoardList, { description: 'To fetch Boards created by me' })\n async boardsCreatedByMe(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardList> {\n const { domain, user } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Board),\n params,\n domain,\n alias: 'board',\n searchables: ['name', 'description']\n }).andWhere('board.creator = :user', { user: user.id })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => [BoardHistory], { description: 'To fetch a Board Versions' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardVersions(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<BoardHistory[]> {\n const { domain } = context.state\n\n return await getRepository(BoardHistory).find({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },\n relations: ['updater'],\n order: { version: 'DESC' },\n take: 10\n })\n }\n\n @Query(returns => BoardHistory, { description: 'To fetch the latest Board published' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardPublished(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<BoardHistory> {\n const { domain } = context.state\n\n return await getRepository(BoardHistory).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },\n order: { version: 'DESC' }\n })\n }\n\n @Query(returns => BoardList, { description: 'To fetch multiple Boards' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boards(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Board),\n params,\n domain,\n searchables: ['name', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Group)\n async group(@Root() board: Board) {\n return (\n board.groupId &&\n (await getRepository(Group).findOneBy({\n id: board.groupId\n }))\n )\n }\n\n @FieldResolver(type => [PlayGroup])\n async playGroups(@Root() board: Board) {\n return (\n await getRepository(Board).findOne({\n where: { id: board.id },\n relations: ['playGroups']\n })\n )?.playGroups\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() board: Board) {\n return (\n board.domainId &&\n (await getRepository(Domain).findOneBy({\n id: board.domainId\n }))\n )\n }\n\n @FieldResolver(type => User)\n async updater(@Root() board: Board): Promise<User> {\n return (\n board.updaterId &&\n (await getRepository(User).findOneBy({\n id: board.updaterId\n }))\n )\n }\n\n @FieldResolver(type => User)\n async creator(@Root() board: Board): Promise<User> {\n return (\n board.creatorId &&\n (await getRepository(User).findOneBy({\n id: board.creatorId\n }))\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"board-query.js","sourceRoot":"","sources":["../../../server/service/board/board-query.ts"],"names":[],"mappings":";;;;AAAA,qCAA4B;AAC5B,+CAA8F;AAE9F,yDAAgD;AAChD,iDAAuG;AACvG,qFAAiG;AAEjG,0CAAsC;AACtC,yDAAoD;AACpD,mCAA+B;AAC/B,6CAAwC;AACxC,mDAA8C;AAE9C,8DAAyD;AAElD,IAAM,UAAU,GAAhB,MAAM,UAAU;IAEf,AAAN,KAAK,CAAC,gBAAgB,CAAQ,OAAwB;QACpD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,MAAM,mBAAmB,GAAG,CAAC,IAAA,uCAAa,EAAC,6BAA6B,CAAC,IAAI,kBAAkB,CAAC;aAC7F,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAErB,IAAI,WAAW,GAAG,EAAE,CAAA;QAEpB,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC;YACtC,CAAC,MAAM,gBAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC5D,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAE9B,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACpC,CAAC,MAAM,gBAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACzD,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAE5B,OAAO,WAAW,CAAA;IACpB,CAAC;IAIK,AAAN,KAAK,CAAC,KAAK,CAAY,EAAU,EAAS,OAAwB;QAChE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,IAAI,KAAK,GAAG,MAAM,IAAA,qBAAa,EAAC,aAAK,CAAC,CAAC,OAAO,CAAC;YAC7C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;SAChF,CAAC,CAAA;QAEF,IAAI,MAAM,EAAE;YACV,sDAAsD;YACtD,IAAI,KAAK,GAAG,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC;iBACpC,OAAO,CAAC,kBAAkB,EAAE;iBAC5B,MAAM,CAAC,IAAI,CAAC;iBACZ,IAAI,CAAC,cAAM,EAAE,QAAQ,CAAC;iBACtB,QAAQ,EAAE,CAAA;YAEb,IAAI,CAAC,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;gBACvB,MAAM,IAAI,4BAAY,CAAC;oBACrB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,UAAU,CAAC;iBAC1D,CAAC,CAAA;aACH;SACF;QAED,IAAI,KAAK,EAAE;YACT,qDAAqD;YACrD,IAAI,KAAK,GAAG,MAAM,IAAA,qBAAa,EAAC,aAAK,CAAC;iBACnC,OAAO,CAAC,kBAAkB,EAAE;iBAC5B,MAAM,CAAC,IAAI,CAAC;iBACZ,IAAI,CAAC,aAAK,EAAE,OAAO,CAAC;iBACpB,KAAK,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBACzD,QAAQ,EAAE,CAAA;YAEb,IAAI,CAAC,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;gBACvB,MAAM,IAAI,4BAAY,CAAC;oBACrB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,4BAAY,CAAC,WAAW,CAAC,UAAU,CAAC;iBAC1D,CAAC,CAAA;aACH;SACF;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAIK,AAAN,KAAK,CAAC,WAAW,CAAc,IAAY,EAAS,OAAwB;QAC1E,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,MAAM,IAAA,qBAAa,EAAC,aAAK,CAAC,CAAC,OAAO,CAAC;YACxC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE;SAClF,CAAC,CAAA;IACJ,CAAC;IAGK,AAAN,KAAK,CAAC,iBAAiB,CAAS,MAAiB,EAAS,OAAwB;QAChF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEtC,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC;YACjD,UAAU,EAAE,IAAA,qBAAa,EAAC,aAAK,CAAC;YAChC,MAAM;YACN,MAAM;YACN,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;SACrC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAEvD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAA;QAE3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;IAIK,AAAN,KAAK,CAAC,aAAa,CAAY,EAAU,EAAS,OAAwB;QACxE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,MAAM,IAAA,qBAAa,EAAC,4BAAY,CAAC,CAAC,IAAI,CAAC;YAC5C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YAC3F,SAAS,EAAE,CAAC,SAAS,CAAC;YACtB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAC1B,IAAI,EAAE,EAAE;SACT,CAAC,CAAA;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,cAAc,CAAY,EAAU,EAAS,OAAwB;QACzE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,MAAM,IAAA,qBAAa,EAAC,4BAAY,CAAC,CAAC,OAAO,CAAC;YAC/C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAA,YAAE,EAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YAC3F,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;SAC3B,CAAC,CAAA;IACJ,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CAAS,MAAiB,EAAS,OAAwB;QACrE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,MAAM,YAAY,GAAG,IAAA,qCAA6B,EAAC;YACjD,UAAU,EAAE,IAAA,qBAAa,EAAC,aAAK,CAAC;YAChC,MAAM;YACN,MAAM;YACN,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC;SACrC,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAA;QAE3D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;IAGK,AAAN,KAAK,CAAC,KAAK,CAAS,KAAY;QAC9B,OAAO,CACL,KAAK,CAAC,OAAO;YACb,CAAC,MAAM,IAAA,qBAAa,EAAC,aAAK,CAAC,CAAC,SAAS,CAAC;gBACpC,EAAE,EAAE,KAAK,CAAC,OAAO;aAClB,CAAC,CAAC,CACJ,CAAA;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,UAAU,CAAS,KAAY;;QACnC,OAAO,MAAA,CACL,MAAM,IAAA,qBAAa,EAAC,aAAK,CAAC,CAAC,OAAO,CAAC;YACjC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;YACvB,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC,CACH,0CAAE,UAAU,CAAA;IACf,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAAS,KAAY;QAC/B,OAAO,CACL,KAAK,CAAC,QAAQ;YACd,CAAC,MAAM,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAC,SAAS,CAAC;gBACrC,EAAE,EAAE,KAAK,CAAC,QAAQ;aACnB,CAAC,CAAC,CACJ,CAAA;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,KAAY;QAChC,OAAO,CACL,KAAK,CAAC,SAAS;YACf,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC;gBACnC,EAAE,EAAE,KAAK,CAAC,SAAS;aACpB,CAAC,CAAC,CACJ,CAAA;IACH,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CAAS,KAAY;QAChC,OAAO,CACL,KAAK,CAAC,SAAS;YACf,CAAC,MAAM,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAC,SAAS,CAAC;gBACnC,EAAE,EAAE,KAAK,CAAC,SAAS;aACpB,CAAC,CAAC,CACJ,CAAA;IACH,CAAC;CACF,CAAA;AApLO;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;IAC/C,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;kDAkB5B;AAIK;IAFL,IAAA,wBAAS,EAAC,6EAA6E,CAAC;IACxF,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,aAAK,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAChD,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;uCAuCxC;AAIK;IAFL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,aAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IAC1F,IAAA,wBAAS,EAAC,6EAA6E,CAAC;IACtE,mBAAA,IAAA,kBAAG,EAAC,MAAM,CAAC,CAAA;IAAgB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;6CAMlD;AAGK;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,sBAAS,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IACrD,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;mDAchD;AAIK;IAFL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC,4BAAY,CAAC,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;IAC9E,IAAA,wBAAS,EAAC,6EAA6E,CAAC;IACpE,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;+CAShD;AAIK;IAFL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,4BAAY,EAAE,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC;IACtF,IAAA,wBAAS,EAAC,6EAA6E,CAAC;IACnE,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;IAAc,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;gDAOjD;AAIK;IAFL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,sBAAS,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;IACxE,IAAA,wBAAS,EAAC,6EAA6E,CAAC;IAC3E,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;6CAAjB,iBAAS;;wCAarC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,aAAK,CAAC;IAChB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAQ,aAAK;;uCAO/B;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,sBAAS,CAAC,CAAC;IACjB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAQ,aAAK;;4CAOpC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IAChB,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAQ,aAAK;;wCAOhC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAQ,aAAK;;yCAOjC;AAGK;IADL,IAAA,4BAAa,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,CAAC;IACb,mBAAA,IAAA,mBAAI,GAAE,CAAA;;6CAAQ,aAAK;;yCAOjC;AArLU,UAAU;IADtB,IAAA,uBAAQ,EAAC,aAAK,CAAC;GACH,UAAU,CAsLtB;AAtLY,gCAAU","sourcesContent":["import { In } from 'typeorm'\nimport { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root, Directive } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { checkTarget, checkDomain, getPermission } from '@things-factory/operato-license-checker'\n\nimport { Group } from '../group/group'\nimport { PlayGroup } from '../play-group/play-group'\nimport { Board } from './board'\nimport { BoardList } from './board-type'\nimport { BoardHistory } from './board-history'\n\nimport { LicenseError } from '../../errors/license-error'\n@Resolver(Board)\nexport class BoardQuery {\n @Query(returns => [String], { description: 'Board Usage Permissions' })\n async boardPermissions(@Ctx() context: ResolverContext): Promise<string[]> {\n const { user, domain } = context.state\n\n const licensedPermissions = (getPermission('Permissions For Board Usage') || 'Modeller, Viewer')\n .split(',')\n .map(p => p.trim())\n\n var permissions = []\n\n licensedPermissions.includes('Modeller') &&\n (await User.hasPrivilege('mutation', 'board', domain, user)) &&\n permissions.push('Modeller')\n\n licensedPermissions.includes('Viewer') &&\n (await User.hasPrivilege('query', 'board', domain, user)) &&\n permissions.push('Viewer')\n\n return permissions\n }\n\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Board, { description: 'To fetch a board' })\n async board(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n var board = await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id }\n })\n\n if (domain) {\n // 1. check domainSecret is over limit quantity or not\n var count = await getRepository(Domain)\n .manager.createQueryBuilder()\n .select('id')\n .from(Domain, 'domain')\n .getCount()\n\n if (!checkDomain(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n }\n }\n\n if (board) {\n // 1. check boardSecret is over limit quantity or not\n var count = await getRepository(Board)\n .manager.createQueryBuilder()\n .select('id')\n .from(Board, 'board')\n .where('\"domain_id\" = :domainId', { domainId: domain.id })\n .getCount()\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n }\n }\n\n return board\n }\n\n @Query(returns => Board, { nullable: true, description: 'To fetch a Board Model by name' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n return await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name }\n })\n }\n\n @Query(returns => BoardList, { description: 'To fetch Boards created by me' })\n async boardsCreatedByMe(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardList> {\n const { domain, user } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Board),\n params,\n domain,\n alias: 'board',\n searchables: ['name', 'description']\n }).andWhere('board.creator = :user', { user: user.id })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => [BoardHistory], { description: 'To fetch a Board Versions' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardVersions(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<BoardHistory[]> {\n const { domain } = context.state\n\n return await getRepository(BoardHistory).find({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },\n relations: ['updater'],\n order: { version: 'DESC' },\n take: 10\n })\n }\n\n @Query(returns => BoardHistory, { description: 'To fetch the latest Board published' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardPublished(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<BoardHistory> {\n const { domain } = context.state\n\n return await getRepository(BoardHistory).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },\n order: { version: 'DESC' }\n })\n }\n\n @Query(returns => BoardList, { description: 'To fetch multiple Boards' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boards(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Board),\n params,\n domain,\n searchables: ['name', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Group)\n async group(@Root() board: Board) {\n return (\n board.groupId &&\n (await getRepository(Group).findOneBy({\n id: board.groupId\n }))\n )\n }\n\n @FieldResolver(type => [PlayGroup])\n async playGroups(@Root() board: Board) {\n return (\n await getRepository(Board).findOne({\n where: { id: board.id },\n relations: ['playGroups']\n })\n )?.playGroups\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() board: Board) {\n return (\n board.domainId &&\n (await getRepository(Domain).findOneBy({\n id: board.domainId\n }))\n )\n }\n\n @FieldResolver(type => User)\n async updater(@Root() board: Board): Promise<User> {\n return (\n board.updaterId &&\n (await getRepository(User).findOneBy({\n id: board.updaterId\n }))\n )\n }\n\n @FieldResolver(type => User)\n async creator(@Root() board: Board): Promise<User> {\n return (\n board.creatorId &&\n (await getRepository(User).findOneBy({\n id: board.creatorId\n }))\n )\n }\n}\n"]}
|
|
@@ -8,8 +8,6 @@ tslib_1.__exportStar(require("./theme/theme"), exports);
|
|
|
8
8
|
tslib_1.__exportStar(require("./board/board"), exports);
|
|
9
9
|
tslib_1.__exportStar(require("./group/group"), exports);
|
|
10
10
|
tslib_1.__exportStar(require("./play-group/play-group"), exports);
|
|
11
|
-
tslib_1.__exportStar(require("./board-secret/board-secret"), exports);
|
|
12
|
-
tslib_1.__exportStar(require("./domain-secret/domain-secret"), exports);
|
|
13
11
|
/* IMPORT ENTITIES AND RESOLVERS */
|
|
14
12
|
const board_template_1 = require("./board-template");
|
|
15
13
|
const theme_1 = require("./theme");
|
|
@@ -17,9 +15,7 @@ const board_1 = require("./board");
|
|
|
17
15
|
const group_1 = require("./group");
|
|
18
16
|
const play_group_1 = require("./play-group");
|
|
19
17
|
const analysis_1 = require("./analysis");
|
|
20
|
-
const board_secret_1 = require("./board-secret");
|
|
21
18
|
const board_favorite_1 = require("./board-favorite");
|
|
22
|
-
const domain_secret_1 = require("./domain-secret");
|
|
23
19
|
const permission_1 = require("./permission");
|
|
24
20
|
exports.entities = [
|
|
25
21
|
/* ENTITIES */
|
|
@@ -28,9 +24,7 @@ exports.entities = [
|
|
|
28
24
|
...board_1.entities,
|
|
29
25
|
...group_1.entities,
|
|
30
26
|
...play_group_1.entities,
|
|
31
|
-
...
|
|
32
|
-
...board_favorite_1.entities,
|
|
33
|
-
...domain_secret_1.entities
|
|
27
|
+
...board_favorite_1.entities
|
|
34
28
|
];
|
|
35
29
|
exports.subscribers = [
|
|
36
30
|
/* SUBSCRIBERS */
|
|
@@ -49,9 +43,7 @@ exports.schema = {
|
|
|
49
43
|
...group_1.resolvers,
|
|
50
44
|
...play_group_1.resolvers,
|
|
51
45
|
...analysis_1.resolvers,
|
|
52
|
-
...
|
|
53
|
-
...board_favorite_1.resolvers,
|
|
54
|
-
...domain_secret_1.resolvers
|
|
46
|
+
...board_favorite_1.resolvers
|
|
55
47
|
]
|
|
56
48
|
};
|
|
57
49
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,0EAA+C;AAC/C,wDAA6B;AAC7B,wDAA6B;AAC7B,wDAA6B;AAC7B,kEAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,0EAA+C;AAC/C,wDAA6B;AAC7B,wDAA6B;AAC7B,wDAA6B;AAC7B,kEAAuC;AAEvC,mCAAmC;AACnC,qDAIyB;AACzB,mCAAiH;AACjH,mCAAiH;AACjH,mCAAgF;AAChF,6CAIqB;AACrB,yCAAkE;AAClE,qDAAyG;AACzG,6CAAkE;AAErD,QAAA,QAAQ,GAAG;IACtB,cAAc;IACd,GAAG,yBAAqB;IACxB,GAAG,gBAAa;IAChB,GAAG,gBAAa;IAChB,GAAG,gBAAa;IAChB,GAAG,qBAAiB;IACpB,GAAG,yBAAqB;CACzB,CAAA;AAEY,QAAA,WAAW,GAAG;IACzB,iBAAiB;IACjB,GAAG,4BAAwB;IAC3B,GAAG,mBAAgB;IACnB,GAAG,mBAAgB;IACnB,GAAG,wBAAoB;IACvB,GAAG,wBAAoB;CACxB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,sBAAsB;QACtB,GAAG,0BAAsB;QACzB,GAAG,iBAAc;QACjB,GAAG,iBAAc;QACjB,GAAG,iBAAc;QACjB,GAAG,sBAAkB;QACrB,GAAG,oBAAwB;QAC3B,GAAG,0BAAsB;KAC1B;CACF,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\nexport * from './board-template/board-template'\nexport * from './theme/theme'\nexport * from './board/board'\nexport * from './group/group'\nexport * from './play-group/play-group'\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport {\n entities as BoardTemplateEntities,\n resolvers as BoardTemplateResolvers,\n subscribers as BoardTemplateSubscribers\n} from './board-template'\nimport { entities as ThemeEntities, resolvers as ThemeResolvers, subscribers as ThemeSubscribers } from './theme'\nimport { entities as BoardEntities, resolvers as BoardResolvers, subscribers as BoardSubscribers } from './board'\nimport { entities as GroupEntities, resolvers as GroupResolvers } from './group'\nimport {\n entities as PlayGroupEntities,\n resolvers as PlayGroupResolvers,\n subscribers as PlayGroupSubscribers\n} from './play-group'\nimport { resolvers as IntegrationAnalysisQuery } from './analysis'\nimport { entities as BoardFavoriteEntities, resolvers as BoardFavoriteResolvers } from './board-favorite'\nimport { subscribers as PermissionSubscriber } from './permission'\n\nexport const entities = [\n /* ENTITIES */\n ...BoardTemplateEntities,\n ...ThemeEntities,\n ...BoardEntities,\n ...GroupEntities,\n ...PlayGroupEntities,\n ...BoardFavoriteEntities\n]\n\nexport const subscribers = [\n /* SUBSCRIBERS */\n ...BoardTemplateSubscribers,\n ...ThemeSubscribers,\n ...BoardSubscribers,\n ...PlayGroupSubscribers,\n ...PermissionSubscriber\n]\n\nexport const schema = {\n resolverClasses: [\n /* RESOLVER CLASSES */\n ...BoardTemplateResolvers,\n ...ThemeResolvers,\n ...BoardResolvers,\n ...GroupResolvers,\n ...PlayGroupResolvers,\n ...IntegrationAnalysisQuery,\n ...BoardFavoriteResolvers\n ]\n}\n"]}
|
|
@@ -5,9 +5,7 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
6
|
const operato_license_checker_1 = require("@things-factory/operato-license-checker");
|
|
7
7
|
const board_1 = require("../board/board");
|
|
8
|
-
const board_secret_1 = require("../board-secret/board-secret");
|
|
9
8
|
const license_error_1 = require("../../errors/license-error");
|
|
10
|
-
const crypto = require('crypto');
|
|
11
9
|
let BoardPermissionSubscriber = class BoardPermissionSubscriber {
|
|
12
10
|
listenTo() {
|
|
13
11
|
return board_1.Board;
|
|
@@ -17,45 +15,22 @@ let BoardPermissionSubscriber = class BoardPermissionSubscriber {
|
|
|
17
15
|
*/
|
|
18
16
|
async afterInsert(event) {
|
|
19
17
|
var entityManager = event.manager;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
var boardSecret = new board_secret_1.BoardSecret();
|
|
35
|
-
boardSecret.id = crypto.randomUUID();
|
|
36
|
-
boardSecret.targetId = board.id;
|
|
37
|
-
boardSecret.targetType = 'board';
|
|
38
|
-
boardSecret.domain = board.domain;
|
|
39
|
-
var hash = (0, operato_license_checker_1.doSomething)({ secId: boardSecret.id, id: board.id });
|
|
40
|
-
boardSecret.secret = hash;
|
|
41
|
-
await entityManager.save(boardSecret);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
throw new license_error_1.LicenseError({
|
|
45
|
-
errorCode: license_error_1.LicenseError.ERROR_CODES.OVER_LIMIT
|
|
46
|
-
});
|
|
47
|
-
}
|
|
18
|
+
//target
|
|
19
|
+
//1. check board count is over licensed quantity or not
|
|
20
|
+
var domain = event.entity.domain;
|
|
21
|
+
var count = (await entityManager
|
|
22
|
+
.createQueryBuilder()
|
|
23
|
+
.select('board')
|
|
24
|
+
.from(board_1.Board, 'board')
|
|
25
|
+
.where('"domain_id" = :domainId', { domainId: domain.id })
|
|
26
|
+
.getCount()) + 1;
|
|
27
|
+
//2. create new token to board and save board-secret
|
|
28
|
+
if (!(0, operato_license_checker_1.checkTarget)(count)) {
|
|
29
|
+
throw new license_error_1.LicenseError({
|
|
30
|
+
errorCode: license_error_1.LicenseError.ERROR_CODES.OVER_LIMIT
|
|
31
|
+
});
|
|
48
32
|
}
|
|
49
33
|
}
|
|
50
|
-
/**
|
|
51
|
-
* Called after entity is removed.
|
|
52
|
-
*/
|
|
53
|
-
async afterRemove(event) {
|
|
54
|
-
var entityManager = event.manager;
|
|
55
|
-
await entityManager.query(`delete
|
|
56
|
-
from "board_secrets"
|
|
57
|
-
where "target_id" not in (select "id" from "boards")`);
|
|
58
|
-
}
|
|
59
34
|
};
|
|
60
35
|
BoardPermissionSubscriber = tslib_1.__decorate([
|
|
61
36
|
(0, typeorm_1.EventSubscriber)()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-permission-subscriber.js","sourceRoot":"","sources":["../../../server/service/permission/board-permission-subscriber.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"board-permission-subscriber.js","sourceRoot":"","sources":["../../../server/service/permission/board-permission-subscriber.ts"],"names":[],"mappings":";;;;AAAA,qCAAiF;AAEjF,qFAAqE;AAErE,0CAAsC;AACtC,8DAAyD;AAGlD,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,QAAQ;QACN,OAAO,aAAK,CAAA;IACd,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAyB;QACzC,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAA;QACjC,QAAQ;QACR,uDAAuD;QACvD,IAAI,MAAM,GAAQ,KAAK,CAAC,MAAM,CAAC,MAAM,CAAA;QACrC,IAAI,KAAK,GACP,CAAC,MAAM,aAAa;aACjB,kBAAkB,EAAE;aACpB,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,aAAK,EAAE,OAAO,CAAC;aACpB,KAAK,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;aACzD,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;QAEpB,oDAAoD;QACpD,IAAI,CAAC,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;YACvB,MAAM,IAAI,4BAAY,CAAC;gBACrB,SAAS,EAAE,4BAAY,CAAC,WAAW,CAAC,UAAU;aAC/C,CAAC,CAAA;SACH;IACH,CAAC;CACF,CAAA;AA3BY,yBAAyB;IADrC,IAAA,yBAAe,GAAE;GACL,yBAAyB,CA2BrC;AA3BY,8DAAyB","sourcesContent":["import { EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm'\n\nimport { checkTarget } from '@things-factory/operato-license-checker'\n\nimport { Board } from '../board/board'\nimport { LicenseError } from '../../errors/license-error'\n\n@EventSubscriber()\nexport class BoardPermissionSubscriber implements EntitySubscriberInterface<Board> {\n listenTo() {\n return Board\n }\n /**\n * Called before board insertion.\n */\n async afterInsert(event: InsertEvent<Board>) {\n var entityManager = event.manager\n //target\n //1. check board count is over licensed quantity or not\n var domain: any = event.entity.domain\n var count =\n (await entityManager\n .createQueryBuilder()\n .select('board')\n .from(Board, 'board')\n .where('\"domain_id\" = :domainId', { domainId: domain.id })\n .getCount()) + 1\n\n //2. create new token to board and save board-secret\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: LicenseError.ERROR_CODES.OVER_LIMIT\n })\n }\n }\n}\n"]}
|
|
@@ -3,10 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.DomainPermissionSubscriber = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
|
-
const uuid_1 = require("uuid");
|
|
7
6
|
const operato_license_checker_1 = require("@things-factory/operato-license-checker");
|
|
8
7
|
const shell_1 = require("@things-factory/shell");
|
|
9
|
-
const domain_secret_1 = require("../domain-secret/domain-secret");
|
|
10
8
|
const license_error_1 = require("../../errors/license-error");
|
|
11
9
|
let DomainPermissionSubscriber = class DomainPermissionSubscriber {
|
|
12
10
|
listenTo() {
|
|
@@ -17,41 +15,13 @@ let DomainPermissionSubscriber = class DomainPermissionSubscriber {
|
|
|
17
15
|
*/
|
|
18
16
|
async afterInsert(event) {
|
|
19
17
|
var entityManager = event.manager;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
.select('domain')
|
|
26
|
-
.from(domain_secret_1.DomainSecret, 'secret')
|
|
27
|
-
.where('"domain_id" = :domainId', { domainId: domain.id })
|
|
28
|
-
.getCount()) + 1;
|
|
29
|
-
//2. create new token to domain and save domain-secret
|
|
30
|
-
if ((0, operato_license_checker_1.checkDomain)(count)) {
|
|
31
|
-
var domain = event.entity;
|
|
32
|
-
var domainSecret = new domain_secret_1.DomainSecret();
|
|
33
|
-
domainSecret.id = (0, uuid_1.v4)();
|
|
34
|
-
domainSecret.domain = domain;
|
|
35
|
-
var hash = (0, operato_license_checker_1.doSomething)({ secId: domainSecret.id, id: domain.id });
|
|
36
|
-
domainSecret.secret = hash;
|
|
37
|
-
await entityManager.save(domainSecret);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
throw new license_error_1.LicenseError({
|
|
41
|
-
errorCode: license_error_1.LicenseError.ERROR_CODES.VERIFICATION_ERROR
|
|
42
|
-
});
|
|
43
|
-
}
|
|
18
|
+
var count = (await entityManager.createQueryBuilder().select('id').from(shell_1.Domain, 'domain').getCount()) + 1;
|
|
19
|
+
if (!(0, operato_license_checker_1.checkDomain)(count)) {
|
|
20
|
+
throw new license_error_1.LicenseError({
|
|
21
|
+
errorCode: license_error_1.LicenseError.ERROR_CODES.VERIFICATION_ERROR
|
|
22
|
+
});
|
|
44
23
|
}
|
|
45
24
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Called after entity is removed.
|
|
48
|
-
*/
|
|
49
|
-
async afterRemove(event) {
|
|
50
|
-
var entityManager = event.manager;
|
|
51
|
-
await entityManager.query(`delete
|
|
52
|
-
from "domain_secrets"
|
|
53
|
-
where "domain_id" not in (select "id" from "domains")`);
|
|
54
|
-
}
|
|
55
25
|
};
|
|
56
26
|
DomainPermissionSubscriber = tslib_1.__decorate([
|
|
57
27
|
(0, typeorm_1.EventSubscriber)()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-permission-subscriber.js","sourceRoot":"","sources":["../../../server/service/permission/domain-permission-subscriber.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"domain-permission-subscriber.js","sourceRoot":"","sources":["../../../server/service/permission/domain-permission-subscriber.ts"],"names":[],"mappings":";;;;AAAA,qCAAiF;AAEjF,qFAAqE;AACrE,iDAA8C;AAE9C,8DAAyD;AAGlD,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrC,QAAQ;QACN,OAAO,cAAM,CAAA;IACf,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAA0B;QAC1C,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAA;QAEjC,IAAI,KAAK,GAAG,CAAC,MAAM,aAAa,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;QAEzG,IAAI,CAAC,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;YACvB,MAAM,IAAI,4BAAY,CAAC;gBACrB,SAAS,EAAE,4BAAY,CAAC,WAAW,CAAC,kBAAkB;aACvD,CAAC,CAAA;SACH;IACH,CAAC;CACF,CAAA;AAlBY,0BAA0B;IADtC,IAAA,yBAAe,GAAE;GACL,0BAA0B,CAkBtC;AAlBY,gEAA0B","sourcesContent":["import { EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm'\n\nimport { checkDomain } from '@things-factory/operato-license-checker'\nimport { Domain } from '@things-factory/shell'\n\nimport { LicenseError } from '../../errors/license-error'\n\n@EventSubscriber()\nexport class DomainPermissionSubscriber implements EntitySubscriberInterface<Domain> {\n listenTo() {\n return Domain\n }\n /**\n * Called before domain insertion.\n */\n async afterInsert(event: InsertEvent<Domain>) {\n var entityManager = event.manager\n\n var count = (await entityManager.createQueryBuilder().select('id').from(Domain, 'domain').getCount()) + 1\n\n if (!checkDomain(count)) {\n throw new LicenseError({\n errorCode: LicenseError.ERROR_CODES.VERIFICATION_ERROR\n })\n }\n }\n}\n"]}
|