@things-factory/operato-board 5.0.8 → 5.0.11
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/config.development.js +45 -12
- package/config.production.js +56 -3
- package/db.backup.sqlite +0 -0
- package/dist-server/migrations/1610516350460-SeedRole.js +6 -6
- package/dist-server/migrations/1610516350460-SeedRole.js.map +1 -1
- package/dist-server/routes.js +0 -1
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/board-secret/board-resolver.js +0 -1
- package/dist-server/service/board-secret/board-resolver.js.map +1 -1
- package/dist-server/service/domain-secret/domain-resolver.js +0 -2
- package/dist-server/service/domain-secret/domain-resolver.js.map +1 -1
- package/dist-server/subscribers/domain-subscriber.js +1 -1
- package/dist-server/subscribers/domain-subscriber.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +26 -26
- package/server/migrations/1610516350460-SeedRole.ts +23 -21
- package/server/routes.ts +0 -2
- package/server/service/board-secret/board-resolver.ts +0 -2
- package/server/service/domain-secret/domain-resolver.ts +5 -8
- package/server/subscribers/domain-subscriber.ts +1 -1
package/config.development.js
CHANGED
|
@@ -1,20 +1,31 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
accessTokenCookieKey: 'access_token.board',
|
|
3
|
-
|
|
4
|
-
'
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
region: 'ap-northeast-2'
|
|
3
|
+
ormconfig: {
|
|
4
|
+
name: 'default',
|
|
5
|
+
type: 'sqlite',
|
|
6
|
+
database: 'db.sqlite',
|
|
7
|
+
synchronize: false,
|
|
8
|
+
logging: true,
|
|
9
|
+
logger: 'debug'
|
|
11
10
|
},
|
|
11
|
+
|
|
12
|
+
// ormconfig: {
|
|
13
|
+
// name: 'default',
|
|
14
|
+
// type: 'postgres',
|
|
15
|
+
// database: 'board-app',
|
|
16
|
+
// username: 'postgres',
|
|
17
|
+
// password: 'hatioLAB1008',
|
|
18
|
+
// host: 'hatiolab-dev-database-1.cluster-cb0sbyfvrh6h.ap-northeast-2.rds.amazonaws.com',
|
|
19
|
+
// port: 5432,
|
|
20
|
+
// synchronize: true,
|
|
21
|
+
// logging: true
|
|
22
|
+
// },
|
|
12
23
|
email: {
|
|
13
|
-
host: 'smtp.office365.com',
|
|
14
|
-
port: 587,
|
|
24
|
+
host: 'smtp.office365.com',
|
|
25
|
+
port: 587,
|
|
15
26
|
secure: false, // true for 465, false for other ports
|
|
16
27
|
auth: {
|
|
17
|
-
user: '
|
|
28
|
+
user: 'no-reply@hatiolab.com', // generated ethereal user
|
|
18
29
|
pass: 'h@ti0LAB1008' // generated ethereal password
|
|
19
30
|
},
|
|
20
31
|
secureConnection: false,
|
|
@@ -22,5 +33,27 @@ module.exports = {
|
|
|
22
33
|
ciphers: 'SSLv3'
|
|
23
34
|
}
|
|
24
35
|
},
|
|
25
|
-
|
|
36
|
+
notification: {
|
|
37
|
+
fcm: {
|
|
38
|
+
serviceAccount: {
|
|
39
|
+
project_id: 'operato',
|
|
40
|
+
private_key:
|
|
41
|
+
'-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYNOfyNjPMSeG9\nzU1qs0cpVK5cVfadcUaw5g+hkQZMOMlAA7uqW2eX4vkayj7MzbYUayH+sei8044Q\nJIyl6f26dNX1VT3UgTmSmCS0v48EBEZHCgusrUGFjduLRN6OS6uvrXW1xKA18k9q\nai1C2EHCXF2AE4PTvf239RC1UIOnVePcMtT7rMTdHRO4s8OKVuSDbzIt8k1cV3Zt\nES0YsJlkELqBisYpV//2/ZSILTt39J9JzrVef03X9kkoo9p+YnNyy6tWsfQPfgJO\nybiRGBNxiyJ/E2pxRo/WqU0go9OzYJlGaSUrUx09heNiRD1b0MAOmyPDJz/6AaTk\nkU/A+kLzAgMBAAECggEADQ5s2gtR53VSujk1V/Xe8e0Di99DwaWUj5w6YhcK7/wX\nPdQRN4Fw6RLeLjL7xeG/rCNSwzm6hKSrQJL5zLnWW7XbMdyQRk6jdmnVAEv3zACi\nFH9+eFK3e+Q214XfgWz/v4p/FZdRLCYni5VBNHcwyWxLLS/V1ynzB3KM1sDiTRmI\npcT7+uTtwrKgJq64sXtFE2pYrFxDdCiyqzkhv/2ed4YIowAjpKBbbcCDKeVxVkoz\nC1P4PAzs9EeUuKSWYrWaUjN17lqtRlYeT1ylR1PIJuWqd4cKfgoEgz+lHwRPDCEX\nAYbk3nofiJIPBhSfCHrXS755wK48mY8vMwFdfCPJeQKBgQDsz4tjYTHdat5A25n5\nekwMxZwFQ5OvMV4eulwZUDMypTAYSz1iB6sDlgwKDm5omZIfuneqCEIvrqxV/kx3\n5wV/DANHO3hYxdp/NV7rM23xmqlaKZhHQbDono1Fm/LP6DEmJiD7N2eFKsXYcPpR\nSAIdCv0X3zkDQ4zRi51yJlCXzQKBgQDpufJBxCoXngiQJ2j14lWVAeOOdQ6zh5Ip\nBcDwF0X67cNSN3Wl40bS4yLFdolhEAyj5m0WPuYYXpjzhHhZ0W3V3ItdBkrmwIvy\nWOWu26qN0ZbwxVS2qVpHuj6iHWJKHuDZZUkFtJg3BeeBSOUHSA8TvjnA0xd83xeb\n8ZJasWoFvwKBgQDFs/gQ/gIdcq0exLfluh5nw0qgcmyHpNWJHdjqITS9IX/nqFkU\n0IYLtmdStf2jQiLmbkydHcvz9wZVvLqml67VBHhwLcwpgPULoskd34/4V0Dvzy4c\nv1Esw8H5zVqIDLeLu+VpFjZMzQrjyl6RIWbyTExEc84rVWfpQYAu3qIGOQKBgAFr\nXatEk7TdAtRNSPflTfu/rTAaSeKROjQBkvBiU8x4US1YpOBDBxUUyAtG8wKh5FHC\nfnsaGq+fM3KXJVv2R6J62mXQOfg4xyDLpWlwcBK4aSBBMoiBcsjouqSlZQlqMpdf\nZBgixqHe6U8BsFJg/6ZxC0y+e3AIss4Bo4/lb+1lAoGAFOexvaBh21K6W3inmRW4\nLlkVYJaBJ20OwokXg5aXjBiHxqmk7VLAuFbkpb5LOKH2xPILRQ0OEkn51yVymS3T\n9lLpHOFTQXt5tF2/F7NW7kaQJNlLr/h5jPi3O9XHeFmuaN2z150ZB6zzgjeGKzr8\ni+1fgTsRfDtNw8xkSH9qL1Y=\n-----END PRIVATE KEY-----\n',
|
|
42
|
+
client_email: 'firebase-adminsdk-xmm2e@operato.iam.gserviceaccount.com'
|
|
43
|
+
},
|
|
44
|
+
appConfig: {
|
|
45
|
+
apiKey: 'AIzaSyDdTM2BTLHSt2LNS0G5QB8G0i4KBXFiG7U',
|
|
46
|
+
projectId: 'operato',
|
|
47
|
+
messagingSenderId: 79537064975,
|
|
48
|
+
appId: '1:79537064975:web:32f53119e9c8c6ee2a277a'
|
|
49
|
+
},
|
|
50
|
+
serverKey:
|
|
51
|
+
'AAAAEoTHTA8:APA91bGwt-4HT82Dfwf_VwbQaKT0_qHd0Y3tuW41udjWz5Lz0Ko0mEMD6WbHHSILvQpa6yuoGGKCMsrU7VW2qWRrUm3CYpyG9oSwshNm1tIhljAnOuUfwHCoawbVLwf9qlWpHt4dwCoc'
|
|
52
|
+
},
|
|
53
|
+
vapidKey: {
|
|
54
|
+
subject: 'mailto:heartyoh@hatiolab.com',
|
|
55
|
+
publicKey: 'BAkVkITsCXBIsYL1yeaBmx5_dn57we-ZXMjirPPHzC2dan82cdEnAio_53PQ-1_w3ykWCBPrrFAWQ_d9N4cFF0o',
|
|
56
|
+
privateKey: '4pmlt3Wk019u7nqU3Q_oGZE6LbUDjjf8DpmAcn9-iss'
|
|
57
|
+
}
|
|
58
|
+
}
|
|
26
59
|
}
|
package/config.production.js
CHANGED
|
@@ -1,5 +1,58 @@
|
|
|
1
|
-
var licenseKey = require('./config/license').Key
|
|
2
1
|
module.exports = {
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
accessTokenCookieKey: 'access_token.board',
|
|
3
|
+
ormconfig: {
|
|
4
|
+
name: 'default',
|
|
5
|
+
type: 'sqlite',
|
|
6
|
+
database: 'db.sqlite',
|
|
7
|
+
synchronize: false,
|
|
8
|
+
logging: true,
|
|
9
|
+
logger: 'debug'
|
|
10
|
+
},
|
|
11
|
+
// ormconfig: {
|
|
12
|
+
// name: 'default',
|
|
13
|
+
// type: 'postgres',
|
|
14
|
+
// database: 'board-app',
|
|
15
|
+
// username: 'postgres',
|
|
16
|
+
// password: 'hatioLAB1008',
|
|
17
|
+
// host: 'hatiolab-dev-database-1.cluster-cb0sbyfvrh6h.ap-northeast-2.rds.amazonaws.com',
|
|
18
|
+
// port: 5432,
|
|
19
|
+
// synchronize: true,
|
|
20
|
+
// logging: true
|
|
21
|
+
// },
|
|
22
|
+
email: {
|
|
23
|
+
host: 'smtp.office365.com',
|
|
24
|
+
port: 587,
|
|
25
|
+
secure: false, // true for 465, false for other ports
|
|
26
|
+
auth: {
|
|
27
|
+
user: 'no-reply@hatiolab.com', // generated ethereal user
|
|
28
|
+
pass: 'h@ti0LAB1008' // generated ethereal password
|
|
29
|
+
},
|
|
30
|
+
secureConnection: false,
|
|
31
|
+
tls: {
|
|
32
|
+
ciphers: 'SSLv3'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
notification: {
|
|
36
|
+
fcm: {
|
|
37
|
+
serviceAccount: {
|
|
38
|
+
project_id: 'operato',
|
|
39
|
+
private_key:
|
|
40
|
+
'-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYNOfyNjPMSeG9\nzU1qs0cpVK5cVfadcUaw5g+hkQZMOMlAA7uqW2eX4vkayj7MzbYUayH+sei8044Q\nJIyl6f26dNX1VT3UgTmSmCS0v48EBEZHCgusrUGFjduLRN6OS6uvrXW1xKA18k9q\nai1C2EHCXF2AE4PTvf239RC1UIOnVePcMtT7rMTdHRO4s8OKVuSDbzIt8k1cV3Zt\nES0YsJlkELqBisYpV//2/ZSILTt39J9JzrVef03X9kkoo9p+YnNyy6tWsfQPfgJO\nybiRGBNxiyJ/E2pxRo/WqU0go9OzYJlGaSUrUx09heNiRD1b0MAOmyPDJz/6AaTk\nkU/A+kLzAgMBAAECggEADQ5s2gtR53VSujk1V/Xe8e0Di99DwaWUj5w6YhcK7/wX\nPdQRN4Fw6RLeLjL7xeG/rCNSwzm6hKSrQJL5zLnWW7XbMdyQRk6jdmnVAEv3zACi\nFH9+eFK3e+Q214XfgWz/v4p/FZdRLCYni5VBNHcwyWxLLS/V1ynzB3KM1sDiTRmI\npcT7+uTtwrKgJq64sXtFE2pYrFxDdCiyqzkhv/2ed4YIowAjpKBbbcCDKeVxVkoz\nC1P4PAzs9EeUuKSWYrWaUjN17lqtRlYeT1ylR1PIJuWqd4cKfgoEgz+lHwRPDCEX\nAYbk3nofiJIPBhSfCHrXS755wK48mY8vMwFdfCPJeQKBgQDsz4tjYTHdat5A25n5\nekwMxZwFQ5OvMV4eulwZUDMypTAYSz1iB6sDlgwKDm5omZIfuneqCEIvrqxV/kx3\n5wV/DANHO3hYxdp/NV7rM23xmqlaKZhHQbDono1Fm/LP6DEmJiD7N2eFKsXYcPpR\nSAIdCv0X3zkDQ4zRi51yJlCXzQKBgQDpufJBxCoXngiQJ2j14lWVAeOOdQ6zh5Ip\nBcDwF0X67cNSN3Wl40bS4yLFdolhEAyj5m0WPuYYXpjzhHhZ0W3V3ItdBkrmwIvy\nWOWu26qN0ZbwxVS2qVpHuj6iHWJKHuDZZUkFtJg3BeeBSOUHSA8TvjnA0xd83xeb\n8ZJasWoFvwKBgQDFs/gQ/gIdcq0exLfluh5nw0qgcmyHpNWJHdjqITS9IX/nqFkU\n0IYLtmdStf2jQiLmbkydHcvz9wZVvLqml67VBHhwLcwpgPULoskd34/4V0Dvzy4c\nv1Esw8H5zVqIDLeLu+VpFjZMzQrjyl6RIWbyTExEc84rVWfpQYAu3qIGOQKBgAFr\nXatEk7TdAtRNSPflTfu/rTAaSeKROjQBkvBiU8x4US1YpOBDBxUUyAtG8wKh5FHC\nfnsaGq+fM3KXJVv2R6J62mXQOfg4xyDLpWlwcBK4aSBBMoiBcsjouqSlZQlqMpdf\nZBgixqHe6U8BsFJg/6ZxC0y+e3AIss4Bo4/lb+1lAoGAFOexvaBh21K6W3inmRW4\nLlkVYJaBJ20OwokXg5aXjBiHxqmk7VLAuFbkpb5LOKH2xPILRQ0OEkn51yVymS3T\n9lLpHOFTQXt5tF2/F7NW7kaQJNlLr/h5jPi3O9XHeFmuaN2z150ZB6zzgjeGKzr8\ni+1fgTsRfDtNw8xkSH9qL1Y=\n-----END PRIVATE KEY-----\n',
|
|
41
|
+
client_email: 'firebase-adminsdk-xmm2e@operato.iam.gserviceaccount.com'
|
|
42
|
+
},
|
|
43
|
+
appConfig: {
|
|
44
|
+
apiKey: 'AIzaSyDdTM2BTLHSt2LNS0G5QB8G0i4KBXFiG7U',
|
|
45
|
+
projectId: 'operato',
|
|
46
|
+
messagingSenderId: 79537064975,
|
|
47
|
+
appId: '1:79537064975:web:32f53119e9c8c6ee2a277a'
|
|
48
|
+
},
|
|
49
|
+
serverKey:
|
|
50
|
+
'AAAAEoTHTA8:APA91bGwt-4HT82Dfwf_VwbQaKT0_qHd0Y3tuW41udjWz5Lz0Ko0mEMD6WbHHSILvQpa6yuoGGKCMsrU7VW2qWRrUm3CYpyG9oSwshNm1tIhljAnOuUfwHCoawbVLwf9qlWpHt4dwCoc'
|
|
51
|
+
},
|
|
52
|
+
vapidKey: {
|
|
53
|
+
subject: 'mailto:heartyoh@hatiolab.com',
|
|
54
|
+
publicKey: 'BAkVkITsCXBIsYL1yeaBmx5_dn57we-ZXMjirPPHzC2dan82cdEnAio_53PQ-1_w3ykWCBPrrFAWQ_d9N4cFF0o',
|
|
55
|
+
privateKey: '4pmlt3Wk019u7nqU3Q_oGZE6LbUDjjf8DpmAcn9-iss'
|
|
56
|
+
}
|
|
57
|
+
}
|
|
5
58
|
}
|
package/db.backup.sqlite
ADDED
|
Binary file
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SeedRole1610516350460 = void 0;
|
|
4
4
|
const typeorm_1 = require("typeorm");
|
|
5
|
-
const shell_1 = require("@things-factory/shell");
|
|
6
5
|
const auth_base_1 = require("@things-factory/auth-base");
|
|
6
|
+
const shell_1 = require("@things-factory/shell");
|
|
7
7
|
const PRIVILEGES_SEED = {
|
|
8
|
-
|
|
8
|
+
modeller: [
|
|
9
9
|
{
|
|
10
10
|
name: 'mutation',
|
|
11
11
|
category: 'setting'
|
|
@@ -107,7 +107,7 @@ const PRIVILEGES_SEED = {
|
|
|
107
107
|
category: 'step'
|
|
108
108
|
}
|
|
109
109
|
],
|
|
110
|
-
|
|
110
|
+
system: [
|
|
111
111
|
{
|
|
112
112
|
name: 'mutation',
|
|
113
113
|
category: 'system'
|
|
@@ -117,7 +117,7 @@ const PRIVILEGES_SEED = {
|
|
|
117
117
|
category: 'system'
|
|
118
118
|
}
|
|
119
119
|
],
|
|
120
|
-
|
|
120
|
+
viewer: [
|
|
121
121
|
{
|
|
122
122
|
name: 'query',
|
|
123
123
|
category: 'board'
|
|
@@ -153,7 +153,7 @@ class SeedRole1610516350460 {
|
|
|
153
153
|
var privilegeSeeds = [];
|
|
154
154
|
Promise.all(SEED.map(async (role) => {
|
|
155
155
|
var privileges = await this.getPrivileges(privilegeSeeds, role.name);
|
|
156
|
-
await repository.save(Object.assign(Object.assign({}, role), {
|
|
156
|
+
await repository.save(Object.assign(Object.assign({}, role), { privileges: privileges, users,
|
|
157
157
|
domain }));
|
|
158
158
|
}));
|
|
159
159
|
await this.saveSystemRole(repository, users, domain);
|
|
@@ -165,7 +165,7 @@ class SeedRole1610516350460 {
|
|
|
165
165
|
description: 'System Admin'
|
|
166
166
|
};
|
|
167
167
|
var privileges = await privilegeRepository.find();
|
|
168
|
-
await repository.save(Object.assign(Object.assign({}, role), {
|
|
168
|
+
await repository.save(Object.assign(Object.assign({}, role), { privileges: privileges, users,
|
|
169
169
|
domain }));
|
|
170
170
|
}
|
|
171
171
|
async getPrivileges(privilegeSeeds, roleName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1610516350460-SeedRole.js","sourceRoot":"","sources":["../../server/migrations/1610516350460-SeedRole.ts"],"names":[],"mappings":";;;AAAA,qCAAwE;
|
|
1
|
+
{"version":3,"file":"1610516350460-SeedRole.js","sourceRoot":"","sources":["../../server/migrations/1610516350460-SeedRole.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository, MigrationInterface, QueryRunner } from 'typeorm'\n\nimport { Privilege, Role, User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\n\nconst PRIVILEGES_SEED = {\n modeller: [\n {\n name: 'mutation',\n category: 'setting'\n },\n {\n name: 'mutation',\n category: 'menu'\n },\n {\n name: 'mutation',\n category: 'user'\n },\n {\n name: 'mutation',\n category: 'appliance'\n },\n {\n name: 'mutation',\n category: 'appliance'\n },\n {\n name: 'mutation',\n category: 'application'\n },\n {\n name: 'mutation',\n category: 'board'\n },\n {\n name: 'mutation',\n category: 'group'\n },\n {\n name: 'mutation',\n category: 'play-group'\n },\n {\n name: 'mutation',\n category: 'fonts'\n },\n {\n name: 'mutation',\n category: 'attachment'\n },\n {\n name: 'mutation',\n category: 'scenario'\n },\n {\n name: 'mutation',\n category: 'step'\n },\n {\n name: 'query',\n category: 'setting'\n },\n {\n name: 'query',\n category: 'menu'\n },\n {\n name: 'query',\n category: 'user'\n },\n {\n name: 'query',\n category: 'appliance'\n },\n {\n name: 'query',\n category: 'application'\n },\n {\n name: 'query',\n category: 'board'\n },\n {\n name: 'query',\n category: 'group'\n },\n {\n name: 'query',\n category: 'play-group'\n },\n {\n name: 'query',\n category: 'fonts'\n },\n {\n name: 'query',\n category: 'attachment'\n },\n {\n name: 'query',\n category: 'scenario'\n },\n {\n name: 'query',\n category: 'step'\n }\n ],\n system: [\n {\n name: 'mutation',\n category: 'system'\n },\n {\n name: 'query',\n category: 'system'\n }\n ],\n viewer: [\n {\n name: 'query',\n category: 'board'\n },\n {\n name: 'query',\n category: 'group'\n },\n {\n name: 'query',\n category: 'play-group'\n }\n ]\n}\n\nconst SEED = [\n {\n name: 'modeller',\n description: 'Board Modeller'\n },\n {\n name: 'viewer',\n description: 'Board Viewer'\n }\n]\n\nexport class SeedRole1610516350460 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(Role)\n const userRepository = getRepository(User)\n\n let users: User[] = await userRepository.find({ where: { userType: 'admin' }, relations: ['domains'] })\n let domain: Domain = await getRepository(Domain).findOne({\n name: 'SYSTEM'\n })\n\n var privilegeSeeds = []\n Promise.all(\n SEED.map(async role => {\n var privileges = await this.getPrivileges(privilegeSeeds, role.name)\n await repository.save({\n ...role,\n privileges: privileges,\n users,\n domain\n })\n })\n )\n await this.saveSystemRole(repository, users, domain)\n }\n\n public async saveSystemRole(repository, users, domain) {\n const privilegeRepository = getRepository(Privilege)\n var role = {\n name: 'system',\n description: 'System Admin'\n }\n var privileges = await privilegeRepository.find()\n await repository.save({\n ...role,\n privileges: privileges,\n users,\n domain\n })\n }\n\n public async getPrivileges(privilegeSeeds, roleName) {\n const privilegeRepository = getRepository(Privilege)\n privilegeSeeds = PRIVILEGES_SEED[roleName]\n var privileges = []\n await Promise.all(\n privilegeSeeds.map(async privilege => {\n var value = await privilegeRepository.findOne({ where: { name: privilege.name, category: privilege.category } })\n if (value) {\n privileges.push(value)\n }\n })\n )\n return privileges\n }\n\n public async down(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(Role)\n const privilegeRepository = getRepository(Privilege)\n const domain: Domain = await getRepository(Domain).findOne({\n name: 'SYSTEM'\n })\n\n await Promise.all(\n SEED.reverse().map(async role => {\n await repository.delete({ name: role.name, domain })\n })\n )\n\n await repository.delete({ name: 'system', domain })\n }\n}\n"]}
|
package/dist-server/routes.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE,GAAE,CAAC,CAAC,CAAA","sourcesContent":["process.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {})\n"]}
|
|
@@ -10,7 +10,6 @@ const license_error_1 = require("../../errors/license-error");
|
|
|
10
10
|
const domain_secret_1 = require("../domain-secret/domain-secret");
|
|
11
11
|
const board_secret_1 = require("./board-secret");
|
|
12
12
|
const crypto = require('crypto');
|
|
13
|
-
const debug = require('debug')('things-factory:operato-board:board-resolver');
|
|
14
13
|
let BoardResolver = class BoardResolver {
|
|
15
14
|
boardPermissions(context) {
|
|
16
15
|
return ((0, operato_license_checker_1.getPermission)('Permissions For Board Usage') || 'Modeller, Viewer').split(',').map(p => p.trim());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-resolver.js","sourceRoot":"","sources":["../../../server/service/board-secret/board-resolver.ts"],"names":[],"mappings":";;;;AAAA,+CAAwD;AACxD,qCAAuC;AAEvC,iEAAqD;AACrD,qFAAiG;AAEjG,8DAAyD;AACzD,kEAA6D;AAC7D,iDAA4C;AAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"board-resolver.js","sourceRoot":"","sources":["../../../server/service/board-secret/board-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Query, Resolver } from 'type-graphql'\nimport { getRepository } from 'typeorm'\n\nimport { Board } from '@things-factory/board-service'\nimport { checkTarget, doSomething, getPermission } from '@things-factory/operato-license-checker'\n\nimport { LicenseError } from '../../errors/license-error'\nimport { DomainSecret } from '../domain-secret/domain-secret'\nimport { BoardSecret } from './board-secret'\n\nconst crypto = require('crypto')\n\n@Resolver(Board)\nexport class BoardResolver {\n @Query(returns => [String], { description: 'Board Usage Permissions' })\n boardPermissions(@Ctx() context: any): string[] {\n return (getPermission('Permissions For Board Usage') || 'Modeller, Viewer').split(',').map(p => p.trim())\n }\n\n @Query(returns => Board, { description: 'To fetch a board' })\n async board(@Arg('id') id: string, @Ctx() context: any): Promise<Board> {\n const { domain } = context.state\n\n var board = await getRepository(Board).findOne({\n where: { domain, id }\n })\n if (domain) {\n // 1. check domainSecret is over limit quantity or not\n var count =\n (await getRepository(DomainSecret)\n .manager.createQueryBuilder()\n .select('board')\n .from(DomainSecret, 'secret')\n .where('id = :domainId', { domainId: domain.id })\n .getCount()) + 1\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n } else {\n var domainSecret: DomainSecret = await getRepository(DomainSecret).findOne({\n where: { domain: domain }\n })\n // 2. if there's no domainSecret then create it\n if (!domainSecret) {\n var domainSecret: DomainSecret = new DomainSecret()\n domainSecret.id = crypto.randomUUID()\n domainSecret.domain = domain\n var hash = doSomething({ secId: domainSecret.id, id: domain.id })\n domainSecret.secret = hash\n\n await getRepository(DomainSecret).save(domainSecret)\n // 3. if there's domainSecret then check it\n } else {\n var domainRepo = getRepository(DomainSecret)\n var domainSecret: DomainSecret = await domainRepo.findOne({\n where: { domain: domain }\n })\n if (domainSecret) {\n var hash = doSomething({ secId: domainSecret.id, id: domain.id })\n if (domainSecret.secret !== hash) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n } else {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n }\n }\n }\n if (board) {\n // 1. check boardSecret is over limit quantity or not\n var count =\n (await getRepository(BoardSecret)\n .manager.createQueryBuilder()\n .select('board')\n .from(BoardSecret, 'secret')\n .where('domain_id = :domainId', { domainId: domain.id })\n .getCount()) + 1\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n } else {\n var boardSecret: BoardSecret = await getRepository(BoardSecret).findOne({\n where: { targetId: id }\n })\n // 2. if there's no boardSecret then create it\n if (!boardSecret) {\n var boardSecret: BoardSecret = new BoardSecret()\n boardSecret.id = crypto.randomUUID()\n boardSecret.targetId = id\n boardSecret.targetType = 'board'\n boardSecret.domain = domain\n\n var hash = doSomething({ secId: boardSecret.id, id: id })\n boardSecret.secret = hash\n\n await getRepository(BoardSecret).save(boardSecret)\n // 3. if there's boardSecret then check it\n } else {\n var repogitory = getRepository(BoardSecret)\n var boardSecret: BoardSecret = await repogitory.findOne({\n where: { targetId: id }\n })\n if (boardSecret) {\n var hash = doSomething({ secId: boardSecret.id, id: id })\n if (boardSecret.secret !== hash) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n } else {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.VERIFICATION_ERROR)\n })\n }\n }\n }\n }\n\n return board\n }\n}\n"]}
|
|
@@ -6,13 +6,11 @@ const type_graphql_1 = require("type-graphql");
|
|
|
6
6
|
const typeorm_1 = require("typeorm");
|
|
7
7
|
const shell_1 = require("@things-factory/shell");
|
|
8
8
|
const utils_1 = require("@things-factory/utils");
|
|
9
|
-
const debug = require('debug')('things-factory:operato-board:domain-resolver');
|
|
10
9
|
let DomainResolver = class DomainResolver {
|
|
11
10
|
async updateDomains(patches) {
|
|
12
11
|
const domainRepo = (0, typeorm_1.getRepository)(shell_1.Domain);
|
|
13
12
|
const _createRecords = patches.filter((patch) => !patch.id);
|
|
14
13
|
const _updateRecords = patches.filter((patch) => patch.id);
|
|
15
|
-
debug('update-domains');
|
|
16
14
|
if (_createRecords.length > 0) {
|
|
17
15
|
_createRecords.forEach(async (createRecord) => {
|
|
18
16
|
const subdomain = (0, utils_1.slugger)(createRecord.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-resolver.js","sourceRoot":"","sources":["../../../server/service/domain-secret/domain-resolver.ts"],"names":[],"mappings":";;;;AAAA,+CAAiE;AACjE,qCAAmD;
|
|
1
|
+
{"version":3,"file":"domain-resolver.js","sourceRoot":"","sources":["../../../server/service/domain-secret/domain-resolver.ts"],"names":[],"mappings":";;;;AAAA,+CAAiE;AACjE,qCAAmD;AAEnD,iDAA2D;AAC3D,iDAA+C;AAG/C,IAAa,cAAc,GAA3B,MAAa,cAAc;IAGzB,KAAK,CAAC,aAAa,CAAwC,OAAsB;QAC/E,MAAM,UAAU,GAAuB,IAAA,uBAAa,EAAC,cAAM,CAAC,CAAA;QAE5D,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAChE,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAE/D,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,cAAc,CAAC,OAAO,CAAC,KAAK,EAAC,YAAY,EAAC,EAAE;gBAC1C,MAAM,SAAS,GAAW,IAAA,eAAO,EAAC,YAAY,CAAC,IAAI,CAAC,CAAA;gBAEpD,MAAM,UAAU,CAAC,IAAI,CAAC,gCAAK,YAAY,KAAE,SAAS,GAAS,CAAC,CAAA;YAC9D,CAAC,CAAC,CAAA;SACH;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,cAAc,CAAC,OAAO,CAAC,KAAK,EAAC,YAAY,EAAC,EAAE;gBAC1C,MAAM,MAAM,GAAW,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;gBAEnF,IAAI,YAAY,CAAC,IAAI,EAAE;oBACrB,YAAY,CAAC,SAAS,GAAG,IAAA,eAAO,EAAC,YAAY,CAAC,IAAI,CAAC,CAAA;iBACpD;gBAED,MAAM,UAAU,CAAC,IAAI,CAAC,gCACjB,MAAM,GACN,YAAY,CACT,CAAC,CAAA;YACX,CAAC,CAAC,CAAA;SACH;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF,CAAA;AA/BC;IAFC,IAAA,wBAAS,EAAC,+EAA+E,CAAC;IAC1F,IAAA,uBAAQ,EAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;IACvD,mBAAA,IAAA,kBAAG,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,mBAAW,CAAC,CAAC,CAAA;;;;mDA8BzD;AAjCU,cAAc;IAD1B,IAAA,uBAAQ,EAAC,cAAM,CAAC;GACJ,cAAc,CAkC1B;AAlCY,wCAAc","sourcesContent":["import { Arg, Directive, Mutation, Resolver } from 'type-graphql'\nimport { getRepository, Repository } from 'typeorm'\n\nimport { Domain, DomainPatch } from '@things-factory/shell'\nimport { slugger } from '@things-factory/utils'\n\n@Resolver(Domain)\nexport class DomainResolver {\n @Directive('@privilege(category: \"system\", privilege: \"mutation\", superUserGranted: true)')\n @Mutation(returns => Boolean, { description: 'To update multiple domains' })\n async updateDomains(@Arg('patches', type => [DomainPatch]) patches: DomainPatch[]): Promise<boolean> {\n const domainRepo: Repository<Domain> = getRepository(Domain)\n\n const _createRecords = patches.filter((patch: any) => !patch.id)\n const _updateRecords = patches.filter((patch: any) => patch.id)\n\n if (_createRecords.length > 0) {\n _createRecords.forEach(async createRecord => {\n const subdomain: string = slugger(createRecord.name)\n\n await domainRepo.save({ ...createRecord, subdomain } as any)\n })\n }\n\n if (_updateRecords.length > 0) {\n _updateRecords.forEach(async updateRecord => {\n const domain: Domain = await domainRepo.findOne({ where: { id: updateRecord.id } })\n\n if (updateRecord.name) {\n updateRecord.subdomain = slugger(updateRecord.name)\n }\n\n await domainRepo.save({\n ...domain,\n ...updateRecord\n } as any)\n })\n }\n\n return true\n }\n}\n"]}
|
|
@@ -31,7 +31,7 @@ let DomainSubscriber = class DomainSubscriber {
|
|
|
31
31
|
var domain = event.entity;
|
|
32
32
|
var domainSecret = new domain_secret_1.DomainSecret();
|
|
33
33
|
domainSecret.id = (0, uuid_1.v4)();
|
|
34
|
-
domainSecret.domain = domain
|
|
34
|
+
domainSecret.domain = domain;
|
|
35
35
|
var hash = (0, operato_license_checker_1.doSomething)({ secId: domainSecret.id, id: domain.id });
|
|
36
36
|
domainSecret.secret = hash;
|
|
37
37
|
await entityManager.save(domainSecret);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-subscriber.js","sourceRoot":"","sources":["../../server/subscribers/domain-subscriber.ts"],"names":[],"mappings":";;;;AAAA,qCAA8F;AAC9F,+BAAmC;AAEnC,qFAA+F;AAC/F,iDAA8C;AAE9C,2DAAsD;AACtD,0EAAqE;AAGrE,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAC3B,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,IAAA,qCAAW,GAAE,EAAE;YACjB,wDAAwD;YACxD,IAAI,MAAM,GAAW,KAAK,CAAC,MAAM,CAAA;YACjC,IAAI,KAAK,GACP,CAAC,MAAM,aAAa;iBACjB,kBAAkB,EAAE;iBACpB,MAAM,CAAC,QAAQ,CAAC;iBAChB,IAAI,CAAC,4BAAY,EAAE,QAAQ,CAAC;iBAC5B,KAAK,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBACvD,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;YAEpB,sDAAsD;YACtD,IAAI,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;gBACtB,IAAI,MAAM,GAAW,KAAK,CAAC,MAAM,CAAA;gBACjC,IAAI,YAAY,GAAiB,IAAI,4BAAY,EAAE,CAAA;gBACnD,YAAY,CAAC,EAAE,GAAG,IAAA,SAAM,GAAE,CAAA;gBAC1B,YAAY,CAAC,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"domain-subscriber.js","sourceRoot":"","sources":["../../server/subscribers/domain-subscriber.ts"],"names":[],"mappings":";;;;AAAA,qCAA8F;AAC9F,+BAAmC;AAEnC,qFAA+F;AAC/F,iDAA8C;AAE9C,2DAAsD;AACtD,0EAAqE;AAGrE,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAC3B,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,IAAA,qCAAW,GAAE,EAAE;YACjB,wDAAwD;YACxD,IAAI,MAAM,GAAW,KAAK,CAAC,MAAM,CAAA;YACjC,IAAI,KAAK,GACP,CAAC,MAAM,aAAa;iBACjB,kBAAkB,EAAE;iBACpB,MAAM,CAAC,QAAQ,CAAC;iBAChB,IAAI,CAAC,4BAAY,EAAE,QAAQ,CAAC;iBAC5B,KAAK,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBACvD,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;YAEpB,sDAAsD;YACtD,IAAI,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;gBACtB,IAAI,MAAM,GAAW,KAAK,CAAC,MAAM,CAAA;gBACjC,IAAI,YAAY,GAAiB,IAAI,4BAAY,EAAE,CAAA;gBACnD,YAAY,CAAC,EAAE,GAAG,IAAA,SAAM,GAAE,CAAA;gBAC1B,YAAY,CAAC,MAAM,GAAG,MAAM,CAAA;gBAC5B,IAAI,IAAI,GAAG,IAAA,qCAAW,EAAC,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAA;gBACjE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAA;gBAE1B,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;aACvC;iBAAM;gBACL,MAAM,IAAI,4BAAY,CAAC;oBACrB,SAAS,EAAE,4BAAY,CAAC,WAAW,CAAC,kBAAkB;iBACvD,CAAC,CAAA;aACH;SACF;IACH,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAA0B;QAC1C,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAA;QACjC,MAAM,aAAa,CAAC,KAAK,CACvB;;4DAEsD,CACvD,CAAA;IACH,CAAC;CACF,CAAA;AAjDY,gBAAgB;IAD5B,IAAA,yBAAe,GAAE;GACL,gBAAgB,CAiD5B;AAjDY,4CAAgB","sourcesContent":["import { EntitySubscriberInterface, EventSubscriber, InsertEvent, RemoveEvent } from 'typeorm'\nimport { v4 as uuidv4 } from 'uuid'\n\nimport { checkDomain, doSomething, getValidity } from '@things-factory/operato-license-checker'\nimport { Domain } from '@things-factory/shell'\n\nimport { LicenseError } from '../errors/license-error'\nimport { DomainSecret } from '../service/domain-secret/domain-secret'\n\n@EventSubscriber()\nexport class DomainSubscriber 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 if (getValidity()) {\n //1. check domain count is over licensed quantity or not\n var domain: Domain = event.entity\n var count =\n (await entityManager\n .createQueryBuilder()\n .select('domain')\n .from(DomainSecret, 'secret')\n .where('domain_id = :domainId', { domainId: domain.id })\n .getCount()) + 1\n\n //2. create new token to domain and save domain-secret\n if (checkDomain(count)) {\n var domain: Domain = event.entity\n var domainSecret: DomainSecret = new DomainSecret()\n domainSecret.id = uuidv4()\n domainSecret.domain = domain\n var hash = doSomething({ secId: domainSecret.id, id: domain.id })\n domainSecret.secret = hash\n\n await entityManager.save(domainSecret)\n } else {\n throw new LicenseError({\n errorCode: LicenseError.ERROR_CODES.VERIFICATION_ERROR\n })\n }\n }\n }\n /**\n * Called after entity is removed.\n */\n async afterRemove(event: RemoveEvent<Domain>) {\n var entityManager = event.manager\n await entityManager.query(\n `delete \n from domain_secrets\n where domain_id not in (select id from domains)`\n )\n }\n}\n"]}
|