@qrvey/assets-sharing 0.3.4-beta.2503 → 0.3.4-beta.2514

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/cjs/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HIERARCHY_SCOPE = exports.USER_ANONYMOUS = exports.APP_SHARING_STATUS = exports.SHARE_TYPE = exports.SHARED_ORIGIN = exports.ORGANIZATION_QRVEY = exports.ASSET_TYPE = exports.ACCESS_LEVEL = exports.checkOrgPermissions = exports.upsertDefaultSharing = exports.hasAdminRole = exports.fromTokenToUser = exports.getOrgTree = exports.checkAppAccess = exports.checkUserAccessLevel = exports.api = void 0;
6
+ exports.HIERARCHY_SCOPE = exports.USER_ANONYMOUS = exports.APP_SHARING_STATUS = exports.SHARE_TYPE = exports.SHARED_ORIGIN = exports.ORGANIZATION_QRVEY = exports.ASSET_TYPE = exports.ACCESS_LEVEL = exports.checkOrgPermissions = exports.setDefaultSharing = exports.hasAdminRole = exports.fromTokenToUser = exports.getOrgTree = exports.checkAppAccess = exports.checkUserAccessLevel = exports.api = void 0;
7
7
  require("reflect-metadata");
8
8
  const context_1 = require("./context");
9
9
  const fromTokenToUser_1 = require("./quser/services/fromTokenToUser");
