@things-factory/operato-board 5.0.11 → 5.0.15
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-favorite/board-favorite-query.js.map +1 -1
- package/dist-server/service/board-favorite/board-favorite-type.js.map +1 -1
- package/dist-server/service/board-secret/board-resolver.js.map +1 -1
- package/dist-server/service/board-secret/board-secret.js.map +1 -1
- package/dist-server/service/domain-secret/domain-resolver.js.map +1 -1
- package/dist-server/service/domain-secret/domain-secret.js.map +1 -1
- package/dist-server/subscribers/board-subscriber.js.map +1 -1
- package/dist-server/subscribers/domain-subscriber.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +28 -28
- package/config.development.js +0 -59
- package/config.production.js +0 -58
- package/db.backup.sqlite +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-favorite-query.js","sourceRoot":"","sources":["../../../server/service/board-favorite/board-favorite-query.ts"],"names":[],"mappings":";;;;;AAAA,+CAAyD;AACzD,qCAAuC;AACvC,iDAA6D;AAC7D,iEAAqD;AACrD,uDAAmD;AACnD,+DAAwE;AACxE,6CAA4C;AAE5C,MAAM,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAC7C,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"board-favorite-query.js","sourceRoot":"","sources":["../../../server/service/board-favorite/board-favorite-query.ts"],"names":[],"mappings":";;;;;AAAA,+CAAyD;AACzD,qCAAuC;AACvC,iDAA6D;AAC7D,iEAAqD;AACrD,uDAAmD;AACnD,+DAAwE;AACxE,6CAA4C;AAE5C,MAAM,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAC7C,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAA;AAG7B,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAEvB,AAAN,KAAK,CAAC,cAAc,CAAS,MAAiB,EAAS,OAAY;QACjE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAE9B,MAAM,YAAY,GAAG,IAAA,uBAAa,EAAC,qBAAK,CAAC,CAAC,kBAAkB,EAAE,CAAA;QAC9D,IAAA,kBAAU,EAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAEzC,IAAI,aAAa,GAAG,EAAE,CAAA;QACtB,QAAQ,aAAa,EAAE;YACrB,KAAK,UAAU;gBACb,aAAa,GAAG,8CAA8C,CAAA;gBAC9D,MAAK;YACP,KAAK,QAAQ,CAAC;YACd;gBACE,aAAa,GAAG,6BAA6B,CAAA;SAChD;QAED,IAAI,EAAE,GAAG,YAAY;aAClB,SAAS,CAAC,mBAAQ,EAAE,UAAU,EAAE,aAAa,CAAC;aAC9C,MAAM,CAAC;YACN,gBAAgB;YAChB,oBAAoB;YACpB,kCAAkC;YAClC,8BAA8B;YAC9B,2BAA2B;SAC5B,CAAC;aACD,QAAQ,CAAC,4BAA4B,EAAE;YACtC,MAAM,EAAE,IAAI,CAAC,EAAE;SAChB,CAAC,CAAA;QAEJ,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAA;QACnC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAA;QAEjC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IACzB,CAAC;CACF,CAAA;AAlCO;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,uCAAiB,EAAE,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;IACnE,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAAqB,mBAAA,IAAA,kBAAG,GAAE,CAAA;;iEAAjB,iBAAS,oBAAT,iBAAS;;wDAiC7C;AAnCU,kBAAkB;IAD9B,IAAA,uBAAQ,EAAC,mCAAa,CAAC;GACX,kBAAkB,CAoC9B;AApCY,gDAAkB","sourcesContent":["import { Resolver, Query, Args, Ctx } from 'type-graphql'\nimport { getRepository } from 'typeorm'\nimport { ListParam, buildQuery } from '@things-factory/shell'\nimport { Board } from '@things-factory/board-service'\nimport { Favorite } from '@things-factory/fav-base'\nimport { BoardFavorite, BoardFavoriteList } from './board-favorite-type'\nimport { config } from '@things-factory/env'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\n@Resolver(BoardFavorite)\nexport class BoardFavoriteQuery {\n @Query(returns => BoardFavoriteList, { description: 'To fetch multiple BoardFavorites' })\n async favoriteBoards(@Args() params: ListParam, @Ctx() context: any): Promise<BoardFavoriteList> {\n const { user } = context.state\n\n const queryBuilder = getRepository(Board).createQueryBuilder()\n buildQuery(queryBuilder, params, context)\n\n var joinStatement = ''\n switch (DATABASE_TYPE) {\n case 'postgres':\n joinStatement = 'CAST(Board.id as VARCHAR) = Favorite.routing'\n break\n case 'sqlite':\n default:\n joinStatement = 'Board.id = Favorite.routing'\n }\n\n var qb = queryBuilder\n .innerJoin(Favorite, 'Favorite', joinStatement)\n .select([\n 'Board.id as id',\n 'Board.name as name',\n 'Board.description as description',\n 'Board.thumbnail as thumbnail',\n 'Favorite.id as favoriteId'\n ])\n .andWhere('Favorite.user_id = :userId', {\n userId: user.id\n })\n\n const items = await qb.getRawMany()\n const total = await qb.getCount()\n\n return { items, total }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-favorite-type.js","sourceRoot":"","sources":["../../../server/service/board-favorite/board-favorite-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAqD;AAErD,iEAAqD;
|
|
1
|
+
{"version":3,"file":"board-favorite-type.js","sourceRoot":"","sources":["../../../server/service/board-favorite/board-favorite-type.ts"],"names":[],"mappings":";;;;AAAA,+CAAqD;AAErD,iEAAqD;AAG9C,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,qBAAK;CAGvC,CAAA;AAFC;IAAC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACP;AAFR,aAAa;IADzB,IAAA,yBAAU,GAAE;GACA,aAAa,CAGzB;AAHY,sCAAa;AAMnB,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAM7B,CAAA;AALC;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;;gDACT;AAEtB;IAAC,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,kBAAG,CAAC;;gDACN;AALF,iBAAiB;IAD7B,IAAA,yBAAU,GAAE;GACA,iBAAiB,CAM7B;AANY,8CAAiB","sourcesContent":["import { ObjectType, Field, Int } from 'type-graphql'\n\nimport { Board } from '@things-factory/board-service'\n\n@ObjectType()\nexport class BoardFavorite extends Board {\n @Field({ nullable: true })\n favoriteId?: string\n}\n\n@ObjectType()\nexport class BoardFavoriteList {\n @Field(type => [BoardFavorite])\n items: BoardFavorite[]\n\n @Field(type => Int)\n total: number\n}\n"]}
|
|
@@ -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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-secret.js","sourceRoot":"","sources":["../../../server/service/board-secret/board-secret.ts"],"names":[],"mappings":";;;;;AAAA,qCAAwH;AACxH,iDAA8C;AAC9C,yDAAgD;
|
|
1
|
+
{"version":3,"file":"board-secret.js","sourceRoot":"","sources":["../../../server/service/board-secret/board-secret.ts"],"names":[],"mappings":";;;;;AAAA,qCAAwH;AACxH,iDAA8C;AAC9C,yDAAgD;AAIzC,IAAM,WAAW,GAAjB,MAAM,WAAW;CA+BvB,CAAA;AA9BC;IAAC,IAAA,uBAAa,EAAC,MAAM,CAAC;;uCACZ;AAEV;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;0DAClB,cAAM,oBAAN,cAAM;2CAAA;AAEd;IAAC,IAAA,gBAAM,GAAE;;2CACK;AAEd;IAAC,IAAA,gBAAM,GAAE;;+CACS;AAElB;IAAC,IAAA,gBAAM,EAAC,MAAM,CAAC;;6CACC;AAEhB;IAAC,IAAA,0BAAgB,GAAE;sCACR,IAAI;8CAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;sCACR,IAAI;8CAAA;AAEf;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;0DACO,gBAAI,oBAAJ,gBAAI;4CAAA;AAEb;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;0DACO,gBAAI,oBAAJ,gBAAI;4CAAA;AA9BF,WAAW;IAFvB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,mBAAmB,EAAE,CAAC,WAAwB,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;GACxG,WAAW,CA+BvB;AA/BY,kCAAW","sourcesContent":["import { CreateDateColumn, UpdateDateColumn, Entity, Index, Column, OneToMany, ManyToOne, PrimaryColumn } from 'typeorm'\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n@Entity()\n@Index('ix_board_secret_0', (boardSecret: BoardSecret) => [boardSecret.domain, boardSecret.secret], { unique: true })\nexport class BoardSecret {\n @PrimaryColumn('uuid')\n id: string\n\n @ManyToOne(type => Domain)\n domain: Domain\n\n @Column()\n secret: string\n\n @Column()\n targetType: string\n\n @Column('uuid')\n targetId: string\n\n @CreateDateColumn()\n createdAt: Date\n \n @UpdateDateColumn()\n updatedAt: Date\n \n @ManyToOne(type => User, {\n nullable: true\n })\n creator: User\n \n @ManyToOne(type => User, {\n nullable: true\n })\n updater: User \n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAGxC,IAAM,cAAc,GAApB,MAAM,cAAc;IAGnB,AAAN,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/BO;IAFL,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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-secret.js","sourceRoot":"","sources":["../../../server/service/domain-secret/domain-secret.ts"],"names":[],"mappings":";;;;;AAAA,qCAAsH;AACtH,iDAA8C;AAC9C,yDAAgD;
|
|
1
|
+
{"version":3,"file":"domain-secret.js","sourceRoot":"","sources":["../../../server/service/domain-secret/domain-secret.ts"],"names":[],"mappings":";;;;;AAAA,qCAAsH;AACtH,iDAA8C;AAC9C,yDAAgD;AAMzC,IAAM,YAAY,GAAlB,MAAM,YAAY;CAyBxB,CAAA;AAxBC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;sCAC3B,MAAM;wCAAA;AAEV;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;0DAClB,cAAM,oBAAN,cAAM;4CAAA;AAEd;IAAC,IAAA,gBAAM,GAAE;sCACD,MAAM;4CAAA;AAEd;IAAC,IAAA,0BAAgB,GAAE;sCACR,IAAI;+CAAA;AAEf;IAAC,IAAA,0BAAgB,GAAE;sCACR,IAAI;+CAAA;AAEf;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;0DACO,gBAAI,oBAAJ,gBAAI;6CAAA;AAEb;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC;0DACO,gBAAI,oBAAJ,gBAAI;6CAAA;AAxBF,YAAY;IAJxB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,oBAAoB,EAAE,CAAC,YAA0B,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE;QACvG,MAAM,EAAE,IAAI;KACb,CAAC;GACW,YAAY,CAyBxB;AAzBY,oCAAY","sourcesContent":["import { CreateDateColumn, UpdateDateColumn, Entity, Index, Column, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n@Entity()\n@Index('ix_domain_secret_0', (domainSecret: DomainSecret) => [domainSecret.domain, domainSecret.secret], {\n unique: true\n})\nexport class DomainSecret {\n @PrimaryGeneratedColumn('uuid')\n id: String\n\n @ManyToOne(type => Domain)\n domain: Domain\n\n @Column()\n secret: String\n\n @CreateDateColumn()\n createdAt: Date\n\n @UpdateDateColumn()\n updatedAt: Date\n\n @ManyToOne(type => User, {\n nullable: true\n })\n creator: User\n\n @ManyToOne(type => User, {\n nullable: true\n })\n updater: User\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-subscriber.js","sourceRoot":"","sources":["../../server/subscribers/board-subscriber.ts"],"names":[],"mappings":";;;;AAAA,qCAA8F;AAE9F,iEAAqD;AACrD,qFAA+F;AAE/F,2DAAsD;AACtD,uEAAkE;AAElE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"board-subscriber.js","sourceRoot":"","sources":["../../server/subscribers/board-subscriber.ts"],"names":[],"mappings":";;;;AAAA,qCAA8F;AAE9F,iEAAqD;AACrD,qFAA+F;AAE/F,2DAAsD;AACtD,uEAAkE;AAElE,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAGzB,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,QAAQ;QACN,OAAO,qBAAK,CAAA;IACd,CAAC;IACD;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAyB;QACzC,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAA;QACjC,IAAI,IAAA,qCAAW,GAAE,EAAE;YACjB,QAAQ;YACR,uDAAuD;YACvD,IAAI,KAAK,GAAU,KAAK,CAAC,MAAM,CAAA;YAC/B,IAAI,MAAM,GAAQ,KAAK,CAAC,MAAM,CAAC,MAAM,CAAA;YACrC,IAAI,KAAK,GACP,CAAC,MAAM,aAAa;iBACjB,kBAAkB,EAAE;iBACpB,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,0BAAW,EAAE,QAAQ,CAAC;iBAC3B,KAAK,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;iBACvD,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;YAEpB,oDAAoD;YACpD,IAAI,IAAA,qCAAW,EAAC,KAAK,CAAC,EAAE;gBACtB,IAAI,KAAK,GAAU,KAAK,CAAC,MAAM,CAAA;gBAC/B,IAAI,WAAW,GAAgB,IAAI,0BAAW,EAAE,CAAA;gBAChD,WAAW,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;gBACpC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAA;gBAC/B,WAAW,CAAC,UAAU,GAAG,OAAO,CAAA;gBAChC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;gBAEjC,IAAI,IAAI,GAAG,IAAA,qCAAW,EAAC,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;gBAC/D,WAAW,CAAC,MAAM,GAAG,IAAI,CAAA;gBAEzB,MAAM,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;aACtC;iBAAM;gBACL,MAAM,IAAI,4BAAY,CAAC;oBACrB,SAAS,EAAE,4BAAY,CAAC,WAAW,CAAC,UAAU;iBAC/C,CAAC,CAAA;aACH;SACF;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAyB;QACzC,IAAI,aAAa,GAAG,KAAK,CAAC,OAAO,CAAA;QACjC,MAAM,aAAa,CAAC,KAAK,CACvB;;2DAEqD,CACtD,CAAA;IACH,CAAC;CACF,CAAA;AAtDY,eAAe;IAD3B,IAAA,yBAAe,GAAE;GACL,eAAe,CAsD3B;AAtDY,0CAAe","sourcesContent":["import { EntitySubscriberInterface, EventSubscriber, InsertEvent, RemoveEvent } from 'typeorm'\n\nimport { Board } from '@things-factory/board-service'\nimport { checkTarget, doSomething, getValidity } from '@things-factory/operato-license-checker'\n\nimport { LicenseError } from '../errors/license-error'\nimport { BoardSecret } from '../service/board-secret/board-secret'\n\nconst crypto = require('crypto')\n\n@EventSubscriber()\nexport class BoardSubscriber 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 if (getValidity()) {\n //target\n //1. check board count is over licensed quantity or not\n var board: Board = event.entity\n var domain: any = event.entity.domain\n var count =\n (await entityManager\n .createQueryBuilder()\n .select('board')\n .from(BoardSecret, 'secret')\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 var board: Board = event.entity\n var boardSecret: BoardSecret = new BoardSecret()\n boardSecret.id = crypto.randomUUID()\n boardSecret.targetId = board.id\n boardSecret.targetType = 'board'\n boardSecret.domain = board.domain\n\n var hash = doSomething({ secId: boardSecret.id, id: board.id })\n boardSecret.secret = hash\n\n await entityManager.save(boardSecret)\n } else {\n throw new LicenseError({\n errorCode: LicenseError.ERROR_CODES.OVER_LIMIT\n })\n }\n }\n }\n\n /**\n * Called after entity is removed.\n */\n async afterRemove(event: RemoveEvent<Board>) {\n var entityManager = event.manager\n await entityManager.query(\n `delete \n from board_secrets\n where target_id not in (select id from boards)`\n )\n }\n}\n"]}
|
|
@@ -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;
|
|
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;AAG9D,IAAM,gBAAgB,GAAtB,MAAM,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"]}
|