@@ -31,8 +31,8 @@ const fromTokenToUser = (...args) => context_1.Context.resolve(fromTokenToUser_1
31
31
  exports.fromTokenToUser = fromTokenToUser;
32
32
  const hasAdminRole = (...args) => context_1.Context.resolve(hasAdminRole_1.HasAdminRole).execute(...args);
33
33
  exports.hasAdminRole = hasAdminRole;
34
- const upsertDefaultSharing = (...args) => context_1.Context.resolve(upsertDefaultSharing_1.UpsertDefaultSharing).execute(...args);
35
- exports.upsertDefaultSharing = upsertDefaultSharing;
34
+ const setDefaultSharing = (...args) => context_1.Context.resolve(upsertDefaultSharing_1.SetDefaultSharing).execute(...args);
35
+ exports.setDefaultSharing = setDefaultSharing;
36
36
  const checkOrgPermissions = (...args) => context_1.Context.resolve(checkOrgPermissions_1.default).execute(...args);
37
37
  exports.checkOrgPermissions = checkOrgPermissions;
38
38
  var constants_1 = require("./common/constants");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,4BAA0B;AAC1B,uCAAoC;AACpC,sEAAmE;AACnE,gEAA6D;AAC7D,uFAA+D;AAC/D,kFAA+E;AAC/E,sDAA0D;AAC1D,+EAAuD;AACvD,kDAAsD;AACtD,sDAA0D;AAC1D,kFAA+E;AAC/E,iGAAyE;AAE5D,QAAA,GAAG,GAAG;IACf,MAAM,EAAE,CAAC,GAAG,IAA0C,EAAE,EAAE,CACtD,iBAAO,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACnD,IAAI,EAAE,CAAC,GAAG,IAAwC,EAAE,EAAE,CAClD,iBAAO,CAAC,OAAO,CAAC,kBAAW,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACjD,MAAM,EAAE,CAAC,GAAG,IAA0C,EAAE,EAAE,CACtD,iBAAO,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACtD,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAChC,GAAG,IAAiD,EACtD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,2CAAoB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF/C,QAAA,oBAAoB,wBAE2B;AAErD,MAAM,cAAc,GAAG,CAC1B,GAAG,IAA2C,EAChD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,wBAAc,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAFzC,QAAA,cAAc,kBAE2B;AAE/C,MAAM,UAAU,GAAG,CAAC,GAAG,IAAuC,EAAE,EAAE,CACrE,iBAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AADpC,QAAA,UAAU,cAC0B;AAE1C,MAAM,eAAe,GAAG,CAC3B,GAAG,IAA4C,EACjD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,iCAAe,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF1C,QAAA,eAAe,mBAE2B;AAEhD,MAAM,YAAY,GAAG,CAAC,GAAG,IAAyC,EAAE,EAAE,CACzE,iBAAO,CAAC,OAAO,CAAC,2BAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AADtC,QAAA,YAAY,gBAC0B;AAE5C,MAAM,oBAAoB,GAAG,CAChC,GAAG,IAAiD,EACtD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,2CAAoB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF/C,QAAA,oBAAoB,wBAE2B;AAErD,MAAM,mBAAmB,GAAG,CAC/B,GAAG,IAAgD,EACrD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,6BAAmB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF9C,QAAA,mBAAmB,uBAE2B;AAE3D,gDAQ4B;AAPxB,yGAAA,YAAY,OAAA;AACZ,uGAAA,UAAU,OAAA;AACV,+GAAA,kBAAkB,OAAA;AAClB,0GAAA,aAAa,OAAA;AACb,uGAAA,UAAU,OAAA;AACV,+GAAA,kBAAkB,OAAA;AAClB,2GAAA,cAAc,OAAA;AAGlB,wEAAyE;AAAhE,gHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,4BAA0B;AAC1B,uCAAoC;AACpC,sEAAmE;AACnE,gEAA6D;AAC7D,uFAA+D;AAC/D,kFAA+E;AAC/E,sDAA0D;AAC1D,+EAAuD;AACvD,kDAAsD;AACtD,sDAA0D;AAC1D,kFAA4E;AAC5E,iGAAyE;AAE5D,QAAA,GAAG,GAAG;IACf,MAAM,EAAE,CAAC,GAAG,IAA0C,EAAE,EAAE,CACtD,iBAAO,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACnD,IAAI,EAAE,CAAC,GAAG,IAAwC,EAAE,EAAE,CAClD,iBAAO,CAAC,OAAO,CAAC,kBAAW,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACjD,MAAM,EAAE,CAAC,GAAG,IAA0C,EAAE,EAAE,CACtD,iBAAO,CAAC,OAAO,CAAC,sBAAa,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CACtD,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAChC,GAAG,IAAiD,EACtD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,2CAAoB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF/C,QAAA,oBAAoB,wBAE2B;AAErD,MAAM,cAAc,GAAG,CAC1B,GAAG,IAA2C,EAChD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,wBAAc,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAFzC,QAAA,cAAc,kBAE2B;AAE/C,MAAM,UAAU,GAAG,CAAC,GAAG,IAAuC,EAAE,EAAE,CACrE,iBAAO,CAAC,OAAO,CAAC,oBAAU,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AADpC,QAAA,UAAU,cAC0B;AAE1C,MAAM,eAAe,GAAG,CAC3B,GAAG,IAA4C,EACjD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,iCAAe,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF1C,QAAA,eAAe,mBAE2B;AAEhD,MAAM,YAAY,GAAG,CAAC,GAAG,IAAyC,EAAE,EAAE,CACzE,iBAAO,CAAC,OAAO,CAAC,2BAAY,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AADtC,QAAA,YAAY,gBAC0B;AAE5C,MAAM,iBAAiB,GAAG,CAC7B,GAAG,IAA8C,EACnD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,wCAAiB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF5C,QAAA,iBAAiB,qBAE2B;AAElD,MAAM,mBAAmB,GAAG,CAC/B,GAAG,IAAgD,EACrD,EAAE,CAAC,iBAAO,CAAC,OAAO,CAAC,6BAAmB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AAF9C,QAAA,mBAAmB,uBAE2B;AAE3D,gDAQ4B;AAPxB,yGAAA,YAAY,OAAA;AACZ,uGAAA,UAAU,OAAA;AACV,+GAAA,kBAAkB,OAAA;AAClB,0GAAA,aAAa,OAAA;AACb,uGAAA,UAAU,OAAA;AACV,+GAAA,kBAAkB,OAAA;AAClB,2GAAA,cAAc,OAAA;AAGlB,wEAAyE;AAAhE,gHAAA,eAAe,OAAA"}
@@ -27,6 +27,7 @@ class SharingDetailsRepository extends base_1.BaseRepository {
27
27
  return response;
28
28
  }
29
29
  async getList(options) {
30
+ var _a;
30
31
  const assetIndex = details_model_1.SharingDetailsModel.indexes.sharingDetailsAssetId;
31
32
  const pagination = this.getPagination(options.pagination);
32
33
  const params = {
@@ -44,8 +45,7 @@ class SharingDetailsRepository extends base_1.BaseRepository {
44
45
  }
45
46
  params.filters = filterList;
46
47
  if (options.data.user) {
47
- const currentFilter = this.getUserFilter(options.data.user, filterList);
48
- params.filters = currentFilter;
48
+ params.filters = this.getUserFilter(options.data.user, (_a = options.data.parentOrgIds) !== null && _a !== void 0 ? _a : [], filterList);
49
49
  }
50
50
  if (options.sorting)
51
51
  params.sorting = options.sorting;
@@ -73,9 +73,12 @@ class SharingDetailsRepository extends base_1.BaseRepository {
73
73
  from: (_b = options === null || options === void 0 ? void 0 : options.from) !== null && _b !== void 0 ? _b : undefined,
74
74
  };
75
75
  }
76
- getUserFilter(user, currentFilters) {
76
+ getUserFilter(user, parentsOrgIds, currentFilters) {
77
77
  const { userId, roles } = user;
78
- const orgId = user.orgId === '' ? constants_1.ORGANIZATION_QRVEY : user.orgId; //Review if this is right
78
+ const orgId = user.orgId === '' ? constants_1.ORGANIZATION_QRVEY : user.orgId; //Review if this is
79
+ if (!parentsOrgIds.includes(constants_1.ORGANIZATION_QRVEY)) {
80
+ parentsOrgIds.push(constants_1.ORGANIZATION_QRVEY);
81
+ }
79
82
  const sharing = {
80
83
  OR: [
81
84
  {
@@ -92,6 +95,12 @@ class SharingDetailsRepository extends base_1.BaseRepository {
92
95
  this.buildFilter('org_id', orgId),
93
96
  ],
94
97
  },
98
+ {
99
+ AND: [
100
+ this.buildFilter('shared_type', 'TENANT'),
101
+ this.buildFilter('org_id', parentsOrgIds, 'IN')
102
+ ]
103
+ }
95
104
  ],
96
105
  };
97
106
  if (roles && (roles === null || roles === void 0 ? void 0 : roles.length) > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"details.repository.js","sourceRoot":"","sources":["../../../../src/sharing/implementations/details.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"details.repository.js","sourceRoot":"","sources":["../../../../src/sharing/implementations/details.repository.ts"],"names":[],"mappings":"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"}
@@ -15,15 +15,19 @@ const constants_1 = require("../../common/constants");
15
15
  const index_1 = require("../../index");
16
16
  const details_1 = require("../entities/details");
17
17
  let CheckUserAccessLevel = class CheckUserAccessLevel {
18
- constructor(detailsRepository) {
18
+ constructor(detailsRepository, organizationRepository) {
19
19
  this.detailsRepository = detailsRepository;
20
+ this.organizationRepository = organizationRepository;
20
21
  }
21
22
  async execute({ userId, assetId, clientId, loginType, roles, orgId, }) {
22
23
  const user = await (0, index_1.fromTokenToUser)({
23
24
  body: { userId, clientId, roles, orgId, loginType },
24
25
  });
26
+ const currentUserOrgId = user.orgId || constants_1.ORGANIZATION_QRVEY;
27
+ const parents = await this.organizationRepository.getOrgTree(currentUserOrgId, index_1.HIERARCHY_SCOPE.PARENTS);
28
+ parents.parentIds.push(currentUserOrgId);
25
29
  const details = await this.detailsRepository.getList({
26
- data: { assetId, user },
30
+ data: { assetId, user, parentOrgIds: parents.parentIds },
27
31
  sorting: [{ column: 'access_level', direction: 'DESC' }],
28
32
  });
29
33
  if (details.items.length === 0)
@@ -54,6 +58,7 @@ let CheckUserAccessLevel = class CheckUserAccessLevel {
54
58
  exports.CheckUserAccessLevel = CheckUserAccessLevel;
55
59
  exports.CheckUserAccessLevel = CheckUserAccessLevel = __decorate([
56
60
  (0, tsyringe_1.injectable)(),
57
- __param(0, (0, tsyringe_1.inject)('SharingDetailsRepository'))
61
+ __param(0, (0, tsyringe_1.inject)('SharingDetailsRepository')),
62
+ __param(1, (0, tsyringe_1.inject)('OrganizationRepository'))
58
63
  ], CheckUserAccessLevel);
59
64
  //# sourceMappingURL=checkUserAccessLevel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkUserAccessLevel.js","sourceRoot":"","sources":["../../../../src/sharing/services/checkUserAccessLevel.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAE9C,sDAAkE;AAClE,uCAA8C;AAC9C,iDAAoD;AAI7C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC7B,YAEqB,iBAAoD;QAApD,sBAAiB,GAAjB,iBAAiB,CAAmC;IACtE,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,KAAK,GAQR;QACG,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAe,EAAC;YAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACvB,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,wBAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAE7D,MAAM,QAAQ,GAAG;YACb,CAAC,sBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,CAAC,sBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,CAAC,sBAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5B,CAAC,sBAAU,CAAC,OAAO,CAAC,EAAE,CAAC;SAC1B,CAAC;QAEF,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAyB,CAAC,CAAC;YAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAyB,CAAC,CAAC;YACpE,MAAM,QAAQ,GACV,eAAe,GAAG,YAAY;gBAC9B,CAAC,eAAe,KAAK,YAAY;oBAC7B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAElD,IAAI,QAAQ;gBAAE,OAAO,OAAO,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,uBAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC1D,OAAO;YACH,KAAK,EAAE,aAAa,CAAC,cAAc;YACnC,WAAW,EAAE,aAAa,CAAC,oBAAoB;SAClD,CAAC;IACN,CAAC;CACJ,CAAA;AAxDY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,0BAA0B,CAAC,CAAA;GAF9B,oBAAoB,CAwDhC"}
1
+ {"version":3,"file":"checkUserAccessLevel.js","sourceRoot":"","sources":["../../../../src/sharing/services/checkUserAccessLevel.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAE9C,sDAAsF;AACtF,uCAA+D;AAC/D,iDAAoD;AAK7C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC7B,YAEqB,iBAAoD,EAEpD,sBAAuD;QAFvD,sBAAiB,GAAjB,iBAAiB,CAAmC;QAEpD,2BAAsB,GAAtB,sBAAsB,CAAiC;IACzE,CAAC;IAEG,KAAK,CAAC,OAAO,CAAC,EACjB,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,KAAK,GAQR;QACG,MAAM,IAAI,GAAG,MAAM,IAAA,uBAAe,EAAC;YAC/B,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,IAAI,8BAAkB,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,CACxD,gBAAgB,EAChB,uBAAe,CAAC,OAAO,CAC1B,CAAC;QACF,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjD,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,EAAE;YACxD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;SAC3D,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAC1B,OAAO,EAAE,KAAK,EAAE,wBAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;QAE7D,MAAM,QAAQ,GAAG;YACb,CAAC,sBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,CAAC,sBAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,CAAC,sBAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5B,CAAC,sBAAU,CAAC,OAAO,CAAC,EAAE,CAAC;SAC1B,CAAC;QAEF,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;YAC1D,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAyB,CAAC,CAAC;YAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAyB,CAAC,CAAC;YACpE,MAAM,QAAQ,GACV,eAAe,GAAG,YAAY;gBAC9B,CAAC,eAAe,KAAK,YAAY;oBAC7B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;YAElD,IAAI,QAAQ;gBAAE,OAAO,OAAO,CAAC;YAC7B,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,uBAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAC1D,OAAO;YACH,KAAK,EAAE,aAAa,CAAC,cAAc;YACnC,WAAW,EAAE,aAAa,CAAC,oBAAoB;SAClD,CAAC;IACN,CAAC;CACJ,CAAA;AAhEY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,0BAA0B,CAAC,CAAA;IAElC,WAAA,IAAA,iBAAM,EAAC,wBAAwB,CAAC,CAAA;GAJ5B,oBAAoB,CAgEhC"}
@@ -9,12 +9,12 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
9
9
  return function (target, key) { decorator(target, key, paramIndex); }
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.UpsertDefaultSharing = void 0;
12
+ exports.SetDefaultSharing = void 0;
13
13
  const tsyringe_1 = require("tsyringe");
14
14
  const constants_1 = require("../../common/constants");
15
15
  const sharing_1 = require("../entities/sharing");
16
16
  const details_1 = require("../entities/details");
17
- let UpsertDefaultSharing = class UpsertDefaultSharing {
17
+ let SetDefaultSharing = class SetDefaultSharing {
18
18
  constructor(sharingRepository, detailsRepository, adminRepository) {
19
19
  this.sharingRepository = sharingRepository;
20
20
  this.detailsRepository = detailsRepository;
@@ -41,7 +41,6 @@ let UpsertDefaultSharing = class UpsertDefaultSharing {
41
41
  sharedType: constants_1.SHARE_TYPE.TENANTS,
42
42
  sharedWith: 'TENANTS',
43
43
  orgId,
44
- sharedId: currentSharing.getAssetId,
45
44
  });
46
45
  const sharingDetailsOrg = details_1.SharingDetail.create({
47
46
  accessLevel: constants_1.ACCESS_LEVEL.CAN_EDIT,
@@ -50,7 +49,6 @@ let UpsertDefaultSharing = class UpsertDefaultSharing {
50
49
  sharedType: constants_1.SHARE_TYPE.ORGANIZATION,
51
50
  sharedWith: orgId,
52
51
  orgId,
53
- sharedId: currentSharing.getAssetId,
54
52
  });
55
53
  await Promise.all([
56
54
  this.detailsRepository.create(sharingDetailsTenants.toTable()),
@@ -59,11 +57,11 @@ let UpsertDefaultSharing = class UpsertDefaultSharing {
59
57
  return currentSharing;
60
58
  }
61
59
  };
62
- exports.UpsertDefaultSharing = UpsertDefaultSharing;
63
- exports.UpsertDefaultSharing = UpsertDefaultSharing = __decorate([
60
+ exports.SetDefaultSharing = SetDefaultSharing;
61
+ exports.SetDefaultSharing = SetDefaultSharing = __decorate([
64
62
  (0, tsyringe_1.injectable)(),
65
63
  __param(0, (0, tsyringe_1.inject)('SharingRepository')),
66
64
  __param(1, (0, tsyringe_1.inject)('SharingDetailsRepository')),
67
65
  __param(2, (0, tsyringe_1.inject)('AdminRepository'))
68
- ], UpsertDefaultSharing);
66
+ ], SetDefaultSharing);
69
67
  //# sourceMappingURL=upsertDefaultSharing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"upsertDefaultSharing.js","sourceRoot":"","sources":["../../../../src/sharing/services/upsertDefaultSharing.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAE9C,sDAA6F;AAC7F,iDAA8C;AAC9C,iDAAoD;AAM7C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC7B,YAEqB,iBAA6C,EAE7C,iBAAoD,EAEpD,eAAyC;QAJzC,sBAAiB,GAAjB,iBAAiB,CAA4B;QAE7C,sBAAiB,GAAjB,iBAAiB,CAAmC;QAEpD,oBAAe,GAAf,eAAe,CAA0B;IAE9D,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,EACI,OAAO,EACP,SAAS,EACT,KAAK,EACL,YAAY,GAMpC;QACG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,cAAuB,CAAC;QAE5B,IAAI,aAAa,EAAE,CAAC;YAChB,cAAc,GAAG,iBAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,MAAM,aAAa,GAAG;gBAClB,OAAO;gBACP,SAAS;aACZ,CAAC;YACF,cAAc,GAAG,iBAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAE/C,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,qBAAqB,GAAG,uBAAa,CAAC,MAAM,CAAC;YAC/C,WAAW,EAAE,wBAAY,CAAC,QAAQ;YAClC,OAAO;YACP,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,sBAAU,CAAC,OAAO;YAC9B,UAAU,EAAE,SAAS;YACrB,KAAK;YACL,QAAQ,EAAE,cAAc,CAAC,UAAU;SACtC,CAAC,CAAC;QAGH,MAAM,iBAAiB,GAAG,uBAAa,CAAC,MAAM,CAAC;YAC3C,WAAW,EAAE,wBAAY,CAAC,QAAQ;YAClC,OAAO;YACP,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,sBAAU,CAAC,YAAY;YACnC,UAAU,EAAE,KAAK;YACjB,KAAK;YACL,QAAQ,EAAE,cAAc,CAAC,UAAU;SACtC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAC9D,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;SAC7D,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;IAC1B,CAAC;CACJ,CAAA;AAjEY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,mBAAmB,CAAC,CAAA;IAE3B,WAAA,IAAA,iBAAM,EAAC,0BAA0B,CAAC,CAAA;IAElC,WAAA,IAAA,iBAAM,EAAC,iBAAiB,CAAC,CAAA;GANrB,oBAAoB,CAiEhC"}
1
+ {"version":3,"file":"upsertDefaultSharing.js","sourceRoot":"","sources":["../../../../src/sharing/services/upsertDefaultSharing.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uCAA8C;AAE9C,sDAA6F;AAC7F,iDAA8C;AAC9C,iDAAoD;AAM7C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC1B,YAEqB,iBAA6C,EAE7C,iBAAoD,EAEpD,eAAyC;QAJzC,sBAAiB,GAAjB,iBAAiB,CAA4B;QAE7C,sBAAiB,GAAjB,iBAAiB,CAAmC;QAEpD,oBAAe,GAAf,eAAe,CAA0B;IAE9D,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,EACI,OAAO,EACP,SAAS,EACT,KAAK,EACL,YAAY,GAMpC;QACG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnE,IAAI,cAAuB,CAAC;QAE5B,IAAI,aAAa,EAAE,CAAC;YAChB,cAAc,GAAG,iBAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,MAAM,aAAa,GAAG;gBAClB,OAAO;gBACP,SAAS;aACZ,CAAC;YACF,cAAc,GAAG,iBAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAE/C,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,qBAAqB,GAAG,uBAAa,CAAC,MAAM,CAAC;YAC/C,WAAW,EAAE,wBAAY,CAAC,QAAQ;YAClC,OAAO;YACP,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,sBAAU,CAAC,OAAO;YAC9B,UAAU,EAAE,SAAS;YACrB,KAAK;SACR,CAAC,CAAC;QAGH,MAAM,iBAAiB,GAAG,uBAAa,CAAC,MAAM,CAAC;YAC3C,WAAW,EAAE,wBAAY,CAAC,QAAQ;YAClC,OAAO;YACP,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,sBAAU,CAAC,YAAY;YACnC,UAAU,EAAE,KAAK;YACjB,KAAK;SACR,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAC9D,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;SAC7D,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;IAC1B,CAAC;CACJ,CAAA;AA/DY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,mBAAmB,CAAC,CAAA;IAE3B,WAAA,IAAA,iBAAM,EAAC,0BAA0B,CAAC,CAAA;IAElC,WAAA,IAAA,iBAAM,EAAC,iBAAiB,CAAC,CAAA;GANrB,iBAAiB,CA+D7B"}
@@ -309,6 +309,7 @@ var SharingDetailsRepository = class extends BaseRepository {
309
309
  return response;
310
310
  }
311
311
  async getList(options) {
312
+ var _a;
312
313
  const assetIndex = SharingDetailsModel.indexes.sharingDetailsAssetId;
313
314
  const pagination = this.getPagination(options.pagination);
314
315
  const params = {
@@ -326,11 +327,11 @@ var SharingDetailsRepository = class extends BaseRepository {
326
327
  }
327
328
  params.filters = filterList;
328
329
  if (options.data.user) {
329
- const currentFilter = this.getUserFilter(
330
+ params.filters = this.getUserFilter(
330
331
  options.data.user,
332
+ (_a = options.data.parentOrgIds) != null ? _a : [],
331
333
  filterList
332
334
  );
333
- params.filters = currentFilter;
334
335
  }
335
336
  if (options.sorting) params.sorting = options.sorting;
336
337
  const response = await super.find(params);
@@ -360,9 +361,12 @@ var SharingDetailsRepository = class extends BaseRepository {
360
361
  from: (_b = options == null ? void 0 : options.from) != null ? _b : void 0
361
362
  };
362
363
  }
363
- getUserFilter(user, currentFilters) {
364
+ getUserFilter(user, parentsOrgIds, currentFilters) {
364
365
  const { userId, roles } = user;
365
366
  const orgId = user.orgId === "" ? ORGANIZATION_QRVEY : user.orgId;
367
+ if (!parentsOrgIds.includes(ORGANIZATION_QRVEY)) {
368
+ parentsOrgIds.push(ORGANIZATION_QRVEY);
369
+ }
366
370
  const sharing = {
367
371
  OR: [
368
372
  {
@@ -378,6 +382,12 @@ var SharingDetailsRepository = class extends BaseRepository {
378
382
  this.buildFilter("shared_type", "ORGANIZATION"),
379
383
  this.buildFilter("org_id", orgId)
380
384
  ]
385
+ },
386
+ {
387
+ AND: [
388
+ this.buildFilter("shared_type", "TENANT"),
389
+ this.buildFilter("org_id", parentsOrgIds, "IN")
390
+ ]
381
391
  }
382
392
  ]
383
393
  };
@@ -882,8 +892,9 @@ var SharingDetail = class _SharingDetail {
882
892
 
883
893
  // src/sharing/services/checkUserAccessLevel.ts
884
894
  var CheckUserAccessLevel = class {
885
- constructor(detailsRepository) {
895
+ constructor(detailsRepository, organizationRepository) {
886
896
  this.detailsRepository = detailsRepository;
897
+ this.organizationRepository = organizationRepository;
887
898
  }
888
899
  async execute({
889
900
  userId,
@@ -896,8 +907,14 @@ var CheckUserAccessLevel = class {
896
907
  const user = await fromTokenToUser({
897
908
  body: { userId, clientId, roles, orgId, loginType }
898
909
  });
910
+ const currentUserOrgId = user.orgId || ORGANIZATION_QRVEY;
911
+ const parents = await this.organizationRepository.getOrgTree(
912
+ currentUserOrgId,
913
+ "parents" /* PARENTS */
914
+ );
915
+ parents.parentIds.push(currentUserOrgId);
899
916
  const details = await this.detailsRepository.getList({
900
- data: { assetId, user },
917
+ data: { assetId, user, parentOrgIds: parents.parentIds },
901
918
  sorting: [{ column: "access_level", direction: "DESC" }]
902
919
  });
903
920
  if (details.items.length === 0)
@@ -924,7 +941,8 @@ var CheckUserAccessLevel = class {
924
941
  };
925
942
  CheckUserAccessLevel = __decorateClass([
926
943
  injectable(),
927
- __decorateParam(0, inject("SharingDetailsRepository"))
944
+ __decorateParam(0, inject("SharingDetailsRepository")),
945
+ __decorateParam(1, inject("OrganizationRepository"))
928
946
  ], CheckUserAccessLevel);
929
947
  var DeleteSharing = class {
930
948
  constructor(sharingRepository) {
@@ -1180,7 +1198,7 @@ UpsertSharing = __decorateClass([
1180
1198
  __decorateParam(4, inject("UserRepository")),
1181
1199
  __decorateParam(5, inject("RoleRepository"))
1182
1200
  ], UpsertSharing);
1183
- var UpsertDefaultSharing = class {
1201
+ var SetDefaultSharing = class {
1184
1202
  constructor(sharingRepository, detailsRepository, adminRepository) {
1185
1203
  this.sharingRepository = sharingRepository;
1186
1204
  this.detailsRepository = detailsRepository;
@@ -1210,8 +1228,7 @@ var UpsertDefaultSharing = class {
1210
1228
  sharedOrigin,
1211
1229
  sharedType: "TENANTS" /* TENANTS */,
1212
1230
  sharedWith: "TENANTS",
1213
- orgId,
1214
- sharedId: currentSharing.getAssetId
1231
+ orgId
1215
1232
  });
1216
1233
  const sharingDetailsOrg = SharingDetail.create({
1217
1234
  accessLevel: 2 /* CAN_EDIT */,
@@ -1219,8 +1236,7 @@ var UpsertDefaultSharing = class {
1219
1236
  sharedOrigin,
1220
1237
  sharedType: "ORGANIZATION" /* ORGANIZATION */,
1221
1238
  sharedWith: orgId,
1222
- orgId,
1223
- sharedId: currentSharing.getAssetId
1239
+ orgId
1224
1240
  });
1225
1241
  await Promise.all([
1226
1242
  this.detailsRepository.create(sharingDetailsTenants.toTable()),
@@ -1229,12 +1245,12 @@ var UpsertDefaultSharing = class {
1229
1245
  return currentSharing;
1230
1246
  }
1231
1247
  };
1232
- UpsertDefaultSharing = __decorateClass([
1248
+ SetDefaultSharing = __decorateClass([
1233
1249
  injectable(),
1234
1250
  __decorateParam(0, inject("SharingRepository")),
1235
1251
  __decorateParam(1, inject("SharingDetailsRepository")),
1236
1252
  __decorateParam(2, inject("AdminRepository"))
1237
- ], UpsertDefaultSharing);
1253
+ ], SetDefaultSharing);
1238
1254
  var CheckOrgPermissions = class {
1239
1255
  constructor(organizationRepository) {
1240
1256
  this.organizationRepository = organizationRepository;
@@ -1264,9 +1280,9 @@ var checkAppAccess = (...args) => Context.resolve(CheckAppAccess).execute(...arg
1264
1280
  var getOrgTree = (...args) => Context.resolve(GetOrgTree).execute(...args);
1265
1281
  var fromTokenToUser = (...args) => Context.resolve(FromTokenToUser).execute(...args);
1266
1282
  var hasAdminRole = (...args) => Context.resolve(HasAdminRole).execute(...args);
1267
- var upsertDefaultSharing = (...args) => Context.resolve(UpsertDefaultSharing).execute(...args);
1283
+ var setDefaultSharing = (...args) => Context.resolve(SetDefaultSharing).execute(...args);
1268
1284
  var checkOrgPermissions = (...args) => Context.resolve(CheckOrgPermissions).execute(...args);
1269
1285
 
1270
- export { ACCESS_LEVEL, APP_SHARING_STATUS, ASSET_TYPE, HIERARCHY_SCOPE, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, USER_ANONYMOUS, api, checkAppAccess, checkOrgPermissions, checkUserAccessLevel, fromTokenToUser, getOrgTree, hasAdminRole, upsertDefaultSharing };
1286
+ export { ACCESS_LEVEL, APP_SHARING_STATUS, ASSET_TYPE, HIERARCHY_SCOPE, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, USER_ANONYMOUS, api, checkAppAccess, checkOrgPermissions, checkUserAccessLevel, fromTokenToUser, getOrgTree, hasAdminRole, setDefaultSharing };
1271
1287
  //# sourceMappingURL=index.mjs.map
1272
1288
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/common/constants.ts","../../src/quser/implementations/group.model.ts","../../src/common/persistence/poolClient.ts","../../src/common/persistence/base.ts","../../src/quser/implementations/group.repository.ts","../../src/quser/implementations/user.model.ts","../../src/quser/implementations/user.repository.ts","../../src/sharing/implementations/admin.repository.ts","../../src/sharing/implementations/details.model.ts","../../src/sharing/implementations/details.repository.ts","../../src/sharing/implementations/dm.model.ts","../../src/sharing/implementations/dm.repository.ts","../../src/sharing/implementations/dx.model.ts","../../src/sharing/implementations/dx.repository.ts","../../src/sharing/implementations/organization.model.ts","../../src/sharing/entities/types/orgTreeResult.ts","../../src/sharing/implementations/organization.repository.ts","../../src/sharing/implementations/sharing.model.ts","../../src/sharing/implementations/sharing.repository.ts","../../src/context.ts","../../src/common/util.ts","../../src/quser/entities/user.ts","../../src/quser/services/fromTokenToUser.ts","../../src/quser/services/hasAdminRole.ts","../../src/sharing/services/checkAppAccess.ts","../../src/sharing/entities/details.ts","../../src/sharing/services/checkUserAccessLevel.ts","../../src/sharing/services/delete.ts","../../src/sharing/services/getOrgTree.ts","../../src/sharing/services/list.ts","../../src/sharing/entities/sharing.ts","../../src/sharing/services/upsert.ts","../../src/sharing/services/upsertDefaultSharing.ts","../../src/sharing/services/checkOrgPermissions.ts","../../src/index.ts"],"names":["ASSET_TYPE","SHARED_ORIGIN","SHARE_TYPE","ACCESS_LEVEL","APP_SHARING_STATUS","CrudSchema","HIERARCHY_SCOPE","injectable","inject"],"mappings":"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","file":"index.mjs","sourcesContent":["export const ENVIRONMENT = {\n SERVER_PREFIX: process.env.SERVER_PREFIX,\n TABLE_PREFIX: process.env.TABLE_PREFIX,\n DOMAIN: process.env.DOMAIN,\n API_KEY: process.env.API_KEY,\n};\n\nexport const DATABASE_INFO = {\n DATA_PERSISTENCE_SCHEMA: 'admin',\n SERVER_PREFIX: ENVIRONMENT.SERVER_PREFIX,\n TABLE_PREFIX: ENVIRONMENT.TABLE_PREFIX,\n};\n\nexport const ORGANIZATION_QRVEY = 'org:0';\n\nexport const USER_ANONYMOUS = 'anonymous';\n\nexport enum ASSET_TYPE {\n DX = 'DX', // DASHBOARD X (Next Gen)\n DM = 'DM', // DOWNLOAD MANAGER\n}\n\nexport enum SHARED_ORIGIN {\n INTERNAL = 'INTERNAL', // for org:0\n EXTERNAL = 'EXTERNAL', // for orgs different that 0\n UNKNOWN = 'UNKNOWN', // without orgId\n}\n\nexport enum SHARE_TYPE {\n USER = 'USER',\n ROLE = 'ROLE',\n ORGANIZATION = 'ORGANIZATION',\n TENANTS = 'TENANTS'\n}\n\n/**\n * Access levels for assets.\n * Those are calculated with Base 2, so:\n * - NONE = 0 (undefined)\n * - CAN_USE = 1 (2^0)\n * - CAN_EDIT = 2 (2^1)\n * - ADMIN = 4 (2^2)\n * - (Future) SUPER = 8 (2^3)\n */\nexport enum ACCESS_LEVEL {\n NONE = 0,\n CAN_USE = 1,\n CAN_EDIT = 2,\n ADMIN = 4,\n}\n\nexport enum APP_SHARING_STATUS {\n PUBLIC = 'public',\n PRIVATE = 'private',\n SHARED = 'shared',\n}\n\nexport interface AppAccessResponse {\n hasAccess: boolean;\n}\n\nexport interface AppOwner {\n userId: string;\n appId: string;\n userEmail?: string;\n}\n\nexport const LIMIT_PER_PAGE = 10;\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class GroupModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}Groups`,\n alias: 'qv_groups',\n };\n\n static columns = {\n groupid: {\n type: 'string',\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n}\n","import { getDbPool } from '@qrvey/data-persistence';\n\nlet poolClient: any;\nexport function getPoolClient() {\n if (!poolClient) poolClient = getDbPool();\n return poolClient;\n}\n","import { CrudService, buildFilter } from '@qrvey/data-persistence';\n\nimport { getPoolClient } from './poolClient';\n\nexport class BaseRepository extends CrudService<any> {\n constructor(schema: any) {\n super(schema, getPoolClient());\n }\n\n filter(attribute: string, value: any, operator?: string) {\n return buildFilter(attribute, value, operator);\n }\n}\n","import { GroupModel } from './group.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { RoleRepositoryInterface } from '../interfaces/rolesRepository.interface';\n\nexport class GroupRepository\n extends BaseRepository\n implements RoleRepositoryInterface\n{\n constructor() {\n super(GroupModel);\n }\n\n async getOne(identifier: string): Promise<{ groupid: string } | null> {\n const params = {\n filters: [this.filter('groupid', identifier)],\n };\n const response = await super.findItem(params);\n return response as { groupid: string };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class UserModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}Users`,\n alias: 'qv_users',\n };\n\n static columns = {\n userid: {\n type: 'string',\n primary: true,\n columnId: true,\n },\n groups: {\n type: 'array',\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n}\n","import { UserModel } from './user.model';\nimport { ListInput, ListOutput } from '../../common/common.type';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { BaseUser } from '../entities/types/user.type';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\nexport class UserRepository\n extends BaseRepository\n implements UserRepositoryInterface\n{\n constructor() {\n super(UserModel);\n }\n\n async getOne(identifier: string): Promise<BaseUser | null> {\n const params = {\n filters: [this.filter('userid', identifier)],\n };\n const response = await super.findItem(params);\n return response as BaseUser;\n }\n\n async getList(\n options: ListInput<{ identifier: string; role?: string }>,\n ): Promise<ListOutput<BaseUser>> {\n const params = {\n filters: [\n this.filter('userid', options.data.identifier),\n this.filter('groups', options.data.role, 'CONTAINS'),\n ],\n };\n const response = await super.find(params);\n return response as ListOutput<BaseUser>;\n }\n}\n","import { getAttribute } from '@qrvey/utils';\n\nimport { ENVIRONMENT } from '../../common/constants';\nimport { AdminRepositoryInterface } from '../interfaces/adminRepository.interface';\n\nexport class AdminRepository implements AdminRepositoryInterface {\n async getApplicationInfo(body: { appId: string; userId: string }) {\n const url = `${ENVIRONMENT.DOMAIN}/devapi/v4/user/${body.userId}/app/${body.appId}`;\n\n const headers = {\n 'x-api-key': ENVIRONMENT.API_KEY as string,\n };\n\n const requestOptions: RequestInit = {\n method: 'GET',\n headers,\n };\n\n const response = await fetch(url, requestOptions);\n\n const data = (await response.json()) as {\n userid?: string;\n appId?: string;\n userEmail?: string;\n };\n\n return {\n status: response.status,\n data: {\n userId: data?.userid ?? body.userId,\n appId: getAttribute(data, 'appId'),\n userEmail: getAttribute(data, 'userEmail'),\n },\n };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingDetailsModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing_details`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing_details`,\n };\n\n static columns = {\n sharing_details_id: { type: 'string', primary: true },\n asset_id: { type: 'string' },\n access_level: { type: 'numeric' },\n org_id: { type: 'string' },\n shared_with: { type: 'string' },\n shared_type: { type: 'string' },\n shared_email: { type: 'string' },\n share_origin: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n };\n\n static indexes = {\n sharingDetailsOrgId: {\n name: 'sharing_details_org_id_index',\n columns: [\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsSharedWithAccessLevel: {\n name: 'sharing_details_shared_with_access_level_index',\n columns: [\n 'shared_with',\n 'access_level',\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelSharedWithOrgId: {\n name: 'sharing_details_access_level_shared_with_org_id_index',\n columns: [\n 'access_level',\n 'shared_with',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelOrgId: {\n name: 'sharing_details_access_level_org_id_index',\n columns: [\n 'access_level',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAssetId: {\n name: 'sharing_details_asset_id_index',\n columns: [\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","import { IFilter } from '@qrvey/data-persistence';\n\nimport { SharingDetailsModel } from './details.model';\nimport {\n ListInput,\n ListOutput,\n Pagination,\n ParamsFromTokenToUser,\n} from '../../common/common.type';\nimport { LIMIT_PER_PAGE, ORGANIZATION_QRVEY } from '../../common/constants';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingDetailsTable } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\nexport class SharingDetailsRepository\n extends BaseRepository\n implements SharingDetailsRepositoryInterface\n{\n constructor() {\n super(SharingDetailsModel);\n }\n\n async getOne(sharingDetailId: string): Promise<SharingDetailsTable | null> {\n const params = {\n filters: [this.filter('sharing_details_id', sharingDetailId)],\n };\n const response = await super.findItem(params);\n return response as SharingDetailsTable;\n }\n\n async getBySharedWith(\n assetId: string,\n sharedWith: string,\n ): Promise<SharingDetailsTable | null> {\n const filterList = [\n this.filter('asset_id', assetId),\n this.filter('shared_with', sharedWith),\n ];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as SharingDetailsTable;\n }\n\n async getList(\n options: ListInput<{ assetId: string; user?: ParamsFromTokenToUser }>,\n ): Promise<ListOutput<SharingDetailsTable>> {\n const assetIndex = SharingDetailsModel.indexes.sharingDetailsAssetId;\n const pagination = this.getPagination(options.pagination);\n const params: {\n pagination: any;\n index: any;\n filters?: any;\n sorting?: any;\n } = {\n pagination,\n index: {\n indexName: assetIndex.name,\n columns: assetIndex.columns,\n },\n };\n\n const filterList = [this.filter('asset_id', options.data.assetId)];\n if (options.filters) {\n options.filters.forEach((filter) => {\n filterList.push(this.filter(filter.column, filter.value));\n });\n }\n params.filters = filterList;\n\n if (options.data.user) {\n const currentFilter = this.getUserFilter(\n options.data.user,\n filterList,\n );\n params.filters = currentFilter;\n }\n\n if (options.sorting) params.sorting = options.sorting;\n\n const response = await super.find(params);\n return response as ListOutput<SharingDetailsTable>;\n }\n\n async create(details: SharingDetailsTable): Promise<SharingDetailsTable> {\n const response = (await super.create(details)) as SharingDetailsTable;\n return response;\n }\n\n async patch(\n sharingDetailId: string,\n details: SharingDetailsTable,\n ): Promise<boolean> {\n await super.update(\n [this.filter('sharing_details_id', sharingDetailId)],\n details,\n );\n return true;\n }\n\n async delete(sharingDetailId: string): Promise<boolean> {\n await super.remove([\n this.filter('sharing_details_id', sharingDetailId),\n ]);\n return true;\n }\n\n private getPagination(options?: Pagination): Pagination {\n return {\n limit: options?.limit ?? LIMIT_PER_PAGE,\n from: options?.from ?? undefined,\n };\n }\n\n private getUserFilter(\n user: ParamsFromTokenToUser,\n currentFilters?: IFilter[],\n ) {\n const { userId, roles } = user;\n const orgId = user.orgId === '' ? ORGANIZATION_QRVEY : user.orgId; //Review if this is right\n const sharing = {\n OR: [\n {\n AND: [\n this.buildFilter('shared_with', userId),\n this.buildFilter('shared_type', 'USER'),\n this.buildFilter('org_id', orgId),\n ],\n },\n {\n AND: [\n this.buildFilter('shared_with', orgId),\n this.buildFilter('shared_type', 'ORGANIZATION'),\n this.buildFilter('org_id', orgId),\n ],\n },\n ],\n };\n if (roles && roles?.length > 0) {\n sharing.OR.push({\n AND: [\n this.buildFilter('shared_with', roles, 'IN'),\n this.buildFilter('shared_type', 'ROLE'),\n this.buildFilter('org_id', orgId),\n ],\n });\n }\n const filter = [];\n if (currentFilters) filter.push(...currentFilters);\n filter.push(sharing);\n return { AND: filter };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class DownloadManagerSchema extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}DownloadManager`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_download_manager`,\n };\n\n static columns = {\n downloadManagerId: {\n primary: true,\n type: 'String',\n columnId: true,\n },\n };\n\n static schema = 'exports';\n static usePool = true;\n}\n","import { DownloadManagerSchema } from './dm.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { DownloadManagerRepositoryInterface } from '../interfaces/downloadManagerRepository.interface';\n\nexport class DownloadManagerRepository\n extends BaseRepository\n implements DownloadManagerRepositoryInterface\n{\n constructor() {\n super(DownloadManagerSchema);\n }\n\n async get(\n identifier: string,\n ): Promise<{ downloadManagerId: string } | null> {\n const filterList = [this.filter('downloadManagerId', identifier)];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as { downloadManagerId: string };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class DashboardSchema extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_dx_dashboard`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_dashboard`,\n };\n\n static columns = {\n ResourceUID: { type: 'string', primary: true },\n dashboardId: { type: 'string' },\n contentId: { type: 'string' },\n userId: { type: 'string' },\n ownerId: { type: 'string' },\n appId: { type: 'string' },\n qvAttributes: { type: 'object' },\n };\n\n static indexes = {\n ResourceUID: {\n name: 'MetadataByResource',\n columns: ['Metadata', 'ResourceUID'],\n },\n };\n\n static schema = 'dashboard_x';\n static usePool = true;\n}\n","import { DashboardSchema } from './dx.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { DashboardRepositoryInterface } from '../interfaces/dashboardRepository.interface';\n\nexport class DashboardRepository\n extends BaseRepository\n implements DashboardRepositoryInterface\n{\n constructor() {\n super(DashboardSchema);\n }\n\n async get(identifier: string): Promise<{ dashboardId: string } | null> {\n const uid = `DASHBOARD=${identifier}&BRANCH=MAIN`;\n const filterList = [this.filter('ResourceUID', uid)];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as { dashboardId: string };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport default class OrganizationModel extends CrudSchema {\n static readonly table = {\n name: 'qv_organizations',\n alias: `${DATABASE_INFO.TABLE_PREFIX}_organizations`,\n };\n\n static readonly columns = {\n orgId: { type: 'string', primary: true },\n name: { type: 'string' },\n parent_org_id: { type: 'string' },\n org_path: { type: 'string' },\n asset_sharing: { type: 'boolean' },\n effective_asset_sharing: { type: 'boolean' },\n created_at: { type: 'string' },\n updated_at: { type: 'string' },\n };\n\n static readonly indexes = {\n org_path: { name: 'idx_qv_orgs_org_path_gist', columns: ['org_path'] },\n parent_org_id: {\n name: 'idx_qv_orgs_parent',\n columns: ['parent_org_id'],\n },\n };\n\n static readonly schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static readonly usePool = true;\n}\n","export enum HIERARCHY_SCOPE {\n CHILDREN = 'children',\n PARENTS = 'parents',\n BOTH = 'both',\n}\nexport interface OrgHierarchyResult {\n childrenIds: string[];\n parentIds: string[];\n}\n","import OrganizationModel from './organization.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { OrganizationType } from '../entities/types/organization.type';\nimport {\n HIERARCHY_SCOPE,\n OrgHierarchyResult,\n} from '../entities/types/orgTreeResult';\nimport { OrganizationRepositoryInterface } from '../interfaces/organizationRepository.interface';\n\nexport class OrganizationRepository\n extends BaseRepository\n implements OrganizationRepositoryInterface\n{\n constructor() {\n super(OrganizationModel);\n }\n\n async getOne(orgId: string): Promise<OrganizationType | null> {\n const params = {\n filters: [this.filter('\"orgId\"', orgId)],\n };\n const response = await super.findItem(params);\n return response as OrganizationType;\n }\n\n async getOrgTree(\n orgId: string,\n scope: HIERARCHY_SCOPE = HIERARCHY_SCOPE.BOTH,\n ): Promise<OrgHierarchyResult> {\n const cte = `WITH target AS (SELECT org_path FROM admin.qv_organizations WHERE \"orgId\" = '${orgId}')`;\n\n let condition = '';\n\n\n if (scope === HIERARCHY_SCOPE.CHILDREN) {\n condition = `admin.qv_organizations.org_path <@ target.org_path`;\n } else if (scope === HIERARCHY_SCOPE.PARENTS) {\n condition = `admin.qv_organizations.org_path @> target.org_path`;\n } else {\n condition = `(\n admin.qv_organizations.org_path <@ target.org_path \n OR \n admin.qv_organizations.org_path @> target.org_path\n )`;\n }\n\n const selectClause = `\n SELECT \n COALESCE(\n ARRAY_AGG(\"orgId\") FILTER (\n WHERE admin.qv_organizations.org_path <@ target.org_path AND \"orgId\" != '${orgId}'\n ), \n '{}'\n ) as db_children,\n COALESCE(\n ARRAY_AGG(\"orgId\") FILTER (\n WHERE admin.qv_organizations.org_path @> target.org_path AND \"orgId\" != '${orgId}'\n ), \n '{}'\n ) as db_parents\n `;\n\n const fromWhereClause = `\n FROM admin.qv_organizations, target \n WHERE ${condition}\n AND \"orgId\" != '${orgId}'\n `;\n\n const fullSql = `${cte} ${selectClause} ${fromWhereClause};`;\n\n const result = await super.runRawQuery(fullSql, []);\n const row = result?.rows[0];\n\n if (!row) {\n return {\n childrenIds: [],\n parentIds: [],\n };\n }\n\n return {\n childrenIds: row.db_children,\n parentIds: row.db_parents,\n };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingModel extends CrudSchema {\n static readonly table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing`,\n };\n\n static readonly columns = {\n asset_id: { type: 'string', primary: true },\n asset_type: { type: 'string' },\n sharing_mode_status: { type: 'boolean' },\n sharing_mode: { type: 'number' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n qvAttributes: { type: 'object' },\n };\n\n static readonly indexes = {\n sharingConfigLookup: {\n name: 'sharing_config_lookup_idx',\n columns: ['asset_id', 'asset_type'],\n },\n sharingAssetType: {\n name: 'sharing_asset_type_index',\n columns: ['asset_type'],\n },\n };\n\n static readonly schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static readonly usePool = true;\n}\n","import { SharingModel } from './sharing.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingTable } from '../entities/types/sharing.type';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport class SharingRepository\n extends BaseRepository\n implements SharingRepositoryInterface\n{\n constructor() {\n super(SharingModel);\n }\n\n async getOne(assetId: string): Promise<SharingTable | null> {\n const params = {\n filters: [this.filter('asset_id', assetId)],\n };\n const response = await super.findItem(params);\n return response as SharingTable;\n }\n\n async create(sharing: SharingTable): Promise<SharingTable> {\n const response = (await super.create(sharing)) as SharingTable;\n return response;\n }\n\n async patch(assetId: string, sharing: SharingTable): Promise<boolean> {\n await super.update([this.filter('asset_id', assetId)], sharing);\n return true;\n }\n\n async delete(assetId: string): Promise<boolean> {\n await super.remove([this.filter('asset_id', assetId)]);\n return true;\n }\n}\n","import { container } from 'tsyringe';\n\nimport { GroupRepository } from './quser/implementations/group.repository';\nimport { UserRepository } from './quser/implementations/user.repository';\nimport { type RoleRepositoryInterface } from './quser/interfaces/rolesRepository.interface';\nimport { type UserRepositoryInterface } from './quser/interfaces/userRepository.interface';\nimport { AdminRepository } from './sharing/implementations/admin.repository';\nimport { SharingDetailsRepository } from './sharing/implementations/details.repository';\nimport { DownloadManagerRepository } from './sharing/implementations/dm.repository';\nimport { DashboardRepository } from './sharing/implementations/dx.repository';\nimport { OrganizationRepository } from './sharing/implementations/organization.repository';\nimport { SharingRepository } from './sharing/implementations/sharing.repository';\nimport { AdminRepositoryInterface } from './sharing/interfaces/adminRepository.interface';\nimport { type DashboardRepositoryInterface } from './sharing/interfaces/dashboardRepository.interface';\nimport { type SharingDetailsRepositoryInterface } from './sharing/interfaces/detailsRepository.interface';\nimport { type DownloadManagerRepositoryInterface } from './sharing/interfaces/downloadManagerRepository.interface';\nimport { OrganizationRepositoryInterface } from './sharing/interfaces/organizationRepository.interface';\nimport { type SharingRepositoryInterface } from './sharing/interfaces/sharingRepository.interface';\n\ncontainer.register<SharingRepositoryInterface>(\n 'SharingRepository',\n SharingRepository,\n);\ncontainer.register<SharingDetailsRepositoryInterface>(\n 'SharingDetailsRepository',\n SharingDetailsRepository,\n);\ncontainer.register<UserRepositoryInterface>('UserRepository', UserRepository);\ncontainer.register<RoleRepositoryInterface>('RoleRepository', GroupRepository);\ncontainer.register<DashboardRepositoryInterface>(\n 'dxRepository',\n DashboardRepository,\n);\ncontainer.register<DownloadManagerRepositoryInterface>(\n 'dmRepository',\n DownloadManagerRepository,\n);\ncontainer.register<OrganizationRepositoryInterface>(\n 'OrganizationRepository',\n OrganizationRepository,\n);\ncontainer.register<AdminRepositoryInterface>(\n 'AdminRepository',\n AdminRepository,\n);\n\nexport const Context = container;\n","enum LOGIN_TYPES {\n composer = 'qrveyLogin',\n openIdComposer = 'OPENID_CREATORS',\n}\n\nexport function isComposer(type: string): boolean {\n return type === LOGIN_TYPES.composer || type === LOGIN_TYPES.openIdComposer;\n}\n","import { BaseUser } from './types/user.type';\n\nexport class User {\n private userId: string;\n private email: string;\n private groups: string[];\n private organization: string;\n\n constructor(params: BaseUser) {\n this.userId = params.userid;\n this.email = params.email;\n this.groups = params.groups;\n this.organization = params.organization;\n }\n\n public get getUserId(): string {\n return this.userId;\n }\n\n public get getEmail(): string {\n return this.email;\n }\n\n public get getGroups(): string[] {\n return this.groups;\n }\n\n public get getOrganization(): string {\n return this.organization;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ParamsFromTokenToUser } from '../../common/common.type';\nimport { ORGANIZATION_QRVEY } from '../../common/constants';\nimport { isComposer } from '../../common/util';\nimport { UserToken } from '../entities/types/user.type';\nimport { User } from '../entities/user';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\n@injectable()\nexport class FromTokenToUser {\n constructor(\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UserToken;\n }): Promise<ParamsFromTokenToUser> {\n const current = await this.userRepository.getOne(\n body.clientId || body.userId,\n );\n if (current) {\n const user = new User(current);\n return {\n userId: user.getUserId,\n roles: user.getGroups,\n orgId: body.orgId ?? ORGANIZATION_QRVEY,\n };\n }\n\n const inComposer = isComposer(body.loginType || '');\n if (!inComposer) {\n return {\n userId: body.clientId || '',\n roles: body.roles || [],\n orgId: body.orgId || '',\n };\n }\n\n return {\n userId: '',\n roles: [],\n orgId: '',\n };\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ORGANIZATION_QRVEY } from '../../common/constants';\nimport { isComposer } from '../../common/util';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\n@injectable()\nexport class HasAdminRole {\n constructor(\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n ) {}\n\n public async execute({\n apiKey,\n clientId,\n orgId,\n userId,\n loginType,\n }: {\n apiKey?: string;\n clientId?: string;\n orgId?: string;\n userId?: string;\n loginType?: string;\n } = {}): Promise<boolean> {\n if (!userId) return false;\n\n const existingUser = await this.userRepository.getOne(userId);\n const isMasterKey =\n apiKey && (orgId === undefined || orgId === ORGANIZATION_QRVEY);\n if (isMasterKey && existingUser && (!clientId || clientId === userId))\n return true;\n\n const user = await this.userRepository.getList({\n data: { identifier: clientId ?? userId, role: 'administrator' },\n });\n const isAdmin = user.items.length > 0;\n\n if (isMasterKey && isAdmin) return true;\n\n const inComposer = isComposer(loginType || '');\n const isExternal =\n (!clientId && !inComposer) ||\n (orgId && orgId !== ORGANIZATION_QRVEY);\n if (isExternal) return false;\n\n if (isAdmin) return true;\n\n return false;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { AppAccessResponse } from '../../common/constants';\nimport { AdminRepositoryInterface } from '../interfaces/adminRepository.interface';\n\n@injectable()\nexport default class CheckAppAccess {\n constructor(\n @inject('AdminRepository')\n private readonly adminRepository: AdminRepositoryInterface,\n ) {}\n\n //TODO Need Test\n async execute({\n appId,\n userId,\n }: {\n appId: string;\n userId: string;\n }): Promise<AppAccessResponse> {\n // If no user is available, block access by default\n if (!userId)\n return {\n hasAccess: false,\n };\n\n // Fetch application status and global platform configuration in parallel\n const appInfo = await this.adminRepository.getApplicationInfo({\n appId,\n userId,\n });\n\n if (appInfo.status !== 200)\n return {\n hasAccess: false,\n };\n\n return {\n hasAccess: true,\n };\n }\n}\n","import { getId } from '@qrvey/id-generator';\n\nimport {\n BaseSharingDetails,\n CreateSharingDetails,\n ResponseSharingDetails,\n SharingDetailsTable,\n UpdateSharingDetails,\n} from './types/details.type';\nimport {\n ACCESS_LEVEL,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\n\nexport class SharingDetail {\n private sharingDetailsId: string;\n private assetId: string;\n private accessLevel: ACCESS_LEVEL;\n private accessLevelAsText: string;\n private orgId: string;\n private sharedWith: string;\n private sharedType: SHARE_TYPE;\n private sharedOrigin: SHARED_ORIGIN;\n private sharedEmail?: string;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharingDetails) {\n this.sharingDetailsId = params.sharingDetailsId;\n this.assetId = params.assetId;\n this.accessLevel = params.accessLevel;\n this.accessLevelAsText = this.convertAccessLevelToText(\n params.accessLevel,\n );\n this.orgId = params.orgId;\n this.sharedWith = params.sharedWith;\n this.sharedType = params.sharedType;\n this.sharedEmail = params.sharedEmail;\n this.sharedOrigin = params.sharedOrigin;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharingDetails): SharingDetail {\n const now = new Date().toISOString();\n const { sharedId, ...rest } = params;\n\n const obj: BaseSharingDetails = {\n ...rest,\n sharingDetailsId: sharedId ?? getId(),\n createdAt: now,\n updatedAt: now,\n };\n\n return new SharingDetail(obj);\n }\n\n static parse(params: SharingDetailsTable): SharingDetail {\n return new SharingDetail({\n sharingDetailsId: params.sharing_details_id,\n assetId: params.asset_id,\n accessLevel: params.access_level as ACCESS_LEVEL,\n orgId: params.org_id,\n sharedWith: params.shared_with,\n sharedType: params.shared_type as SHARE_TYPE,\n sharedEmail: params.shared_email,\n sharedOrigin: params.share_origin as SHARED_ORIGIN,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update(params: UpdateSharingDetails) {\n if (params.accessLevel || params.accessLevel === 0)\n this.accessLevel = params.accessLevel;\n if (params.sharedEmail) this.sharedEmail = params.sharedEmail;\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingDetailsTable {\n return {\n sharing_details_id: this.sharingDetailsId,\n asset_id: this.assetId,\n access_level: this.accessLevel,\n org_id: this.orgId,\n shared_with: this.sharedWith,\n shared_type: this.sharedType,\n shared_email: this.sharedEmail,\n share_origin: this.sharedOrigin,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharingDetails {\n return {\n sharingDetailsId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharingDetails {\n return {\n sharedId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n accessLevelAsText: this.accessLevelAsText,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getSharingDetailsId(): string {\n return this.sharingDetailsId;\n }\n\n public get getAccessLevel(): ACCESS_LEVEL {\n return this.accessLevel;\n }\n\n public get getAccessLevelAsText(): string {\n return this.accessLevelAsText;\n }\n\n private convertAccessLevelToText(level: number): string {\n return ACCESS_LEVEL[level] ?? 'UNKNOWN';\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ACCESS_LEVEL, SHARE_TYPE } from '../../common/constants';\nimport { fromTokenToUser } from '../../index';\nimport { SharingDetail } from '../entities/details';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\n@injectable()\nexport class CheckUserAccessLevel {\n constructor(\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n userId,\n assetId,\n clientId,\n loginType,\n roles,\n orgId,\n }: {\n assetId: string;\n userId: string;\n clientId?: string;\n loginType?: string;\n roles?: string[];\n orgId?: string;\n }): Promise<{ level: ACCESS_LEVEL; levelAsText: string }> {\n const user = await fromTokenToUser({\n body: { userId, clientId, roles, orgId, loginType },\n });\n const details = await this.detailsRepository.getList({\n data: { assetId, user },\n sorting: [{ column: 'access_level', direction: 'DESC' }],\n });\n if (details.items.length === 0)\n return { level: ACCESS_LEVEL.NONE, levelAsText: 'NONE' };\n\n const priority = {\n [SHARE_TYPE.USER]: 4,\n [SHARE_TYPE.ROLE]: 3,\n [SHARE_TYPE.ORGANIZATION]: 2,\n [SHARE_TYPE.TENANTS]: 1\n };\n\n const priorityDetail = details.items.reduce((best, current) => {\n const bestPriority = priority[best.shared_type as SHARE_TYPE];\n const currentPriority = priority[current.shared_type as SHARE_TYPE];\n const isBetter =\n currentPriority > bestPriority ||\n (currentPriority === bestPriority &&\n current.access_level > best.access_level);\n\n if (isBetter) return current;\n return best;\n });\n\n const currentDetail = SharingDetail.parse(priorityDetail);\n return {\n level: currentDetail.getAccessLevel,\n levelAsText: currentDetail.getAccessLevelAsText,\n };\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface Delete {\n assetId: string;\n}\n\n@injectable()\nexport class DeleteSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n ) {}\n\n public async execute({ body }: { body: Delete }): Promise<boolean | null> {\n const { assetId } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.sharingRepository.delete(assetId);\n return detailSharing;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n HIERARCHY_SCOPE,\n OrgHierarchyResult,\n} from '../entities/types/orgTreeResult';\nimport { OrganizationRepositoryInterface } from '../interfaces/organizationRepository.interface';\n\n@injectable()\nexport default class GetOrgTree {\n constructor(\n @inject('OrganizationRepository')\n private readonly organizationRepository: OrganizationRepositoryInterface,\n ) {}\n\n async execute(\n orgId: string,\n scope?: HIERARCHY_SCOPE,\n ): Promise<OrgHierarchyResult> {\n return this.organizationRepository.getOrgTree(\n orgId,\n scope ?? HIERARCHY_SCOPE.BOTH,\n );\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { Sorting } from '../../common/common.type';\nimport { SharingDetail } from '../entities/details';\nimport {\n GetSharingList,\n ListSharingDetails,\n SharingDetailsTable,\n} from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\n@injectable()\nexport class ListSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: GetSharingList;\n }): Promise<ListSharingDetails | null> {\n const {\n data: { assetId },\n pagination,\n } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n\n const sorting: Array<Sorting> =\n body.sorting && body.sorting?.length > 0\n ? body.sorting\n : [{ column: 'created_at', direction: 'ASC' }];\n\n const detailSharing = await this.detailsRepository.getList({\n data: { assetId },\n pagination,\n sorting,\n });\n const items = detailSharing.items.map((item) =>\n SharingDetail.parse(item as SharingDetailsTable).toJSON(),\n );\n return {\n ...detailSharing,\n items,\n };\n }\n}\n","import {\n BaseSharing,\n CreateSharing,\n ResponseSharing,\n SharingTable,\n} from './types/sharing.type';\nimport { ASSET_TYPE } from '../../common/constants';\n\nexport class Sharing {\n private assetId: string;\n private assetType: ASSET_TYPE;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharing) {\n this.assetId = params.assetId;\n this.assetType = params.assetType;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharing): Sharing {\n const now = new Date().toISOString();\n const obj: BaseSharing = {\n ...params,\n createdAt: now,\n updatedAt: now,\n };\n return new Sharing(obj);\n }\n\n static parse(params: SharingTable): Sharing {\n return new Sharing({\n assetId: params.asset_id,\n assetType: params.asset_type as ASSET_TYPE,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update() {\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingTable {\n return {\n asset_id: this.assetId,\n asset_type: this.assetType,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getAssetId(): string {\n return this.assetId;\n }\n\n public get getAssetType(): string {\n return this.assetType;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\nimport { RoleRepositoryInterface } from '../../quser/interfaces/rolesRepository.interface';\nimport { UserRepositoryInterface } from '../../quser/interfaces/userRepository.interface';\nimport { SharingDetail } from '../entities/details';\nimport { Sharing } from '../entities/sharing';\nimport { ResponseSharingDetails } from '../entities/types/details.type';\nimport { DashboardRepositoryInterface } from '../interfaces/dashboardRepository.interface';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { DownloadManagerRepositoryInterface } from '../interfaces/downloadManagerRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\ninterface SharingWith {\n sharedId?: string;\n sharedWith: string;\n sharedOrigin: SHARED_ORIGIN;\n accessLevel: ACCESS_LEVEL;\n orgId?: string;\n sharedEmail?: string;\n sharedType: SHARE_TYPE;\n}\n\nexport interface UpsertInterface {\n assetId: string;\n assetType: ASSET_TYPE;\n add?: Array<SharingWith>;\n remove?: Array<{\n sharedId: string;\n }>;\n}\n\n@injectable()\nexport class UpsertSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n @inject('dxRepository')\n private readonly dxRepository: DashboardRepositoryInterface,\n @inject('dmRepository')\n private readonly dmRepository: DownloadManagerRepositoryInterface,\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n @inject('RoleRepository')\n private readonly roleRepository: RoleRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UpsertInterface;\n }): Promise<ResponseSharingDetails[]> {\n const assetId = body.assetId;\n\n const isValidAsset = await this.validateIfAssetExists(\n assetId,\n body.assetType,\n );\n if (!isValidAsset)\n throw new Error(`Asset with ID ${assetId} not found`);\n\n const sharing = await this.sharingRepository.getOne(assetId);\n let currentSharing: Sharing;\n if (sharing) {\n currentSharing = Sharing.parse(sharing);\n } else {\n const createSharing = {\n assetId,\n assetType: body.assetType,\n };\n currentSharing = Sharing.create(createSharing);\n await this.sharingRepository.create(currentSharing.toTable());\n }\n\n let updatedList: SharingDetail[] = [];\n if (body.add) updatedList = await this.addDetails(assetId, body.add);\n if (body.remove) await this.removeDetails(body.remove);\n\n currentSharing.update();\n await this.sharingRepository.patch(\n currentSharing.getAssetId,\n currentSharing.toTable(),\n );\n return updatedList.map((detail) => detail.toJSON());\n }\n\n private async validateIfAssetExists(\n assetId: string,\n assetType: ASSET_TYPE,\n ): Promise<boolean> {\n switch (assetType) {\n case ASSET_TYPE.DX: {\n const result = await this.dxRepository.get(assetId);\n if (result) return true;\n return false;\n }\n case ASSET_TYPE.DM: {\n return true;\n }\n\n default:\n return false;\n }\n }\n\n private async addDetails(\n assetId: string,\n list: Required<UpsertInterface>['add'],\n ): Promise<SharingDetail[]> {\n const sharingList: SharingDetail[] = [];\n for (const detail of list) {\n const currentDetail = await this.addSpecificDetail(assetId, detail);\n if (currentDetail) sharingList.push(currentDetail);\n }\n return sharingList;\n }\n\n private async addSpecificDetail(\n assetId: string,\n detail: SharingWith,\n ): Promise<SharingDetail | null> {\n let currentDetail: SharingDetail;\n const isValid = await this.validateIfSharedWithExist(detail);\n if (!isValid) return null;\n\n let sharingDetail = await this.detailsRepository.getBySharedWith(\n assetId,\n detail.sharedWith,\n );\n if (!sharingDetail && detail.sharedId) {\n sharingDetail = await this.detailsRepository.getOne(\n detail.sharedId,\n );\n }\n\n if (sharingDetail) {\n currentDetail = SharingDetail.parse(sharingDetail);\n currentDetail.update(detail);\n await this.detailsRepository.patch(\n currentDetail.getSharingDetailsId,\n currentDetail.toTable(),\n );\n } else {\n const createDetails = {\n assetId: assetId,\n orgId: detail.orgId ?? ORGANIZATION_QRVEY, //TODO If shareOrigin is INTERNAL then `ORGANIZATION_QRVEY` else fail\n ...detail,\n };\n currentDetail = SharingDetail.create(createDetails);\n await this.detailsRepository.create(currentDetail.toTable());\n }\n return currentDetail;\n }\n\n private async validateIfSharedWithExist(\n detail: SharingWith,\n ): Promise<boolean> {\n if (\n detail.sharedOrigin === SHARED_ORIGIN.EXTERNAL ||\n detail.sharedOrigin === SHARED_ORIGIN.UNKNOWN\n )\n return true;\n\n const isQrveyOrg =\n detail.sharedType === SHARE_TYPE.ORGANIZATION &&\n detail.sharedWith === ORGANIZATION_QRVEY;\n if (isQrveyOrg) return true; // NOTE: If more Internal Organization arrive, need to change this validation\n\n if (detail.sharedType === SHARE_TYPE.USER) {\n const user = await this.userRepository.getOne(detail.sharedWith);\n if (user) return true;\n }\n\n if (detail.sharedType === SHARE_TYPE.ROLE) {\n const role = await this.roleRepository.getOne(detail.sharedWith);\n if (role) return true;\n }\n\n return false;\n }\n\n private async removeDetails(\n list: Required<UpsertInterface>['remove'],\n ): Promise<void> {\n for (const detail of list) {\n await this.detailsRepository.delete(detail.sharedId);\n }\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ACCESS_LEVEL, ASSET_TYPE, SHARE_TYPE, SHARED_ORIGIN } from '../../common/constants';\nimport { Sharing } from '../entities/sharing';\nimport { SharingDetail } from '../entities/details';\nimport { AdminRepositoryInterface } from '../interfaces/adminRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\n@injectable()\nexport class UpsertDefaultSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n @inject('AdminRepository')\n private readonly adminRepository: AdminRepositoryInterface,\n ) {\n }\n\n public async execute({\n assetId,\n assetType,\n orgId,\n sharedOrigin,\n }: {\n assetId: string;\n assetType: ASSET_TYPE;\n orgId: string,\n sharedOrigin: SHARED_ORIGIN\n }): Promise<Sharing> {\n const sharingRecord = await this.sharingRepository.getOne(assetId);\n let currentSharing: Sharing;\n\n if (sharingRecord) {\n currentSharing = Sharing.parse(sharingRecord);\n } else {\n const createSharing = {\n assetId,\n assetType,\n };\n currentSharing = Sharing.create(createSharing);\n\n await this.sharingRepository.create(currentSharing.toTable());\n }\n\n const sharingDetailsTenants = SharingDetail.create({\n accessLevel: ACCESS_LEVEL.CAN_EDIT,\n assetId,\n sharedOrigin: sharedOrigin,\n sharedType: SHARE_TYPE.TENANTS,\n sharedWith: 'TENANTS',\n orgId,\n sharedId: currentSharing.getAssetId,\n });\n\n\n const sharingDetailsOrg = SharingDetail.create({\n accessLevel: ACCESS_LEVEL.CAN_EDIT,\n assetId,\n sharedOrigin: sharedOrigin,\n sharedType: SHARE_TYPE.ORGANIZATION,\n sharedWith: orgId,\n orgId,\n sharedId: currentSharing.getAssetId,\n });\n\n await Promise.all([\n this.detailsRepository.create(sharingDetailsTenants.toTable()),\n this.detailsRepository.create(sharingDetailsOrg.toTable()),\n ]);\n\n return currentSharing;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n APP_SHARING_STATUS,\n} from '../../common/constants';\nimport { OrganizationRepositoryInterface } from '../interfaces/organizationRepository.interface';\n\n@injectable()\nexport default class CheckOrgPermissions {\n constructor(\n @inject('OrganizationRepository')\n private readonly organizationRepository: OrganizationRepositoryInterface,\n ) {}\n\n //TODO Need Tes\n async execute({\n orgId,\n }: {\n orgId: string;\n }): Promise<{ privacy: APP_SHARING_STATUS }> {\n const hasPublicAccess = await this.organizationRepository.getOne(orgId);\n const privacy = hasPublicAccess?.effective_asset_sharing\n ? APP_SHARING_STATUS.PRIVATE\n : APP_SHARING_STATUS.PUBLIC;\n\n return { privacy };\n }\n}\n","import 'reflect-metadata';\nimport { Context } from './context';\nimport { FromTokenToUser } from './quser/services/fromTokenToUser';\nimport { HasAdminRole } from './quser/services/hasAdminRole';\nimport CheckAppAccess from './sharing/services/checkAppAccess';\nimport { CheckUserAccessLevel } from './sharing/services/checkUserAccessLevel';\nimport { DeleteSharing } from './sharing/services/delete';\nimport GetOrgTree from './sharing/services/getOrgTree';\nimport { ListSharing } from './sharing/services/list';\nimport { UpsertSharing } from './sharing/services/upsert';\nimport { UpsertDefaultSharing } from './sharing/services/upsertDefaultSharing';\nimport CheckOrgPermissions from './sharing/services/checkOrgPermissions';\n\nexport const api = {\n upsert: (...args: Parameters<UpsertSharing['execute']>) =>\n Context.resolve(UpsertSharing).execute(...args),\n list: (...args: Parameters<ListSharing['execute']>) =>\n Context.resolve(ListSharing).execute(...args),\n delete: (...args: Parameters<DeleteSharing['execute']>) =>\n Context.resolve(DeleteSharing).execute(...args),\n};\n\nexport const checkUserAccessLevel = (\n ...args: Parameters<CheckUserAccessLevel['execute']>\n) => Context.resolve(CheckUserAccessLevel).execute(...args);\n\nexport const checkAppAccess = (\n ...args: Parameters<CheckAppAccess['execute']>\n) => Context.resolve(CheckAppAccess).execute(...args);\n\nexport const getOrgTree = (...args: Parameters<GetOrgTree['execute']>) =>\n Context.resolve(GetOrgTree).execute(...args);\n\nexport const fromTokenToUser = (\n ...args: Parameters<FromTokenToUser['execute']>\n) => Context.resolve(FromTokenToUser).execute(...args);\n\nexport const hasAdminRole = (...args: Parameters<HasAdminRole['execute']>) =>\n Context.resolve(HasAdminRole).execute(...args);\n\nexport const upsertDefaultSharing = (\n ...args: Parameters<UpsertDefaultSharing['execute']>\n) => Context.resolve(UpsertDefaultSharing).execute(...args);\n\nexport const checkOrgPermissions = (\n ...args: Parameters<CheckOrgPermissions['execute']>\n) => Context.resolve(CheckOrgPermissions).execute(...args);\n\nexport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n APP_SHARING_STATUS,\n USER_ANONYMOUS,\n} from './common/constants';\n\nexport { HIERARCHY_SCOPE } from './sharing/entities/types/orgTreeResult';\nexport { GetSharingList } from './sharing/entities/types/details.type';\n"]}
1
+ {"version":3,"sources":["../../src/common/constants.ts","../../src/quser/implementations/group.model.ts","../../src/common/persistence/poolClient.ts","../../src/common/persistence/base.ts","../../src/quser/implementations/group.repository.ts","../../src/quser/implementations/user.model.ts","../../src/quser/implementations/user.repository.ts","../../src/sharing/implementations/admin.repository.ts","../../src/sharing/implementations/details.model.ts","../../src/sharing/implementations/details.repository.ts","../../src/sharing/implementations/dm.model.ts","../../src/sharing/implementations/dm.repository.ts","../../src/sharing/implementations/dx.model.ts","../../src/sharing/implementations/dx.repository.ts","../../src/sharing/implementations/organization.model.ts","../../src/sharing/entities/types/orgTreeResult.ts","../../src/sharing/implementations/organization.repository.ts","../../src/sharing/implementations/sharing.model.ts","../../src/sharing/implementations/sharing.repository.ts","../../src/context.ts","../../src/common/util.ts","../../src/quser/entities/user.ts","../../src/quser/services/fromTokenToUser.ts","../../src/quser/services/hasAdminRole.ts","../../src/sharing/services/checkAppAccess.ts","../../src/sharing/entities/details.ts","../../src/sharing/services/checkUserAccessLevel.ts","../../src/sharing/services/delete.ts","../../src/sharing/services/getOrgTree.ts","../../src/sharing/services/list.ts","../../src/sharing/entities/sharing.ts","../../src/sharing/services/upsert.ts","../../src/sharing/services/upsertDefaultSharing.ts","../../src/sharing/services/checkOrgPermissions.ts","../../src/index.ts"],"names":["ASSET_TYPE","SHARED_ORIGIN","SHARE_TYPE","ACCESS_LEVEL","APP_SHARING_STATUS","CrudSchema","HIERARCHY_SCOPE","injectable","inject"],"mappings":"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","file":"index.mjs","sourcesContent":["export const ENVIRONMENT = {\n SERVER_PREFIX: process.env.SERVER_PREFIX,\n TABLE_PREFIX: process.env.TABLE_PREFIX,\n DOMAIN: process.env.DOMAIN,\n API_KEY: process.env.API_KEY,\n};\n\nexport const DATABASE_INFO = {\n DATA_PERSISTENCE_SCHEMA: 'admin',\n SERVER_PREFIX: ENVIRONMENT.SERVER_PREFIX,\n TABLE_PREFIX: ENVIRONMENT.TABLE_PREFIX,\n};\n\nexport const ORGANIZATION_QRVEY = 'org:0';\n\nexport const USER_ANONYMOUS = 'anonymous';\n\nexport enum ASSET_TYPE {\n DX = 'DX', // DASHBOARD X (Next Gen)\n DM = 'DM', // DOWNLOAD MANAGER\n}\n\nexport enum SHARED_ORIGIN {\n INTERNAL = 'INTERNAL', // for org:0\n EXTERNAL = 'EXTERNAL', // for orgs different that 0\n UNKNOWN = 'UNKNOWN', // without orgId\n}\n\nexport enum SHARE_TYPE {\n USER = 'USER',\n ROLE = 'ROLE',\n ORGANIZATION = 'ORGANIZATION',\n TENANTS = 'TENANTS'\n}\n\n/**\n * Access levels for assets.\n * Those are calculated with Base 2, so:\n * - NONE = 0 (undefined)\n * - CAN_USE = 1 (2^0)\n * - CAN_EDIT = 2 (2^1)\n * - ADMIN = 4 (2^2)\n * - (Future) SUPER = 8 (2^3)\n */\nexport enum ACCESS_LEVEL {\n NONE = 0,\n CAN_USE = 1,\n CAN_EDIT = 2,\n ADMIN = 4,\n}\n\nexport enum APP_SHARING_STATUS {\n PUBLIC = 'public',\n PRIVATE = 'private',\n SHARED = 'shared',\n}\n\nexport interface AppAccessResponse {\n hasAccess: boolean;\n}\n\nexport interface AppOwner {\n userId: string;\n appId: string;\n userEmail?: string;\n}\n\nexport const LIMIT_PER_PAGE = 10;\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class GroupModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}Groups`,\n alias: 'qv_groups',\n };\n\n static columns = {\n groupid: {\n type: 'string',\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n}\n","import { getDbPool } from '@qrvey/data-persistence';\n\nlet poolClient: any;\nexport function getPoolClient() {\n if (!poolClient) poolClient = getDbPool();\n return poolClient;\n}\n","import { CrudService, buildFilter } from '@qrvey/data-persistence';\n\nimport { getPoolClient } from './poolClient';\n\nexport class BaseRepository extends CrudService<any> {\n constructor(schema: any) {\n super(schema, getPoolClient());\n }\n\n filter(attribute: string, value: any, operator?: string) {\n return buildFilter(attribute, value, operator);\n }\n}\n","import { GroupModel } from './group.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { RoleRepositoryInterface } from '../interfaces/rolesRepository.interface';\n\nexport class GroupRepository\n extends BaseRepository\n implements RoleRepositoryInterface\n{\n constructor() {\n super(GroupModel);\n }\n\n async getOne(identifier: string): Promise<{ groupid: string } | null> {\n const params = {\n filters: [this.filter('groupid', identifier)],\n };\n const response = await super.findItem(params);\n return response as { groupid: string };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class UserModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}Users`,\n alias: 'qv_users',\n };\n\n static columns = {\n userid: {\n type: 'string',\n primary: true,\n columnId: true,\n },\n groups: {\n type: 'array',\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n}\n","import { UserModel } from './user.model';\nimport { ListInput, ListOutput } from '../../common/common.type';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { BaseUser } from '../entities/types/user.type';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\nexport class UserRepository\n extends BaseRepository\n implements UserRepositoryInterface\n{\n constructor() {\n super(UserModel);\n }\n\n async getOne(identifier: string): Promise<BaseUser | null> {\n const params = {\n filters: [this.filter('userid', identifier)],\n };\n const response = await super.findItem(params);\n return response as BaseUser;\n }\n\n async getList(\n options: ListInput<{ identifier: string; role?: string }>,\n ): Promise<ListOutput<BaseUser>> {\n const params = {\n filters: [\n this.filter('userid', options.data.identifier),\n this.filter('groups', options.data.role, 'CONTAINS'),\n ],\n };\n const response = await super.find(params);\n return response as ListOutput<BaseUser>;\n }\n}\n","import { getAttribute } from '@qrvey/utils';\n\nimport { ENVIRONMENT } from '../../common/constants';\nimport { AdminRepositoryInterface } from '../interfaces/adminRepository.interface';\n\nexport class AdminRepository implements AdminRepositoryInterface {\n async getApplicationInfo(body: { appId: string; userId: string }) {\n const url = `${ENVIRONMENT.DOMAIN}/devapi/v4/user/${body.userId}/app/${body.appId}`;\n\n const headers = {\n 'x-api-key': ENVIRONMENT.API_KEY as string,\n };\n\n const requestOptions: RequestInit = {\n method: 'GET',\n headers,\n };\n\n const response = await fetch(url, requestOptions);\n\n const data = (await response.json()) as {\n userid?: string;\n appId?: string;\n userEmail?: string;\n };\n\n return {\n status: response.status,\n data: {\n userId: data?.userid ?? body.userId,\n appId: getAttribute(data, 'appId'),\n userEmail: getAttribute(data, 'userEmail'),\n },\n };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingDetailsModel extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing_details`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing_details`,\n };\n\n static columns = {\n sharing_details_id: { type: 'string', primary: true },\n asset_id: { type: 'string' },\n access_level: { type: 'numeric' },\n org_id: { type: 'string' },\n shared_with: { type: 'string' },\n shared_type: { type: 'string' },\n shared_email: { type: 'string' },\n share_origin: { type: 'string' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n };\n\n static indexes = {\n sharingDetailsOrgId: {\n name: 'sharing_details_org_id_index',\n columns: [\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsSharedWithAccessLevel: {\n name: 'sharing_details_shared_with_access_level_index',\n columns: [\n 'shared_with',\n 'access_level',\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelSharedWithOrgId: {\n name: 'sharing_details_access_level_shared_with_org_id_index',\n columns: [\n 'access_level',\n 'shared_with',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAccessLevelOrgId: {\n name: 'sharing_details_access_level_org_id_index',\n columns: [\n 'access_level',\n 'org_id',\n 'asset_id',\n 'sharing_details_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n sharingDetailsAssetId: {\n name: 'sharing_details_asset_id_index',\n columns: [\n 'asset_id',\n 'sharing_details_id',\n 'org_id',\n 'shared_with',\n 'shared_type',\n 'shared_email',\n 'share_origin',\n ],\n },\n };\n\n static schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static usePool = true;\n}\n","import { IFilter } from '@qrvey/data-persistence';\n\nimport { SharingDetailsModel } from './details.model';\nimport { ListInput, ListOutput, Pagination, ParamsFromTokenToUser } from '../../common/common.type';\nimport { LIMIT_PER_PAGE, ORGANIZATION_QRVEY } from '../../common/constants';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingDetailsTable } from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\nexport class SharingDetailsRepository\n extends BaseRepository\n implements SharingDetailsRepositoryInterface\n{\n constructor() {\n super(SharingDetailsModel);\n }\n\n async getOne(sharingDetailId: string): Promise<SharingDetailsTable | null> {\n const params = {\n filters: [this.filter('sharing_details_id', sharingDetailId)],\n };\n const response = await super.findItem(params);\n return response as SharingDetailsTable;\n }\n\n async getBySharedWith(\n assetId: string,\n sharedWith: string,\n ): Promise<SharingDetailsTable | null> {\n const filterList = [\n this.filter('asset_id', assetId),\n this.filter('shared_with', sharedWith),\n ];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as SharingDetailsTable;\n }\n\n async getList(\n options: ListInput<{ assetId: string; user?: ParamsFromTokenToUser; parentOrgIds?: string[] }>,\n ): Promise<ListOutput<SharingDetailsTable>> {\n const assetIndex = SharingDetailsModel.indexes.sharingDetailsAssetId;\n const pagination = this.getPagination(options.pagination);\n const params: {\n pagination: any;\n index: any;\n filters?: any;\n sorting?: any;\n } = {\n pagination,\n index: {\n indexName: assetIndex.name,\n columns: assetIndex.columns,\n },\n };\n\n const filterList = [this.filter('asset_id', options.data.assetId)];\n if (options.filters) {\n options.filters.forEach((filter) => {\n filterList.push(this.filter(filter.column, filter.value));\n });\n }\n params.filters = filterList;\n\n if (options.data.user) {\n params.filters = this.getUserFilter(\n options.data.user,\n options.data.parentOrgIds ?? [],\n filterList,\n );\n }\n\n if (options.sorting) params.sorting = options.sorting;\n\n const response = await super.find(params);\n return response as ListOutput<SharingDetailsTable>;\n }\n\n async create(details: SharingDetailsTable): Promise<SharingDetailsTable> {\n const response = (await super.create(details)) as SharingDetailsTable;\n return response;\n }\n\n async patch(\n sharingDetailId: string,\n details: SharingDetailsTable,\n ): Promise<boolean> {\n await super.update(\n [this.filter('sharing_details_id', sharingDetailId)],\n details,\n );\n return true;\n }\n\n async delete(sharingDetailId: string): Promise<boolean> {\n await super.remove([\n this.filter('sharing_details_id', sharingDetailId),\n ]);\n return true;\n }\n\n private getPagination(options?: Pagination): Pagination {\n return {\n limit: options?.limit ?? LIMIT_PER_PAGE,\n from: options?.from ?? undefined,\n };\n }\n\n private getUserFilter(\n user: ParamsFromTokenToUser,\n parentsOrgIds: string[],\n currentFilters?: IFilter[],\n ) {\n const { userId, roles } = user;\n const orgId = user.orgId === '' ? ORGANIZATION_QRVEY : user.orgId; //Review if this is\n if (!parentsOrgIds.includes(ORGANIZATION_QRVEY)) {\n parentsOrgIds.push(ORGANIZATION_QRVEY);\n }\n const sharing = {\n OR: [\n {\n AND: [\n this.buildFilter('shared_with', userId),\n this.buildFilter('shared_type', 'USER'),\n this.buildFilter('org_id', orgId),\n ],\n },\n {\n AND: [\n this.buildFilter('shared_with', orgId),\n this.buildFilter('shared_type', 'ORGANIZATION'),\n this.buildFilter('org_id', orgId),\n ],\n },\n {\n AND: [\n this.buildFilter('shared_type', 'TENANT'),\n this.buildFilter('org_id', parentsOrgIds, 'IN')\n ]\n }\n ],\n };\n if (roles && roles?.length > 0) {\n sharing.OR.push({\n AND: [\n this.buildFilter('shared_with', roles, 'IN'),\n this.buildFilter('shared_type', 'ROLE'),\n this.buildFilter('org_id', orgId),\n ],\n });\n }\n const filter = [];\n if (currentFilters) filter.push(...currentFilters);\n filter.push(sharing);\n return { AND: filter };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class DownloadManagerSchema extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}DownloadManager`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_download_manager`,\n };\n\n static columns = {\n downloadManagerId: {\n primary: true,\n type: 'String',\n columnId: true,\n },\n };\n\n static schema = 'exports';\n static usePool = true;\n}\n","import { DownloadManagerSchema } from './dm.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { DownloadManagerRepositoryInterface } from '../interfaces/downloadManagerRepository.interface';\n\nexport class DownloadManagerRepository\n extends BaseRepository\n implements DownloadManagerRepositoryInterface\n{\n constructor() {\n super(DownloadManagerSchema);\n }\n\n async get(\n identifier: string,\n ): Promise<{ downloadManagerId: string } | null> {\n const filterList = [this.filter('downloadManagerId', identifier)];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as { downloadManagerId: string };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class DashboardSchema extends CrudSchema {\n static table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_dx_dashboard`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_dashboard`,\n };\n\n static columns = {\n ResourceUID: { type: 'string', primary: true },\n dashboardId: { type: 'string' },\n contentId: { type: 'string' },\n userId: { type: 'string' },\n ownerId: { type: 'string' },\n appId: { type: 'string' },\n qvAttributes: { type: 'object' },\n };\n\n static indexes = {\n ResourceUID: {\n name: 'MetadataByResource',\n columns: ['Metadata', 'ResourceUID'],\n },\n };\n\n static schema = 'dashboard_x';\n static usePool = true;\n}\n","import { DashboardSchema } from './dx.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { DashboardRepositoryInterface } from '../interfaces/dashboardRepository.interface';\n\nexport class DashboardRepository\n extends BaseRepository\n implements DashboardRepositoryInterface\n{\n constructor() {\n super(DashboardSchema);\n }\n\n async get(identifier: string): Promise<{ dashboardId: string } | null> {\n const uid = `DASHBOARD=${identifier}&BRANCH=MAIN`;\n const filterList = [this.filter('ResourceUID', uid)];\n const params = {\n filters: filterList,\n };\n const response = await super.findItem(params);\n return response as { dashboardId: string };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport default class OrganizationModel extends CrudSchema {\n static readonly table = {\n name: 'qv_organizations',\n alias: `${DATABASE_INFO.TABLE_PREFIX}_organizations`,\n };\n\n static readonly columns = {\n orgId: { type: 'string', primary: true },\n name: { type: 'string' },\n parent_org_id: { type: 'string' },\n org_path: { type: 'string' },\n asset_sharing: { type: 'boolean' },\n effective_asset_sharing: { type: 'boolean' },\n created_at: { type: 'string' },\n updated_at: { type: 'string' },\n };\n\n static readonly indexes = {\n org_path: { name: 'idx_qv_orgs_org_path_gist', columns: ['org_path'] },\n parent_org_id: {\n name: 'idx_qv_orgs_parent',\n columns: ['parent_org_id'],\n },\n };\n\n static readonly schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static readonly usePool = true;\n}\n","export enum HIERARCHY_SCOPE {\n CHILDREN = 'children',\n PARENTS = 'parents',\n BOTH = 'both',\n}\nexport interface OrgHierarchyResult {\n childrenIds: string[];\n parentIds: string[];\n}\n","import OrganizationModel from './organization.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { OrganizationType } from '../entities/types/organization.type';\nimport {\n HIERARCHY_SCOPE,\n OrgHierarchyResult,\n} from '../entities/types/orgTreeResult';\nimport { OrganizationRepositoryInterface } from '../interfaces/organizationRepository.interface';\n\nexport class OrganizationRepository\n extends BaseRepository\n implements OrganizationRepositoryInterface\n{\n constructor() {\n super(OrganizationModel);\n }\n\n async getOne(orgId: string): Promise<OrganizationType | null> {\n const params = {\n filters: [this.filter('\"orgId\"', orgId)],\n };\n const response = await super.findItem(params);\n return response as OrganizationType;\n }\n\n async getOrgTree(\n orgId: string,\n scope: HIERARCHY_SCOPE = HIERARCHY_SCOPE.BOTH,\n ): Promise<OrgHierarchyResult> {\n const cte = `WITH target AS (SELECT org_path FROM admin.qv_organizations WHERE \"orgId\" = '${orgId}')`;\n\n let condition = '';\n\n\n if (scope === HIERARCHY_SCOPE.CHILDREN) {\n condition = `admin.qv_organizations.org_path <@ target.org_path`;\n } else if (scope === HIERARCHY_SCOPE.PARENTS) {\n condition = `admin.qv_organizations.org_path @> target.org_path`;\n } else {\n condition = `(\n admin.qv_organizations.org_path <@ target.org_path \n OR \n admin.qv_organizations.org_path @> target.org_path\n )`;\n }\n\n const selectClause = `\n SELECT \n COALESCE(\n ARRAY_AGG(\"orgId\") FILTER (\n WHERE admin.qv_organizations.org_path <@ target.org_path AND \"orgId\" != '${orgId}'\n ), \n '{}'\n ) as db_children,\n COALESCE(\n ARRAY_AGG(\"orgId\") FILTER (\n WHERE admin.qv_organizations.org_path @> target.org_path AND \"orgId\" != '${orgId}'\n ), \n '{}'\n ) as db_parents\n `;\n\n const fromWhereClause = `\n FROM admin.qv_organizations, target \n WHERE ${condition}\n AND \"orgId\" != '${orgId}'\n `;\n\n const fullSql = `${cte} ${selectClause} ${fromWhereClause};`;\n\n const result = await super.runRawQuery(fullSql, []);\n const row = result?.rows[0];\n\n if (!row) {\n return {\n childrenIds: [],\n parentIds: [],\n };\n }\n\n return {\n childrenIds: row.db_children,\n parentIds: row.db_parents,\n };\n }\n}\n","import { CrudSchema } from '@qrvey/data-persistence';\n\nimport { DATABASE_INFO } from '../../common/constants';\n\nexport class SharingModel extends CrudSchema {\n static readonly table = {\n name: `${DATABASE_INFO.SERVER_PREFIX}_sharing`,\n alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing`,\n };\n\n static readonly columns = {\n asset_id: { type: 'string', primary: true },\n asset_type: { type: 'string' },\n sharing_mode_status: { type: 'boolean' },\n sharing_mode: { type: 'number' },\n created_at: { type: 'date' },\n updated_at: { type: 'date' },\n deleted_at: { type: 'date' },\n qvAttributes: { type: 'object' },\n };\n\n static readonly indexes = {\n sharingConfigLookup: {\n name: 'sharing_config_lookup_idx',\n columns: ['asset_id', 'asset_type'],\n },\n sharingAssetType: {\n name: 'sharing_asset_type_index',\n columns: ['asset_type'],\n },\n };\n\n static readonly schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;\n static readonly usePool = true;\n}\n","import { SharingModel } from './sharing.model';\nimport { BaseRepository } from '../../common/persistence/base';\nimport { SharingTable } from '../entities/types/sharing.type';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport class SharingRepository\n extends BaseRepository\n implements SharingRepositoryInterface\n{\n constructor() {\n super(SharingModel);\n }\n\n async getOne(assetId: string): Promise<SharingTable | null> {\n const params = {\n filters: [this.filter('asset_id', assetId)],\n };\n const response = await super.findItem(params);\n return response as SharingTable;\n }\n\n async create(sharing: SharingTable): Promise<SharingTable> {\n const response = (await super.create(sharing)) as SharingTable;\n return response;\n }\n\n async patch(assetId: string, sharing: SharingTable): Promise<boolean> {\n await super.update([this.filter('asset_id', assetId)], sharing);\n return true;\n }\n\n async delete(assetId: string): Promise<boolean> {\n await super.remove([this.filter('asset_id', assetId)]);\n return true;\n }\n}\n","import { container } from 'tsyringe';\n\nimport { GroupRepository } from './quser/implementations/group.repository';\nimport { UserRepository } from './quser/implementations/user.repository';\nimport { type RoleRepositoryInterface } from './quser/interfaces/rolesRepository.interface';\nimport { type UserRepositoryInterface } from './quser/interfaces/userRepository.interface';\nimport { AdminRepository } from './sharing/implementations/admin.repository';\nimport { SharingDetailsRepository } from './sharing/implementations/details.repository';\nimport { DownloadManagerRepository } from './sharing/implementations/dm.repository';\nimport { DashboardRepository } from './sharing/implementations/dx.repository';\nimport { OrganizationRepository } from './sharing/implementations/organization.repository';\nimport { SharingRepository } from './sharing/implementations/sharing.repository';\nimport { AdminRepositoryInterface } from './sharing/interfaces/adminRepository.interface';\nimport { type DashboardRepositoryInterface } from './sharing/interfaces/dashboardRepository.interface';\nimport { type SharingDetailsRepositoryInterface } from './sharing/interfaces/detailsRepository.interface';\nimport { type DownloadManagerRepositoryInterface } from './sharing/interfaces/downloadManagerRepository.interface';\nimport { OrganizationRepositoryInterface } from './sharing/interfaces/organizationRepository.interface';\nimport { type SharingRepositoryInterface } from './sharing/interfaces/sharingRepository.interface';\n\ncontainer.register<SharingRepositoryInterface>(\n 'SharingRepository',\n SharingRepository,\n);\ncontainer.register<SharingDetailsRepositoryInterface>(\n 'SharingDetailsRepository',\n SharingDetailsRepository,\n);\ncontainer.register<UserRepositoryInterface>('UserRepository', UserRepository);\ncontainer.register<RoleRepositoryInterface>('RoleRepository', GroupRepository);\ncontainer.register<DashboardRepositoryInterface>(\n 'dxRepository',\n DashboardRepository,\n);\ncontainer.register<DownloadManagerRepositoryInterface>(\n 'dmRepository',\n DownloadManagerRepository,\n);\ncontainer.register<OrganizationRepositoryInterface>(\n 'OrganizationRepository',\n OrganizationRepository,\n);\ncontainer.register<AdminRepositoryInterface>(\n 'AdminRepository',\n AdminRepository,\n);\n\nexport const Context = container;\n","enum LOGIN_TYPES {\n composer = 'qrveyLogin',\n openIdComposer = 'OPENID_CREATORS',\n}\n\nexport function isComposer(type: string): boolean {\n return type === LOGIN_TYPES.composer || type === LOGIN_TYPES.openIdComposer;\n}\n","import { BaseUser } from './types/user.type';\n\nexport class User {\n private userId: string;\n private email: string;\n private groups: string[];\n private organization: string;\n\n constructor(params: BaseUser) {\n this.userId = params.userid;\n this.email = params.email;\n this.groups = params.groups;\n this.organization = params.organization;\n }\n\n public get getUserId(): string {\n return this.userId;\n }\n\n public get getEmail(): string {\n return this.email;\n }\n\n public get getGroups(): string[] {\n return this.groups;\n }\n\n public get getOrganization(): string {\n return this.organization;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ParamsFromTokenToUser } from '../../common/common.type';\nimport { ORGANIZATION_QRVEY } from '../../common/constants';\nimport { isComposer } from '../../common/util';\nimport { UserToken } from '../entities/types/user.type';\nimport { User } from '../entities/user';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\n@injectable()\nexport class FromTokenToUser {\n constructor(\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UserToken;\n }): Promise<ParamsFromTokenToUser> {\n const current = await this.userRepository.getOne(\n body.clientId || body.userId,\n );\n if (current) {\n const user = new User(current);\n return {\n userId: user.getUserId,\n roles: user.getGroups,\n orgId: body.orgId ?? ORGANIZATION_QRVEY,\n };\n }\n\n const inComposer = isComposer(body.loginType || '');\n if (!inComposer) {\n return {\n userId: body.clientId || '',\n roles: body.roles || [],\n orgId: body.orgId || '',\n };\n }\n\n return {\n userId: '',\n roles: [],\n orgId: '',\n };\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ORGANIZATION_QRVEY } from '../../common/constants';\nimport { isComposer } from '../../common/util';\nimport { UserRepositoryInterface } from '../interfaces/userRepository.interface';\n\n@injectable()\nexport class HasAdminRole {\n constructor(\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n ) {}\n\n public async execute({\n apiKey,\n clientId,\n orgId,\n userId,\n loginType,\n }: {\n apiKey?: string;\n clientId?: string;\n orgId?: string;\n userId?: string;\n loginType?: string;\n } = {}): Promise<boolean> {\n if (!userId) return false;\n\n const existingUser = await this.userRepository.getOne(userId);\n const isMasterKey =\n apiKey && (orgId === undefined || orgId === ORGANIZATION_QRVEY);\n if (isMasterKey && existingUser && (!clientId || clientId === userId))\n return true;\n\n const user = await this.userRepository.getList({\n data: { identifier: clientId ?? userId, role: 'administrator' },\n });\n const isAdmin = user.items.length > 0;\n\n if (isMasterKey && isAdmin) return true;\n\n const inComposer = isComposer(loginType || '');\n const isExternal =\n (!clientId && !inComposer) ||\n (orgId && orgId !== ORGANIZATION_QRVEY);\n if (isExternal) return false;\n\n if (isAdmin) return true;\n\n return false;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { AppAccessResponse } from '../../common/constants';\nimport { AdminRepositoryInterface } from '../interfaces/adminRepository.interface';\n\n@injectable()\nexport default class CheckAppAccess {\n constructor(\n @inject('AdminRepository')\n private readonly adminRepository: AdminRepositoryInterface,\n ) {}\n\n //TODO Need Test\n async execute({\n appId,\n userId,\n }: {\n appId: string;\n userId: string;\n }): Promise<AppAccessResponse> {\n // If no user is available, block access by default\n if (!userId)\n return {\n hasAccess: false,\n };\n\n // Fetch application status and global platform configuration in parallel\n const appInfo = await this.adminRepository.getApplicationInfo({\n appId,\n userId,\n });\n\n if (appInfo.status !== 200)\n return {\n hasAccess: false,\n };\n\n return {\n hasAccess: true,\n };\n }\n}\n","import { getId } from '@qrvey/id-generator';\n\nimport {\n BaseSharingDetails,\n CreateSharingDetails,\n ResponseSharingDetails,\n SharingDetailsTable,\n UpdateSharingDetails,\n} from './types/details.type';\nimport {\n ACCESS_LEVEL,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\n\nexport class SharingDetail {\n private sharingDetailsId: string;\n private assetId: string;\n private accessLevel: ACCESS_LEVEL;\n private accessLevelAsText: string;\n private orgId: string;\n private sharedWith: string;\n private sharedType: SHARE_TYPE;\n private sharedOrigin: SHARED_ORIGIN;\n private sharedEmail?: string;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharingDetails) {\n this.sharingDetailsId = params.sharingDetailsId;\n this.assetId = params.assetId;\n this.accessLevel = params.accessLevel;\n this.accessLevelAsText = this.convertAccessLevelToText(\n params.accessLevel,\n );\n this.orgId = params.orgId;\n this.sharedWith = params.sharedWith;\n this.sharedType = params.sharedType;\n this.sharedEmail = params.sharedEmail;\n this.sharedOrigin = params.sharedOrigin;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharingDetails): SharingDetail {\n const now = new Date().toISOString();\n const { sharedId, ...rest } = params;\n\n const obj: BaseSharingDetails = {\n ...rest,\n sharingDetailsId: sharedId ?? getId(),\n createdAt: now,\n updatedAt: now,\n };\n\n return new SharingDetail(obj);\n }\n\n static parse(params: SharingDetailsTable): SharingDetail {\n return new SharingDetail({\n sharingDetailsId: params.sharing_details_id,\n assetId: params.asset_id,\n accessLevel: params.access_level as ACCESS_LEVEL,\n orgId: params.org_id,\n sharedWith: params.shared_with,\n sharedType: params.shared_type as SHARE_TYPE,\n sharedEmail: params.shared_email,\n sharedOrigin: params.share_origin as SHARED_ORIGIN,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update(params: UpdateSharingDetails) {\n if (params.accessLevel || params.accessLevel === 0)\n this.accessLevel = params.accessLevel;\n if (params.sharedEmail) this.sharedEmail = params.sharedEmail;\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingDetailsTable {\n return {\n sharing_details_id: this.sharingDetailsId,\n asset_id: this.assetId,\n access_level: this.accessLevel,\n org_id: this.orgId,\n shared_with: this.sharedWith,\n shared_type: this.sharedType,\n shared_email: this.sharedEmail,\n share_origin: this.sharedOrigin,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharingDetails {\n return {\n sharingDetailsId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharingDetails {\n return {\n sharedId: this.sharingDetailsId,\n assetId: this.assetId,\n accessLevel: this.accessLevel,\n accessLevelAsText: this.accessLevelAsText,\n orgId: this.orgId,\n sharedWith: this.sharedWith,\n sharedType: this.sharedType,\n sharedEmail: this.sharedEmail,\n sharedOrigin: this.sharedOrigin,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getSharingDetailsId(): string {\n return this.sharingDetailsId;\n }\n\n public get getAccessLevel(): ACCESS_LEVEL {\n return this.accessLevel;\n }\n\n public get getAccessLevelAsText(): string {\n return this.accessLevelAsText;\n }\n\n private convertAccessLevelToText(level: number): string {\n return ACCESS_LEVEL[level] ?? 'UNKNOWN';\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ACCESS_LEVEL, ORGANIZATION_QRVEY, SHARE_TYPE } from '../../common/constants';\nimport { fromTokenToUser, HIERARCHY_SCOPE } from '../../index';\nimport { SharingDetail } from '../entities/details';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { OrganizationRepositoryInterface } from '../interfaces/organizationRepository.interface';\n\n@injectable()\nexport class CheckUserAccessLevel {\n constructor(\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n @inject('OrganizationRepository')\n private readonly organizationRepository: OrganizationRepositoryInterface,\n ) {}\n\n public async execute({\n userId,\n assetId,\n clientId,\n loginType,\n roles,\n orgId,\n }: {\n assetId: string;\n userId: string;\n clientId?: string;\n loginType?: string;\n roles?: string[];\n orgId?: string;\n }): Promise<{ level: ACCESS_LEVEL; levelAsText: string }> {\n const user = await fromTokenToUser({\n body: { userId, clientId, roles, orgId, loginType },\n });\n const currentUserOrgId = user.orgId || ORGANIZATION_QRVEY;\n const parents = await this.organizationRepository.getOrgTree(\n currentUserOrgId,\n HIERARCHY_SCOPE.PARENTS\n );\n parents.parentIds.push(currentUserOrgId);\n const details = await this.detailsRepository.getList({\n data: { assetId, user, parentOrgIds: parents.parentIds },\n sorting: [{ column: 'access_level', direction: 'DESC' }],\n });\n if (details.items.length === 0)\n return { level: ACCESS_LEVEL.NONE, levelAsText: 'NONE' };\n\n const priority = {\n [SHARE_TYPE.USER]: 4,\n [SHARE_TYPE.ROLE]: 3,\n [SHARE_TYPE.ORGANIZATION]: 2,\n [SHARE_TYPE.TENANTS]: 1\n };\n\n const priorityDetail = details.items.reduce((best, current) => {\n const bestPriority = priority[best.shared_type as SHARE_TYPE];\n const currentPriority = priority[current.shared_type as SHARE_TYPE];\n const isBetter =\n currentPriority > bestPriority ||\n (currentPriority === bestPriority &&\n current.access_level > best.access_level);\n\n if (isBetter) return current;\n return best;\n });\n\n const currentDetail = SharingDetail.parse(priorityDetail);\n return {\n level: currentDetail.getAccessLevel,\n levelAsText: currentDetail.getAccessLevelAsText,\n };\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\nexport interface Delete {\n assetId: string;\n}\n\n@injectable()\nexport class DeleteSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n ) {}\n\n public async execute({ body }: { body: Delete }): Promise<boolean | null> {\n const { assetId } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n const detailSharing = await this.sharingRepository.delete(assetId);\n return detailSharing;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n HIERARCHY_SCOPE,\n OrgHierarchyResult,\n} from '../entities/types/orgTreeResult';\nimport { OrganizationRepositoryInterface } from '../interfaces/organizationRepository.interface';\n\n@injectable()\nexport default class GetOrgTree {\n constructor(\n @inject('OrganizationRepository')\n private readonly organizationRepository: OrganizationRepositoryInterface,\n ) {}\n\n async execute(\n orgId: string,\n scope?: HIERARCHY_SCOPE,\n ): Promise<OrgHierarchyResult> {\n return this.organizationRepository.getOrgTree(\n orgId,\n scope ?? HIERARCHY_SCOPE.BOTH,\n );\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { Sorting } from '../../common/common.type';\nimport { SharingDetail } from '../entities/details';\nimport {\n GetSharingList,\n ListSharingDetails,\n SharingDetailsTable,\n} from '../entities/types/details.type';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\n@injectable()\nexport class ListSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: GetSharingList;\n }): Promise<ListSharingDetails | null> {\n const {\n data: { assetId },\n pagination,\n } = body;\n const sharing = await this.sharingRepository.getOne(assetId);\n\n if (!sharing) return null;\n\n const sorting: Array<Sorting> =\n body.sorting && body.sorting?.length > 0\n ? body.sorting\n : [{ column: 'created_at', direction: 'ASC' }];\n\n const detailSharing = await this.detailsRepository.getList({\n data: { assetId },\n pagination,\n sorting,\n });\n const items = detailSharing.items.map((item) =>\n SharingDetail.parse(item as SharingDetailsTable).toJSON(),\n );\n return {\n ...detailSharing,\n items,\n };\n }\n}\n","import {\n BaseSharing,\n CreateSharing,\n ResponseSharing,\n SharingTable,\n} from './types/sharing.type';\nimport { ASSET_TYPE } from '../../common/constants';\n\nexport class Sharing {\n private assetId: string;\n private assetType: ASSET_TYPE;\n private createdAt: string;\n private updatedAt: string;\n private deletedAt?: string;\n\n constructor(params: BaseSharing) {\n this.assetId = params.assetId;\n this.assetType = params.assetType;\n this.createdAt = params.createdAt;\n this.updatedAt = params.updatedAt;\n this.deletedAt = params.deletedAt;\n }\n\n static create(params: CreateSharing): Sharing {\n const now = new Date().toISOString();\n const obj: BaseSharing = {\n ...params,\n createdAt: now,\n updatedAt: now,\n };\n return new Sharing(obj);\n }\n\n static parse(params: SharingTable): Sharing {\n return new Sharing({\n assetId: params.asset_id,\n assetType: params.asset_type as ASSET_TYPE,\n createdAt: params.created_at,\n updatedAt: params.updated_at,\n deletedAt: params.deleted_at,\n });\n }\n\n update() {\n this.updatedAt = new Date().toISOString();\n }\n\n toTable(): SharingTable {\n return {\n asset_id: this.assetId,\n asset_type: this.assetType,\n created_at: this.createdAt,\n updated_at: this.updatedAt,\n deleted_at: this.deletedAt,\n };\n }\n\n toPlain(): BaseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n deletedAt: this.deletedAt,\n };\n }\n\n toJSON(): ResponseSharing {\n return {\n assetId: this.assetId,\n assetType: this.assetType,\n createdAt: this.createdAt,\n updatedAt: this.updatedAt,\n };\n }\n\n public get getAssetId(): string {\n return this.assetId;\n }\n\n public get getAssetType(): string {\n return this.assetType;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n} from '../../common/constants';\nimport { RoleRepositoryInterface } from '../../quser/interfaces/rolesRepository.interface';\nimport { UserRepositoryInterface } from '../../quser/interfaces/userRepository.interface';\nimport { SharingDetail } from '../entities/details';\nimport { Sharing } from '../entities/sharing';\nimport { ResponseSharingDetails } from '../entities/types/details.type';\nimport { DashboardRepositoryInterface } from '../interfaces/dashboardRepository.interface';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\nimport { DownloadManagerRepositoryInterface } from '../interfaces/downloadManagerRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\n\ninterface SharingWith {\n sharedId?: string;\n sharedWith: string;\n sharedOrigin: SHARED_ORIGIN;\n accessLevel: ACCESS_LEVEL;\n orgId?: string;\n sharedEmail?: string;\n sharedType: SHARE_TYPE;\n}\n\nexport interface UpsertInterface {\n assetId: string;\n assetType: ASSET_TYPE;\n add?: Array<SharingWith>;\n remove?: Array<{\n sharedId: string;\n }>;\n}\n\n@injectable()\nexport class UpsertSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n @inject('dxRepository')\n private readonly dxRepository: DashboardRepositoryInterface,\n @inject('dmRepository')\n private readonly dmRepository: DownloadManagerRepositoryInterface,\n @inject('UserRepository')\n private readonly userRepository: UserRepositoryInterface,\n @inject('RoleRepository')\n private readonly roleRepository: RoleRepositoryInterface,\n ) {}\n\n public async execute({\n body,\n }: {\n body: UpsertInterface;\n }): Promise<ResponseSharingDetails[]> {\n const assetId = body.assetId;\n\n const isValidAsset = await this.validateIfAssetExists(\n assetId,\n body.assetType,\n );\n if (!isValidAsset)\n throw new Error(`Asset with ID ${assetId} not found`);\n\n const sharing = await this.sharingRepository.getOne(assetId);\n let currentSharing: Sharing;\n if (sharing) {\n currentSharing = Sharing.parse(sharing);\n } else {\n const createSharing = {\n assetId,\n assetType: body.assetType,\n };\n currentSharing = Sharing.create(createSharing);\n await this.sharingRepository.create(currentSharing.toTable());\n }\n\n let updatedList: SharingDetail[] = [];\n if (body.add) updatedList = await this.addDetails(assetId, body.add);\n if (body.remove) await this.removeDetails(body.remove);\n\n currentSharing.update();\n await this.sharingRepository.patch(\n currentSharing.getAssetId,\n currentSharing.toTable(),\n );\n return updatedList.map((detail) => detail.toJSON());\n }\n\n private async validateIfAssetExists(\n assetId: string,\n assetType: ASSET_TYPE,\n ): Promise<boolean> {\n switch (assetType) {\n case ASSET_TYPE.DX: {\n const result = await this.dxRepository.get(assetId);\n if (result) return true;\n return false;\n }\n case ASSET_TYPE.DM: {\n return true;\n }\n\n default:\n return false;\n }\n }\n\n private async addDetails(\n assetId: string,\n list: Required<UpsertInterface>['add'],\n ): Promise<SharingDetail[]> {\n const sharingList: SharingDetail[] = [];\n for (const detail of list) {\n const currentDetail = await this.addSpecificDetail(assetId, detail);\n if (currentDetail) sharingList.push(currentDetail);\n }\n return sharingList;\n }\n\n private async addSpecificDetail(\n assetId: string,\n detail: SharingWith,\n ): Promise<SharingDetail | null> {\n let currentDetail: SharingDetail;\n const isValid = await this.validateIfSharedWithExist(detail);\n if (!isValid) return null;\n\n let sharingDetail = await this.detailsRepository.getBySharedWith(\n assetId,\n detail.sharedWith,\n );\n if (!sharingDetail && detail.sharedId) {\n sharingDetail = await this.detailsRepository.getOne(\n detail.sharedId,\n );\n }\n\n if (sharingDetail) {\n currentDetail = SharingDetail.parse(sharingDetail);\n currentDetail.update(detail);\n await this.detailsRepository.patch(\n currentDetail.getSharingDetailsId,\n currentDetail.toTable(),\n );\n } else {\n const createDetails = {\n assetId: assetId,\n orgId: detail.orgId ?? ORGANIZATION_QRVEY, //TODO If shareOrigin is INTERNAL then `ORGANIZATION_QRVEY` else fail\n ...detail,\n };\n currentDetail = SharingDetail.create(createDetails);\n await this.detailsRepository.create(currentDetail.toTable());\n }\n return currentDetail;\n }\n\n private async validateIfSharedWithExist(\n detail: SharingWith,\n ): Promise<boolean> {\n if (\n detail.sharedOrigin === SHARED_ORIGIN.EXTERNAL ||\n detail.sharedOrigin === SHARED_ORIGIN.UNKNOWN\n )\n return true;\n\n const isQrveyOrg =\n detail.sharedType === SHARE_TYPE.ORGANIZATION &&\n detail.sharedWith === ORGANIZATION_QRVEY;\n if (isQrveyOrg) return true; // NOTE: If more Internal Organization arrive, need to change this validation\n\n if (detail.sharedType === SHARE_TYPE.USER) {\n const user = await this.userRepository.getOne(detail.sharedWith);\n if (user) return true;\n }\n\n if (detail.sharedType === SHARE_TYPE.ROLE) {\n const role = await this.roleRepository.getOne(detail.sharedWith);\n if (role) return true;\n }\n\n return false;\n }\n\n private async removeDetails(\n list: Required<UpsertInterface>['remove'],\n ): Promise<void> {\n for (const detail of list) {\n await this.detailsRepository.delete(detail.sharedId);\n }\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport { ACCESS_LEVEL, ASSET_TYPE, SHARE_TYPE, SHARED_ORIGIN } from '../../common/constants';\nimport { Sharing } from '../entities/sharing';\nimport { SharingDetail } from '../entities/details';\nimport { AdminRepositoryInterface } from '../interfaces/adminRepository.interface';\nimport { SharingRepositoryInterface } from '../interfaces/sharingRepository.interface';\nimport { SharingDetailsRepositoryInterface } from '../interfaces/detailsRepository.interface';\n\n@injectable()\nexport class SetDefaultSharing {\n constructor(\n @inject('SharingRepository')\n private readonly sharingRepository: SharingRepositoryInterface,\n @inject('SharingDetailsRepository')\n private readonly detailsRepository: SharingDetailsRepositoryInterface,\n @inject('AdminRepository')\n private readonly adminRepository: AdminRepositoryInterface,\n ) {\n }\n\n public async execute({\n assetId,\n assetType,\n orgId,\n sharedOrigin,\n }: {\n assetId: string;\n assetType: ASSET_TYPE;\n orgId: string,\n sharedOrigin: SHARED_ORIGIN\n }): Promise<Sharing> {\n const sharingRecord = await this.sharingRepository.getOne(assetId);\n let currentSharing: Sharing;\n\n if (sharingRecord) {\n currentSharing = Sharing.parse(sharingRecord);\n } else {\n const createSharing = {\n assetId,\n assetType,\n };\n currentSharing = Sharing.create(createSharing);\n\n await this.sharingRepository.create(currentSharing.toTable());\n }\n\n const sharingDetailsTenants = SharingDetail.create({\n accessLevel: ACCESS_LEVEL.CAN_EDIT,\n assetId,\n sharedOrigin: sharedOrigin,\n sharedType: SHARE_TYPE.TENANTS,\n sharedWith: 'TENANTS',\n orgId,\n });\n\n\n const sharingDetailsOrg = SharingDetail.create({\n accessLevel: ACCESS_LEVEL.CAN_EDIT,\n assetId,\n sharedOrigin: sharedOrigin,\n sharedType: SHARE_TYPE.ORGANIZATION,\n sharedWith: orgId,\n orgId,\n });\n\n await Promise.all([\n this.detailsRepository.create(sharingDetailsTenants.toTable()),\n this.detailsRepository.create(sharingDetailsOrg.toTable()),\n ]);\n\n return currentSharing;\n }\n}\n","import { inject, injectable } from 'tsyringe';\n\nimport {\n APP_SHARING_STATUS,\n} from '../../common/constants';\nimport { OrganizationRepositoryInterface } from '../interfaces/organizationRepository.interface';\n\n@injectable()\nexport default class CheckOrgPermissions {\n constructor(\n @inject('OrganizationRepository')\n private readonly organizationRepository: OrganizationRepositoryInterface,\n ) {}\n\n //TODO Need Tes\n async execute({\n orgId,\n }: {\n orgId: string;\n }): Promise<{ privacy: APP_SHARING_STATUS }> {\n const hasPublicAccess = await this.organizationRepository.getOne(orgId);\n const privacy = hasPublicAccess?.effective_asset_sharing\n ? APP_SHARING_STATUS.PRIVATE\n : APP_SHARING_STATUS.PUBLIC;\n\n return { privacy };\n }\n}\n","import 'reflect-metadata';\nimport { Context } from './context';\nimport { FromTokenToUser } from './quser/services/fromTokenToUser';\nimport { HasAdminRole } from './quser/services/hasAdminRole';\nimport CheckAppAccess from './sharing/services/checkAppAccess';\nimport { CheckUserAccessLevel } from './sharing/services/checkUserAccessLevel';\nimport { DeleteSharing } from './sharing/services/delete';\nimport GetOrgTree from './sharing/services/getOrgTree';\nimport { ListSharing } from './sharing/services/list';\nimport { UpsertSharing } from './sharing/services/upsert';\nimport { SetDefaultSharing } from './sharing/services/upsertDefaultSharing';\nimport CheckOrgPermissions from './sharing/services/checkOrgPermissions';\n\nexport const api = {\n upsert: (...args: Parameters<UpsertSharing['execute']>) =>\n Context.resolve(UpsertSharing).execute(...args),\n list: (...args: Parameters<ListSharing['execute']>) =>\n Context.resolve(ListSharing).execute(...args),\n delete: (...args: Parameters<DeleteSharing['execute']>) =>\n Context.resolve(DeleteSharing).execute(...args),\n};\n\nexport const checkUserAccessLevel = (\n ...args: Parameters<CheckUserAccessLevel['execute']>\n) => Context.resolve(CheckUserAccessLevel).execute(...args);\n\nexport const checkAppAccess = (\n ...args: Parameters<CheckAppAccess['execute']>\n) => Context.resolve(CheckAppAccess).execute(...args);\n\nexport const getOrgTree = (...args: Parameters<GetOrgTree['execute']>) =>\n Context.resolve(GetOrgTree).execute(...args);\n\nexport const fromTokenToUser = (\n ...args: Parameters<FromTokenToUser['execute']>\n) => Context.resolve(FromTokenToUser).execute(...args);\n\nexport const hasAdminRole = (...args: Parameters<HasAdminRole['execute']>) =>\n Context.resolve(HasAdminRole).execute(...args);\n\nexport const setDefaultSharing = (\n ...args: Parameters<SetDefaultSharing['execute']>\n) => Context.resolve(SetDefaultSharing).execute(...args);\n\nexport const checkOrgPermissions = (\n ...args: Parameters<CheckOrgPermissions['execute']>\n) => Context.resolve(CheckOrgPermissions).execute(...args);\n\nexport {\n ACCESS_LEVEL,\n ASSET_TYPE,\n ORGANIZATION_QRVEY,\n SHARED_ORIGIN,\n SHARE_TYPE,\n APP_SHARING_STATUS,\n USER_ANONYMOUS,\n} from './common/constants';\n\nexport { HIERARCHY_SCOPE } from './sharing/entities/types/orgTreeResult';\nexport { GetSharingList } from './sharing/entities/types/details.type';\n"]}
@@ -201,7 +201,7 @@ declare const hasAdminRole: (args_0?: {
201
201
  userId?: string;
202
202
  loginType?: string;
203
203
  } | undefined) => Promise<boolean>;
204
- declare const upsertDefaultSharing: (args_0: {
204
+ declare const setDefaultSharing: (args_0: {
205
205
  assetId: string;
206
206
  assetType: ASSET_TYPE;
207
207
  orgId: string;
@@ -213,4 +213,4 @@ declare const checkOrgPermissions: (args_0: {
213
213
  privacy: APP_SHARING_STATUS;
214
214
  }>;
215
215
 
216
- export { ACCESS_LEVEL, APP_SHARING_STATUS, ASSET_TYPE, type GetSharingList, HIERARCHY_SCOPE, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, USER_ANONYMOUS, api, checkAppAccess, checkOrgPermissions, checkUserAccessLevel, fromTokenToUser, getOrgTree, hasAdminRole, upsertDefaultSharing };
216
+ export { ACCESS_LEVEL, APP_SHARING_STATUS, ASSET_TYPE, type GetSharingList, HIERARCHY_SCOPE, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, USER_ANONYMOUS, api, checkAppAccess, checkOrgPermissions, checkUserAccessLevel, fromTokenToUser, getOrgTree, hasAdminRole, setDefaultSharing };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qrvey/assets-sharing",
3
- "version": "0.3.4-beta.2503",
3
+ "version": "0.3.4-beta.2514",
4
4
  "types": "dist/types/index.d.ts",
5
5
  "main": "dist/cjs/index.js",
6
6
  "exports": {