@qrvey/assets-sharing 0.3.4-dev.2221 → 0.3.5-1236-beta.1

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.
Files changed (52) hide show
  1. package/dist/cjs/common/constants.js +3 -14
  2. package/dist/cjs/common/constants.js.map +1 -1
  3. package/dist/cjs/common/util.js +5 -0
  4. package/dist/cjs/common/util.js.map +1 -1
  5. package/dist/cjs/context.js +2 -0
  6. package/dist/cjs/context.js.map +1 -1
  7. package/dist/cjs/index.js +8 -6
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/quser/implementations/group.model.js +3 -0
  10. package/dist/cjs/quser/implementations/group.model.js.map +1 -1
  11. package/dist/cjs/quser/implementations/group.repository.js +22 -1
  12. package/dist/cjs/quser/implementations/group.repository.js.map +1 -1
  13. package/dist/cjs/quser/implementations/permission.repository.js +27 -0
  14. package/dist/cjs/quser/implementations/permission.repository.js.map +1 -0
  15. package/dist/cjs/quser/interfaces/permissionsRepository.interface.js +3 -0
  16. package/dist/cjs/quser/interfaces/permissionsRepository.interface.js.map +1 -0
  17. package/dist/cjs/quser/services/fromTokenToUser.js +5 -1
  18. package/dist/cjs/quser/services/fromTokenToUser.js.map +1 -1
  19. package/dist/cjs/quser/services/hasAdminRole.js +31 -12
  20. package/dist/cjs/quser/services/hasAdminRole.js.map +1 -1
  21. package/dist/cjs/quser/services/hasSharingPermission.js +47 -0
  22. package/dist/cjs/quser/services/hasSharingPermission.js.map +1 -0
  23. package/dist/cjs/sharing/entities/details.js +13 -2
  24. package/dist/cjs/sharing/entities/details.js.map +1 -1
  25. package/dist/cjs/sharing/entities/sharing.js +0 -12
  26. package/dist/cjs/sharing/entities/sharing.js.map +1 -1
  27. package/dist/cjs/sharing/implementations/admin.repository.js +0 -17
  28. package/dist/cjs/sharing/implementations/admin.repository.js.map +1 -1
  29. package/dist/cjs/sharing/implementations/details.repository.js +13 -4
  30. package/dist/cjs/sharing/implementations/details.repository.js.map +1 -1
  31. package/dist/cjs/sharing/implementations/organization.repository.js.map +1 -1
  32. package/dist/cjs/sharing/services/checkAppAccess.js +5 -1
  33. package/dist/cjs/sharing/services/checkAppAccess.js.map +1 -1
  34. package/dist/cjs/sharing/services/checkOrgPermissions.js +5 -1
  35. package/dist/cjs/sharing/services/checkOrgPermissions.js.map +1 -1
  36. package/dist/cjs/sharing/services/checkUserAccessLevel.js +30 -7
  37. package/dist/cjs/sharing/services/checkUserAccessLevel.js.map +1 -1
  38. package/dist/cjs/sharing/services/delete.js +5 -1
  39. package/dist/cjs/sharing/services/delete.js.map +1 -1
  40. package/dist/cjs/sharing/services/getOrgTree.js +5 -1
  41. package/dist/cjs/sharing/services/getOrgTree.js.map +1 -1
  42. package/dist/cjs/sharing/services/list.js +5 -1
  43. package/dist/cjs/sharing/services/list.js.map +1 -1
  44. package/dist/cjs/sharing/services/upsert.js +11 -2
  45. package/dist/cjs/sharing/services/upsert.js.map +1 -1
  46. package/dist/cjs/sharing/services/upsertDefaultSharing.js +36 -16
  47. package/dist/cjs/sharing/services/upsertDefaultSharing.js.map +1 -1
  48. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  49. package/dist/esm/index.mjs +928 -410
  50. package/dist/esm/index.mjs.map +1 -1
  51. package/dist/types/index.d.ts +268 -62
  52. package/package.json +11 -8
@@ -6,7 +6,6 @@ import { getId } from '@qrvey/id-generator';
6
6
 
7
7
  var __defProp = Object.defineProperty;
8
8
  var __defProps = Object.defineProperties;
9
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
9
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
11
10
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
11
  var __hasOwnProp = Object.prototype.hasOwnProperty;
@@ -24,14 +23,20 @@ var __spreadValues = (a, b) => {
24
23
  return a;
25
24
  };
26
25
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
27
- var __decorateClass = (decorators, target, key, kind) => {
28
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
29
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
30
- if (decorator = decorators[i])
31
- result = (decorator(result)) || result;
32
- return result;
26
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
27
+ var __objRest = (source, exclude) => {
28
+ var target = {};
29
+ for (var prop in source)
30
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
31
+ target[prop] = source[prop];
32
+ if (source != null && __getOwnPropSymbols)
33
+ for (var prop of __getOwnPropSymbols(source)) {
34
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
35
+ target[prop] = source[prop];
36
+ }
37
+ return target;
33
38
  };
34
- var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index);
39
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
35
40
 
36
41
  // src/common/constants.ts
37
42
  var ENVIRONMENT = {
@@ -46,66 +51,67 @@ var DATABASE_INFO = {
46
51
  TABLE_PREFIX: ENVIRONMENT.TABLE_PREFIX
47
52
  };
48
53
  var ORGANIZATION_QRVEY = "org:0";
49
- var ORGANIZATION_ANONYMOUS = "anonymous";
50
- var ASSET_TYPE = /* @__PURE__ */ ((ASSET_TYPE2) => {
54
+ var USER_ANONYMOUS = "anonymous";
55
+ var ASSET_TYPE = /* @__PURE__ */ (function(ASSET_TYPE2) {
51
56
  ASSET_TYPE2["DX"] = "DX";
52
57
  ASSET_TYPE2["DM"] = "DM";
53
58
  return ASSET_TYPE2;
54
- })(ASSET_TYPE || {});
55
- var SHARED_ORIGIN = /* @__PURE__ */ ((SHARED_ORIGIN3) => {
56
- SHARED_ORIGIN3["INTERNAL"] = "INTERNAL";
57
- SHARED_ORIGIN3["EXTERNAL"] = "EXTERNAL";
58
- SHARED_ORIGIN3["UNKNOWN"] = "UNKNOWN";
59
- return SHARED_ORIGIN3;
60
- })(SHARED_ORIGIN || {});
61
- var SHARE_TYPE = /* @__PURE__ */ ((SHARE_TYPE3) => {
62
- SHARE_TYPE3["USER"] = "USER";
63
- SHARE_TYPE3["ROLE"] = "ROLE";
64
- SHARE_TYPE3["ORGANIZATION"] = "ORGANIZATION";
65
- return SHARE_TYPE3;
66
- })(SHARE_TYPE || {});
67
- var ACCESS_LEVEL = /* @__PURE__ */ ((ACCESS_LEVEL3) => {
68
- ACCESS_LEVEL3[ACCESS_LEVEL3["NONE"] = 0] = "NONE";
69
- ACCESS_LEVEL3[ACCESS_LEVEL3["CAN_USE"] = 1] = "CAN_USE";
70
- ACCESS_LEVEL3[ACCESS_LEVEL3["CAN_EDIT"] = 2] = "CAN_EDIT";
71
- ACCESS_LEVEL3[ACCESS_LEVEL3["ADMIN"] = 4] = "ADMIN";
72
- return ACCESS_LEVEL3;
73
- })(ACCESS_LEVEL || {});
74
- var SHARING_MODE = /* @__PURE__ */ ((SHARING_MODE2) => {
75
- SHARING_MODE2[SHARING_MODE2["PRIVATE"] = 0] = "PRIVATE";
76
- SHARING_MODE2[SHARING_MODE2["SAME_AS_APP"] = 1] = "SAME_AS_APP";
77
- SHARING_MODE2[SHARING_MODE2["SHARED"] = 2] = "SHARED";
78
- return SHARING_MODE2;
79
- })(SHARING_MODE || {});
80
- var APP_SHARING_STATUS = /* @__PURE__ */ ((APP_SHARING_STATUS2) => {
59
+ })({});
60
+ var SHARED_ORIGIN = /* @__PURE__ */ (function(SHARED_ORIGIN2) {
61
+ SHARED_ORIGIN2["INTERNAL"] = "INTERNAL";
62
+ SHARED_ORIGIN2["EXTERNAL"] = "EXTERNAL";
63
+ SHARED_ORIGIN2["UNKNOWN"] = "UNKNOWN";
64
+ return SHARED_ORIGIN2;
65
+ })({});
66
+ var SHARE_TYPE = /* @__PURE__ */ (function(SHARE_TYPE2) {
67
+ SHARE_TYPE2["USER"] = "USER";
68
+ SHARE_TYPE2["ROLE"] = "ROLE";
69
+ SHARE_TYPE2["ORGANIZATION"] = "ORGANIZATION";
70
+ SHARE_TYPE2["TENANT"] = "TENANT";
71
+ return SHARE_TYPE2;
72
+ })({});
73
+ var ACCESS_LEVEL = /* @__PURE__ */ (function(ACCESS_LEVEL2) {
74
+ ACCESS_LEVEL2[ACCESS_LEVEL2["NONE"] = 0] = "NONE";
75
+ ACCESS_LEVEL2[ACCESS_LEVEL2["CAN_USE"] = 1] = "CAN_USE";
76
+ ACCESS_LEVEL2[ACCESS_LEVEL2["CAN_EDIT"] = 2] = "CAN_EDIT";
77
+ ACCESS_LEVEL2[ACCESS_LEVEL2["ADMIN"] = 4] = "ADMIN";
78
+ return ACCESS_LEVEL2;
79
+ })({});
80
+ var APP_SHARING_STATUS = /* @__PURE__ */ (function(APP_SHARING_STATUS2) {
81
81
  APP_SHARING_STATUS2["PUBLIC"] = "public";
82
82
  APP_SHARING_STATUS2["PRIVATE"] = "private";
83
83
  APP_SHARING_STATUS2["SHARED"] = "shared";
84
84
  return APP_SHARING_STATUS2;
85
- })(APP_SHARING_STATUS || {});
85
+ })({});
86
86
  var LIMIT_PER_PAGE = 10;
87
87
 
88
88
  // src/quser/implementations/group.model.ts
89
- var GroupModel = class extends CrudSchema {
89
+ var _GroupModel = class _GroupModel extends CrudSchema {
90
90
  };
91
- GroupModel.table = {
91
+ __name(_GroupModel, "GroupModel");
92
+ __publicField(_GroupModel, "table", {
92
93
  name: `${DATABASE_INFO.SERVER_PREFIX}Groups`,
93
94
  alias: "qv_groups"
94
- };
95
- GroupModel.columns = {
95
+ });
96
+ __publicField(_GroupModel, "columns", {
96
97
  groupid: {
97
98
  type: "string"
99
+ },
100
+ name: {
101
+ type: "string"
98
102
  }
99
- };
100
- GroupModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
103
+ });
104
+ __publicField(_GroupModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
105
+ var GroupModel = _GroupModel;
101
106
  var poolClient;
102
107
  function getPoolClient() {
103
108
  if (!poolClient) poolClient = getDbPool();
104
109
  return poolClient;
105
110
  }
111
+ __name(getPoolClient, "getPoolClient");
106
112
 
107
113
  // src/common/persistence/base.ts
108
- var BaseRepository = class extends CrudService {
114
+ var _BaseRepository = class _BaseRepository extends CrudService {
109
115
  constructor(schema) {
110
116
  super(schema, getPoolClient());
111
117
  }
@@ -113,27 +119,81 @@ var BaseRepository = class extends CrudService {
113
119
  return buildFilter(attribute, value, operator);
114
120
  }
115
121
  };
122
+ __name(_BaseRepository, "BaseRepository");
123
+ var BaseRepository = _BaseRepository;
116
124
 
117
125
  // src/quser/implementations/group.repository.ts
118
- var GroupRepository = class extends BaseRepository {
126
+ var _GroupRepository = class _GroupRepository extends BaseRepository {
119
127
  constructor() {
120
128
  super(GroupModel);
121
129
  }
122
130
  async getOne(identifier) {
123
131
  const params = {
124
- filters: [this.filter("groupid", identifier)]
132
+ filters: {
133
+ OR: [
134
+ this.filter("groupid", identifier),
135
+ this.filter("name", identifier)
136
+ ]
137
+ }
125
138
  };
126
139
  const response = await super.findItem(params);
127
140
  return response;
128
141
  }
142
+ async getByName(name) {
143
+ const params = {
144
+ filters: {
145
+ OR: [
146
+ this.filter("groupid", name),
147
+ this.filter("name", name)
148
+ ]
149
+ }
150
+ };
151
+ const response = await super.findItem(params);
152
+ if (!response) return null;
153
+ const data = {
154
+ groupid: response.groupid,
155
+ permissions: {
156
+ contentAdministration: response.permissions.some((p) => p.feature === "contentAdministration" && p.permission === "edit"),
157
+ assetSharing: response.permissions.some((p) => p.feature === "assetSharing" && p.permission === "edit")
158
+ }
159
+ };
160
+ return data;
161
+ }
129
162
  };
130
- var UserModel = class extends CrudSchema {
163
+ __name(_GroupRepository, "GroupRepository");
164
+ var GroupRepository = _GroupRepository;
165
+
166
+ // src/quser/implementations/permission.repository.ts
167
+ var _PermissionRepository = class _PermissionRepository {
168
+ async getPermission(userIdentifier) {
169
+ var _a, _b, _c, _d;
170
+ const url = `${ENVIRONMENT.DOMAIN}/api/admin/v5/user/${userIdentifier}/permissions`;
171
+ const headers = {
172
+ "x-api-key": ENVIRONMENT.API_KEY
173
+ };
174
+ const requestOptions = {
175
+ method: "GET",
176
+ headers
177
+ };
178
+ const response = await fetch(url, requestOptions);
179
+ if (!response.ok) return null;
180
+ const data = await response.json();
181
+ return {
182
+ contentAdministration: (_b = (_a = data == null ? void 0 : data.settings) == null ? void 0 : _a.contentAdministration) != null ? _b : false,
183
+ assetSharing: (_d = (_c = data == null ? void 0 : data.settings) == null ? void 0 : _c.assetSharing) != null ? _d : false
184
+ };
185
+ }
186
+ };
187
+ __name(_PermissionRepository, "PermissionRepository");
188
+ var PermissionRepository = _PermissionRepository;
189
+ var _UserModel = class _UserModel extends CrudSchema {
131
190
  };
132
- UserModel.table = {
191
+ __name(_UserModel, "UserModel");
192
+ __publicField(_UserModel, "table", {
133
193
  name: `${DATABASE_INFO.SERVER_PREFIX}Users`,
134
194
  alias: "qv_users"
135
- };
136
- UserModel.columns = {
195
+ });
196
+ __publicField(_UserModel, "columns", {
137
197
  userid: {
138
198
  type: "string",
139
199
  primary: true,
@@ -142,17 +202,20 @@ UserModel.columns = {
142
202
  groups: {
143
203
  type: "array"
144
204
  }
145
- };
146
- UserModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
205
+ });
206
+ __publicField(_UserModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
207
+ var UserModel = _UserModel;
147
208
 
148
209
  // src/quser/implementations/user.repository.ts
149
- var UserRepository = class extends BaseRepository {
210
+ var _UserRepository = class _UserRepository extends BaseRepository {
150
211
  constructor() {
151
212
  super(UserModel);
152
213
  }
153
214
  async getOne(identifier) {
154
215
  const params = {
155
- filters: [this.filter("userid", identifier)]
216
+ filters: [
217
+ this.filter("userid", identifier)
218
+ ]
156
219
  };
157
220
  const response = await super.findItem(params);
158
221
  return response;
@@ -168,7 +231,9 @@ var UserRepository = class extends BaseRepository {
168
231
  return response;
169
232
  }
170
233
  };
171
- var AdminRepository = class {
234
+ __name(_UserRepository, "UserRepository");
235
+ var UserRepository = _UserRepository;
236
+ var _AdminRepository = class _AdminRepository {
172
237
  async getApplicationInfo(body) {
173
238
  var _a;
174
239
  const url = `${ENVIRONMENT.DOMAIN}/devapi/v4/user/${body.userId}/app/${body.appId}`;
@@ -190,44 +255,53 @@ var AdminRepository = class {
190
255
  }
191
256
  };
192
257
  }
193
- async getPlatformConfiguration() {
194
- var _a, _b, _c;
195
- const url = `${ENVIRONMENT.DOMAIN}/admin/api/v5/customization/features/platform`;
196
- const headers = {
197
- "x-api-key": ENVIRONMENT.API_KEY
198
- };
199
- const requestOptions = {
200
- method: "GET",
201
- headers
202
- };
203
- const response = await fetch(url, requestOptions);
204
- const data = await response.json();
205
- return {
206
- status: response.status,
207
- defaultSharingMode: (_c = (_b = (_a = data == null ? void 0 : data.Item) == null ? void 0 : _a.settings) == null ? void 0 : _b.defaultSharingMode) != null ? _c : 0 /* PRIVATE */
208
- };
209
- }
210
258
  };
211
- var SharingDetailsModel = class extends CrudSchema {
259
+ __name(_AdminRepository, "AdminRepository");
260
+ var AdminRepository = _AdminRepository;
261
+ var _SharingDetailsModel = class _SharingDetailsModel extends CrudSchema {
212
262
  };
213
- SharingDetailsModel.table = {
263
+ __name(_SharingDetailsModel, "SharingDetailsModel");
264
+ __publicField(_SharingDetailsModel, "table", {
214
265
  name: `${DATABASE_INFO.SERVER_PREFIX}_sharing_details`,
215
266
  alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing_details`
216
- };
217
- SharingDetailsModel.columns = {
218
- sharing_details_id: { type: "string", primary: true },
219
- asset_id: { type: "string" },
220
- access_level: { type: "numeric" },
221
- org_id: { type: "string" },
222
- shared_with: { type: "string" },
223
- shared_type: { type: "string" },
224
- shared_email: { type: "string" },
225
- share_origin: { type: "string" },
226
- created_at: { type: "date" },
227
- updated_at: { type: "date" },
228
- deleted_at: { type: "date" }
229
- };
230
- SharingDetailsModel.indexes = {
267
+ });
268
+ __publicField(_SharingDetailsModel, "columns", {
269
+ sharing_details_id: {
270
+ type: "string",
271
+ primary: true
272
+ },
273
+ asset_id: {
274
+ type: "string"
275
+ },
276
+ access_level: {
277
+ type: "numeric"
278
+ },
279
+ org_id: {
280
+ type: "string"
281
+ },
282
+ shared_with: {
283
+ type: "string"
284
+ },
285
+ shared_type: {
286
+ type: "string"
287
+ },
288
+ shared_email: {
289
+ type: "string"
290
+ },
291
+ share_origin: {
292
+ type: "string"
293
+ },
294
+ created_at: {
295
+ type: "date"
296
+ },
297
+ updated_at: {
298
+ type: "date"
299
+ },
300
+ deleted_at: {
301
+ type: "date"
302
+ }
303
+ });
304
+ __publicField(_SharingDetailsModel, "indexes", {
231
305
  sharingDetailsOrgId: {
232
306
  name: "sharing_details_org_id_index",
233
307
  columns: [
@@ -291,18 +365,21 @@ SharingDetailsModel.indexes = {
291
365
  "share_origin"
292
366
  ]
293
367
  }
294
- };
295
- SharingDetailsModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
296
- SharingDetailsModel.usePool = true;
368
+ });
369
+ __publicField(_SharingDetailsModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
370
+ __publicField(_SharingDetailsModel, "usePool", true);
371
+ var SharingDetailsModel = _SharingDetailsModel;
297
372
 
298
373
  // src/sharing/implementations/details.repository.ts
299
- var SharingDetailsRepository = class extends BaseRepository {
374
+ var _SharingDetailsRepository = class _SharingDetailsRepository extends BaseRepository {
300
375
  constructor() {
301
376
  super(SharingDetailsModel);
302
377
  }
303
378
  async getOne(sharingDetailId) {
304
379
  const params = {
305
- filters: [this.filter("sharing_details_id", sharingDetailId)]
380
+ filters: [
381
+ this.filter("sharing_details_id", sharingDetailId)
382
+ ]
306
383
  };
307
384
  const response = await super.findItem(params);
308
385
  return response;
@@ -319,6 +396,7 @@ var SharingDetailsRepository = class extends BaseRepository {
319
396
  return response;
320
397
  }
321
398
  async getList(options) {
399
+ var _a;
322
400
  const assetIndex = SharingDetailsModel.indexes.sharingDetailsAssetId;
323
401
  const pagination = this.getPagination(options.pagination);
324
402
  const params = {
@@ -328,7 +406,9 @@ var SharingDetailsRepository = class extends BaseRepository {
328
406
  columns: assetIndex.columns
329
407
  }
330
408
  };
331
- const filterList = [this.filter("asset_id", options.data.assetId)];
409
+ const filterList = [
410
+ this.filter("asset_id", options.data.assetId)
411
+ ];
332
412
  if (options.filters) {
333
413
  options.filters.forEach((filter) => {
334
414
  filterList.push(this.filter(filter.column, filter.value));
@@ -336,11 +416,7 @@ var SharingDetailsRepository = class extends BaseRepository {
336
416
  }
337
417
  params.filters = filterList;
338
418
  if (options.data.user) {
339
- const currentFilter = this.getUserFilter(
340
- options.data.user,
341
- filterList
342
- );
343
- params.filters = currentFilter;
419
+ params.filters = this.getUserFilter(options.data.user, (_a = options.data.parentOrgIds) != null ? _a : [], filterList);
344
420
  }
345
421
  if (options.sorting) params.sorting = options.sorting;
346
422
  const response = await super.find(params);
@@ -351,10 +427,9 @@ var SharingDetailsRepository = class extends BaseRepository {
351
427
  return response;
352
428
  }
353
429
  async patch(sharingDetailId, details) {
354
- await super.update(
355
- [this.filter("sharing_details_id", sharingDetailId)],
356
- details
357
- );
430
+ await super.update([
431
+ this.filter("sharing_details_id", sharingDetailId)
432
+ ], details);
358
433
  return true;
359
434
  }
360
435
  async delete(sharingDetailId) {
@@ -370,9 +445,12 @@ var SharingDetailsRepository = class extends BaseRepository {
370
445
  from: (_b = options == null ? void 0 : options.from) != null ? _b : void 0
371
446
  };
372
447
  }
373
- getUserFilter(user, currentFilters) {
448
+ getUserFilter(user, parentsOrgIds, currentFilters) {
374
449
  const { userId, roles } = user;
375
450
  const orgId = user.orgId === "" ? ORGANIZATION_QRVEY : user.orgId;
451
+ if (!parentsOrgIds.includes(ORGANIZATION_QRVEY)) {
452
+ parentsOrgIds.push(ORGANIZATION_QRVEY);
453
+ }
376
454
  const sharing = {
377
455
  OR: [
378
456
  {
@@ -388,6 +466,12 @@ var SharingDetailsRepository = class extends BaseRepository {
388
466
  this.buildFilter("shared_type", "ORGANIZATION"),
389
467
  this.buildFilter("org_id", orgId)
390
468
  ]
469
+ },
470
+ {
471
+ AND: [
472
+ this.buildFilter("shared_type", "TENANT"),
473
+ this.buildFilter("org_id", parentsOrgIds, "IN")
474
+ ]
391
475
  }
392
476
  ]
393
477
  };
@@ -403,32 +487,40 @@ var SharingDetailsRepository = class extends BaseRepository {
403
487
  const filter = [];
404
488
  if (currentFilters) filter.push(...currentFilters);
405
489
  filter.push(sharing);
406
- return { AND: filter };
490
+ return {
491
+ AND: filter
492
+ };
407
493
  }
408
494
  };
409
- var DownloadManagerSchema = class extends CrudSchema {
495
+ __name(_SharingDetailsRepository, "SharingDetailsRepository");
496
+ var SharingDetailsRepository = _SharingDetailsRepository;
497
+ var _DownloadManagerSchema = class _DownloadManagerSchema extends CrudSchema {
410
498
  };
411
- DownloadManagerSchema.table = {
499
+ __name(_DownloadManagerSchema, "DownloadManagerSchema");
500
+ __publicField(_DownloadManagerSchema, "table", {
412
501
  name: `${DATABASE_INFO.SERVER_PREFIX}DownloadManager`,
413
502
  alias: `${DATABASE_INFO.TABLE_PREFIX}_download_manager`
414
- };
415
- DownloadManagerSchema.columns = {
503
+ });
504
+ __publicField(_DownloadManagerSchema, "columns", {
416
505
  downloadManagerId: {
417
506
  primary: true,
418
507
  type: "String",
419
508
  columnId: true
420
509
  }
421
- };
422
- DownloadManagerSchema.schema = "exports";
423
- DownloadManagerSchema.usePool = true;
510
+ });
511
+ __publicField(_DownloadManagerSchema, "schema", "exports");
512
+ __publicField(_DownloadManagerSchema, "usePool", true);
513
+ var DownloadManagerSchema = _DownloadManagerSchema;
424
514
 
425
515
  // src/sharing/implementations/dm.repository.ts
426
- var DownloadManagerRepository = class extends BaseRepository {
516
+ var _DownloadManagerRepository = class _DownloadManagerRepository extends BaseRepository {
427
517
  constructor() {
428
518
  super(DownloadManagerSchema);
429
519
  }
430
520
  async get(identifier) {
431
- const filterList = [this.filter("downloadManagerId", identifier)];
521
+ const filterList = [
522
+ this.filter("downloadManagerId", identifier)
523
+ ];
432
524
  const params = {
433
525
  filters: filterList
434
526
  };
@@ -436,38 +528,62 @@ var DownloadManagerRepository = class extends BaseRepository {
436
528
  return response;
437
529
  }
438
530
  };
439
- var DashboardSchema = class extends CrudSchema {
531
+ __name(_DownloadManagerRepository, "DownloadManagerRepository");
532
+ var DownloadManagerRepository = _DownloadManagerRepository;
533
+ var _DashboardSchema = class _DashboardSchema extends CrudSchema {
440
534
  };
441
- DashboardSchema.table = {
535
+ __name(_DashboardSchema, "DashboardSchema");
536
+ __publicField(_DashboardSchema, "table", {
442
537
  name: `${DATABASE_INFO.SERVER_PREFIX}_dx_dashboard`,
443
538
  alias: `${DATABASE_INFO.TABLE_PREFIX}_dashboard`
444
- };
445
- DashboardSchema.columns = {
446
- ResourceUID: { type: "string", primary: true },
447
- dashboardId: { type: "string" },
448
- contentId: { type: "string" },
449
- userId: { type: "string" },
450
- ownerId: { type: "string" },
451
- appId: { type: "string" },
452
- qvAttributes: { type: "object" }
453
- };
454
- DashboardSchema.indexes = {
539
+ });
540
+ __publicField(_DashboardSchema, "columns", {
541
+ ResourceUID: {
542
+ type: "string",
543
+ primary: true
544
+ },
545
+ dashboardId: {
546
+ type: "string"
547
+ },
548
+ contentId: {
549
+ type: "string"
550
+ },
551
+ userId: {
552
+ type: "string"
553
+ },
554
+ ownerId: {
555
+ type: "string"
556
+ },
557
+ appId: {
558
+ type: "string"
559
+ },
560
+ qvAttributes: {
561
+ type: "object"
562
+ }
563
+ });
564
+ __publicField(_DashboardSchema, "indexes", {
455
565
  ResourceUID: {
456
566
  name: "MetadataByResource",
457
- columns: ["Metadata", "ResourceUID"]
567
+ columns: [
568
+ "Metadata",
569
+ "ResourceUID"
570
+ ]
458
571
  }
459
- };
460
- DashboardSchema.schema = "dashboard_x";
461
- DashboardSchema.usePool = true;
572
+ });
573
+ __publicField(_DashboardSchema, "schema", "dashboard_x");
574
+ __publicField(_DashboardSchema, "usePool", true);
575
+ var DashboardSchema = _DashboardSchema;
462
576
 
463
577
  // src/sharing/implementations/dx.repository.ts
464
- var DashboardRepository = class extends BaseRepository {
578
+ var _DashboardRepository = class _DashboardRepository extends BaseRepository {
465
579
  constructor() {
466
580
  super(DashboardSchema);
467
581
  }
468
582
  async get(identifier) {
469
583
  const uid = `DASHBOARD=${identifier}&BRANCH=MAIN`;
470
- const filterList = [this.filter("ResourceUID", uid)];
584
+ const filterList = [
585
+ this.filter("ResourceUID", uid)
586
+ ];
471
587
  const params = {
472
588
  filters: filterList
473
589
  };
@@ -475,58 +591,88 @@ var DashboardRepository = class extends BaseRepository {
475
591
  return response;
476
592
  }
477
593
  };
478
- var OrganizationModel = class extends CrudSchema {
594
+ __name(_DashboardRepository, "DashboardRepository");
595
+ var DashboardRepository = _DashboardRepository;
596
+ var _OrganizationModel = class _OrganizationModel extends CrudSchema {
479
597
  };
480
- OrganizationModel.table = {
598
+ __name(_OrganizationModel, "OrganizationModel");
599
+ __publicField(_OrganizationModel, "table", {
481
600
  name: "qv_organizations",
482
601
  alias: `${DATABASE_INFO.TABLE_PREFIX}_organizations`
483
- };
484
- OrganizationModel.columns = {
485
- orgId: { type: "string", primary: true },
486
- name: { type: "string" },
487
- parent_org_id: { type: "string" },
488
- org_path: { type: "string" },
489
- asset_sharing: { type: "boolean" },
490
- effective_asset_sharing: { type: "boolean" },
491
- created_at: { type: "string" },
492
- updated_at: { type: "string" }
493
- };
494
- OrganizationModel.indexes = {
495
- org_path: { name: "idx_qv_orgs_org_path_gist", columns: ["org_path"] },
602
+ });
603
+ __publicField(_OrganizationModel, "columns", {
604
+ orgId: {
605
+ type: "string",
606
+ primary: true
607
+ },
608
+ name: {
609
+ type: "string"
610
+ },
611
+ parent_org_id: {
612
+ type: "string"
613
+ },
614
+ org_path: {
615
+ type: "string"
616
+ },
617
+ asset_sharing: {
618
+ type: "boolean"
619
+ },
620
+ effective_asset_sharing: {
621
+ type: "boolean"
622
+ },
623
+ created_at: {
624
+ type: "string"
625
+ },
626
+ updated_at: {
627
+ type: "string"
628
+ }
629
+ });
630
+ __publicField(_OrganizationModel, "indexes", {
631
+ org_path: {
632
+ name: "idx_qv_orgs_org_path_gist",
633
+ columns: [
634
+ "org_path"
635
+ ]
636
+ },
496
637
  parent_org_id: {
497
638
  name: "idx_qv_orgs_parent",
498
- columns: ["parent_org_id"]
639
+ columns: [
640
+ "parent_org_id"
641
+ ]
499
642
  }
500
- };
501
- OrganizationModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
502
- OrganizationModel.usePool = true;
643
+ });
644
+ __publicField(_OrganizationModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
645
+ __publicField(_OrganizationModel, "usePool", true);
646
+ var OrganizationModel = _OrganizationModel;
503
647
 
504
648
  // src/sharing/entities/types/orgTreeResult.ts
505
- var HIERARCHY_SCOPE = /* @__PURE__ */ ((HIERARCHY_SCOPE2) => {
649
+ var HIERARCHY_SCOPE = /* @__PURE__ */ (function(HIERARCHY_SCOPE2) {
506
650
  HIERARCHY_SCOPE2["CHILDREN"] = "children";
507
651
  HIERARCHY_SCOPE2["PARENTS"] = "parents";
508
652
  HIERARCHY_SCOPE2["BOTH"] = "both";
509
653
  return HIERARCHY_SCOPE2;
510
- })(HIERARCHY_SCOPE || {});
654
+ })({});
511
655
 
512
656
  // src/sharing/implementations/organization.repository.ts
513
- var OrganizationRepository = class extends BaseRepository {
657
+ var _OrganizationRepository = class _OrganizationRepository extends BaseRepository {
514
658
  constructor() {
515
659
  super(OrganizationModel);
516
660
  }
517
661
  async getOne(orgId) {
518
662
  const params = {
519
- filters: [this.filter('"orgId"', orgId)]
663
+ filters: [
664
+ this.filter('"orgId"', orgId)
665
+ ]
520
666
  };
521
667
  const response = await super.findItem(params);
522
668
  return response;
523
669
  }
524
- async getOrgTree(orgId, scope = "both" /* BOTH */) {
670
+ async getOrgTree(orgId, scope = HIERARCHY_SCOPE.BOTH) {
525
671
  const cte = `WITH target AS (SELECT org_path FROM admin.qv_organizations WHERE "orgId" = '${orgId}')`;
526
672
  let condition = "";
527
- if (scope === "children" /* CHILDREN */) {
673
+ if (scope === HIERARCHY_SCOPE.CHILDREN) {
528
674
  condition = `admin.qv_organizations.org_path <@ target.org_path`;
529
- } else if (scope === "parents" /* PARENTS */) {
675
+ } else if (scope === HIERARCHY_SCOPE.PARENTS) {
530
676
  condition = `admin.qv_organizations.org_path @> target.org_path`;
531
677
  } else {
532
678
  condition = `(
@@ -570,43 +716,71 @@ var OrganizationRepository = class extends BaseRepository {
570
716
  };
571
717
  }
572
718
  };
573
- var SharingModel = class extends CrudSchema {
719
+ __name(_OrganizationRepository, "OrganizationRepository");
720
+ var OrganizationRepository = _OrganizationRepository;
721
+ var _SharingModel = class _SharingModel extends CrudSchema {
574
722
  };
575
- SharingModel.table = {
723
+ __name(_SharingModel, "SharingModel");
724
+ __publicField(_SharingModel, "table", {
576
725
  name: `${DATABASE_INFO.SERVER_PREFIX}_sharing`,
577
726
  alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing`
578
- };
579
- SharingModel.columns = {
580
- asset_id: { type: "string", primary: true },
581
- asset_type: { type: "string" },
582
- sharing_mode_status: { type: "boolean" },
583
- sharing_mode: { type: "number" },
584
- created_at: { type: "date" },
585
- updated_at: { type: "date" },
586
- deleted_at: { type: "date" },
587
- qvAttributes: { type: "object" }
588
- };
589
- SharingModel.indexes = {
727
+ });
728
+ __publicField(_SharingModel, "columns", {
729
+ asset_id: {
730
+ type: "string",
731
+ primary: true
732
+ },
733
+ asset_type: {
734
+ type: "string"
735
+ },
736
+ sharing_mode_status: {
737
+ type: "boolean"
738
+ },
739
+ sharing_mode: {
740
+ type: "number"
741
+ },
742
+ created_at: {
743
+ type: "date"
744
+ },
745
+ updated_at: {
746
+ type: "date"
747
+ },
748
+ deleted_at: {
749
+ type: "date"
750
+ },
751
+ qvAttributes: {
752
+ type: "object"
753
+ }
754
+ });
755
+ __publicField(_SharingModel, "indexes", {
590
756
  sharingConfigLookup: {
591
757
  name: "sharing_config_lookup_idx",
592
- columns: ["asset_id", "asset_type"]
758
+ columns: [
759
+ "asset_id",
760
+ "asset_type"
761
+ ]
593
762
  },
594
763
  sharingAssetType: {
595
764
  name: "sharing_asset_type_index",
596
- columns: ["asset_type"]
765
+ columns: [
766
+ "asset_type"
767
+ ]
597
768
  }
598
- };
599
- SharingModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
600
- SharingModel.usePool = true;
769
+ });
770
+ __publicField(_SharingModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
771
+ __publicField(_SharingModel, "usePool", true);
772
+ var SharingModel = _SharingModel;
601
773
 
602
774
  // src/sharing/implementations/sharing.repository.ts
603
- var SharingRepository = class extends BaseRepository {
775
+ var _SharingRepository = class _SharingRepository extends BaseRepository {
604
776
  constructor() {
605
777
  super(SharingModel);
606
778
  }
607
779
  async getOne(assetId) {
608
780
  const params = {
609
- filters: [this.filter("asset_id", assetId)]
781
+ filters: [
782
+ this.filter("asset_id", assetId)
783
+ ]
610
784
  };
611
785
  const response = await super.findItem(params);
612
786
  return response;
@@ -616,52 +790,50 @@ var SharingRepository = class extends BaseRepository {
616
790
  return response;
617
791
  }
618
792
  async patch(assetId, sharing) {
619
- await super.update([this.filter("asset_id", assetId)], sharing);
793
+ await super.update([
794
+ this.filter("asset_id", assetId)
795
+ ], sharing);
620
796
  return true;
621
797
  }
622
798
  async delete(assetId) {
623
- await super.remove([this.filter("asset_id", assetId)]);
799
+ await super.remove([
800
+ this.filter("asset_id", assetId)
801
+ ]);
624
802
  return true;
625
803
  }
626
804
  };
805
+ __name(_SharingRepository, "SharingRepository");
806
+ var SharingRepository = _SharingRepository;
627
807
 
628
808
  // src/context.ts
629
- container.register(
630
- "SharingRepository",
631
- SharingRepository
632
- );
633
- container.register(
634
- "SharingDetailsRepository",
635
- SharingDetailsRepository
636
- );
809
+ container.register("SharingRepository", SharingRepository);
810
+ container.register("SharingDetailsRepository", SharingDetailsRepository);
637
811
  container.register("UserRepository", UserRepository);
638
812
  container.register("RoleRepository", GroupRepository);
639
- container.register(
640
- "dxRepository",
641
- DashboardRepository
642
- );
643
- container.register(
644
- "dmRepository",
645
- DownloadManagerRepository
646
- );
647
- container.register(
648
- "OrganizationRepository",
649
- OrganizationRepository
650
- );
651
- container.register(
652
- "AdminRepository",
653
- AdminRepository
654
- );
813
+ container.register("dxRepository", DashboardRepository);
814
+ container.register("dmRepository", DownloadManagerRepository);
815
+ container.register("OrganizationRepository", OrganizationRepository);
816
+ container.register("AdminRepository", AdminRepository);
817
+ container.register("PermissionRepository", PermissionRepository);
655
818
  var Context = container;
656
819
 
657
820
  // src/common/util.ts
658
821
  function isComposer(type) {
659
- return type === "qrveyLogin" /* composer */ || type === "OPENID_CREATORS" /* openIdComposer */;
822
+ return type === "qrveyLogin" || type === "OPENID_CREATORS";
823
+ }
824
+ __name(isComposer, "isComposer");
825
+ function isAnonymousUser(value) {
826
+ return (value == null ? void 0 : value.toLowerCase()) === USER_ANONYMOUS;
660
827
  }
828
+ __name(isAnonymousUser, "isAnonymousUser");
661
829
 
662
830
  // src/quser/entities/user.ts
663
- var User = class {
831
+ var _User = class _User {
664
832
  constructor(params) {
833
+ __publicField(this, "userId");
834
+ __publicField(this, "email");
835
+ __publicField(this, "groups");
836
+ __publicField(this, "organization");
665
837
  this.userId = params.userid;
666
838
  this.email = params.email;
667
839
  this.groups = params.groups;
@@ -680,19 +852,35 @@ var User = class {
680
852
  return this.organization;
681
853
  }
682
854
  };
855
+ __name(_User, "User");
856
+ var User = _User;
683
857
 
684
858
  // src/quser/services/fromTokenToUser.ts
685
- var FromTokenToUser = class {
859
+ function _ts_decorate(decorators, target, key, desc) {
860
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
861
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
862
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
863
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
864
+ }
865
+ __name(_ts_decorate, "_ts_decorate");
866
+ function _ts_metadata(k, v) {
867
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
868
+ }
869
+ __name(_ts_metadata, "_ts_metadata");
870
+ function _ts_param(paramIndex, decorator) {
871
+ return function(target, key) {
872
+ decorator(target, key, paramIndex);
873
+ };
874
+ }
875
+ __name(_ts_param, "_ts_param");
876
+ var _FromTokenToUser = class _FromTokenToUser {
686
877
  constructor(userRepository) {
878
+ __publicField(this, "userRepository");
687
879
  this.userRepository = userRepository;
688
880
  }
689
- async execute({
690
- body
691
- }) {
881
+ async execute({ body }) {
692
882
  var _a;
693
- const current = await this.userRepository.getOne(
694
- body.clientId || body.userId
695
- );
883
+ const current = await this.userRepository.getOne(body.clientId || body.userId);
696
884
  if (current) {
697
885
  const user = new User(current);
698
886
  return {
@@ -716,80 +904,246 @@ var FromTokenToUser = class {
716
904
  };
717
905
  }
718
906
  };
719
- FromTokenToUser = __decorateClass([
907
+ __name(_FromTokenToUser, "FromTokenToUser");
908
+ var FromTokenToUser = _FromTokenToUser;
909
+ FromTokenToUser = _ts_decorate([
720
910
  injectable(),
721
- __decorateParam(0, inject("UserRepository"))
911
+ _ts_param(0, inject("UserRepository")),
912
+ _ts_metadata("design:type", Function),
913
+ _ts_metadata("design:paramtypes", [
914
+ typeof UserRepositoryInterface === "undefined" ? Object : UserRepositoryInterface
915
+ ])
722
916
  ], FromTokenToUser);
723
- var HasAdminRole = class {
724
- constructor(userRepository) {
917
+ function _ts_decorate2(decorators, target, key, desc) {
918
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
919
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
920
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
921
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
922
+ }
923
+ __name(_ts_decorate2, "_ts_decorate");
924
+ function _ts_metadata2(k, v) {
925
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
926
+ }
927
+ __name(_ts_metadata2, "_ts_metadata");
928
+ function _ts_param2(paramIndex, decorator) {
929
+ return function(target, key) {
930
+ decorator(target, key, paramIndex);
931
+ };
932
+ }
933
+ __name(_ts_param2, "_ts_param");
934
+ var _HasAdminRole = class _HasAdminRole {
935
+ constructor(userRepository, permissionRepository, roleRepository) {
936
+ __publicField(this, "userRepository");
937
+ __publicField(this, "permissionRepository");
938
+ __publicField(this, "roleRepository");
725
939
  this.userRepository = userRepository;
940
+ this.permissionRepository = permissionRepository;
941
+ this.roleRepository = roleRepository;
726
942
  }
727
- async execute({
728
- apiKey,
729
- clientId,
730
- orgId,
731
- userId,
732
- loginType
733
- } = {}) {
943
+ async execute({ apiKey, clientId, orgId, userId, loginType, roles } = {}) {
944
+ var _a;
734
945
  if (!userId) return false;
946
+ if (isAnonymousUser(clientId)) return false;
735
947
  const existingUser = await this.userRepository.getOne(userId);
736
- const isMasterKey = apiKey && (orgId === void 0 || orgId === ORGANIZATION_QRVEY);
737
- if (isMasterKey && existingUser && (!clientId || clientId === userId))
948
+ const isMasterKey = apiKey && (!orgId || orgId === ORGANIZATION_QRVEY);
949
+ if (isMasterKey && existingUser && (!clientId || clientId === userId)) {
738
950
  return true;
739
- const user = await this.userRepository.getList({
740
- data: { identifier: clientId != null ? clientId : userId, role: "administrator" }
741
- });
742
- const isAdmin = user.items.length > 0;
951
+ }
952
+ if (roles == null ? void 0 : roles.length) {
953
+ const rolePermissions = await Promise.all(roles.map((role) => this.roleRepository.getByName(role)));
954
+ const foundRoles = rolePermissions.filter((role) => role != null);
955
+ if (foundRoles.length > 0) {
956
+ return foundRoles.some((role) => {
957
+ var _a2;
958
+ return (_a2 = role == null ? void 0 : role.permissions) == null ? void 0 : _a2.contentAdministration;
959
+ });
960
+ }
961
+ }
962
+ const user = await this.permissionRepository.getPermission(clientId != null ? clientId : userId);
963
+ const isAdmin = (_a = user == null ? void 0 : user.contentAdministration) != null ? _a : false;
743
964
  if (isMasterKey && isAdmin) return true;
744
965
  const inComposer = isComposer(loginType || "");
745
966
  const isExternal = !clientId && !inComposer || orgId && orgId !== ORGANIZATION_QRVEY;
746
967
  if (isExternal) return false;
747
- if (isAdmin) return true;
748
- return false;
968
+ return isAdmin;
749
969
  }
750
970
  };
751
- HasAdminRole = __decorateClass([
971
+ __name(_HasAdminRole, "HasAdminRole");
972
+ var HasAdminRole = _HasAdminRole;
973
+ HasAdminRole = _ts_decorate2([
752
974
  injectable(),
753
- __decorateParam(0, inject("UserRepository"))
975
+ _ts_param2(0, inject("UserRepository")),
976
+ _ts_param2(1, inject("PermissionRepository")),
977
+ _ts_param2(2, inject("RoleRepository")),
978
+ _ts_metadata2("design:type", Function),
979
+ _ts_metadata2("design:paramtypes", [
980
+ typeof UserRepositoryInterface === "undefined" ? Object : UserRepositoryInterface,
981
+ typeof PermissionRepositoryInterface === "undefined" ? Object : PermissionRepositoryInterface,
982
+ typeof RoleRepositoryInterface === "undefined" ? Object : RoleRepositoryInterface
983
+ ])
754
984
  ], HasAdminRole);
755
- var CheckAppAccess = class {
985
+ function _ts_decorate3(decorators, target, key, desc) {
986
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
987
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
988
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
989
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
990
+ }
991
+ __name(_ts_decorate3, "_ts_decorate");
992
+ function _ts_metadata3(k, v) {
993
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
994
+ }
995
+ __name(_ts_metadata3, "_ts_metadata");
996
+ function _ts_param3(paramIndex, decorator) {
997
+ return function(target, key) {
998
+ decorator(target, key, paramIndex);
999
+ };
1000
+ }
1001
+ __name(_ts_param3, "_ts_param");
1002
+ var _HasSharingPermission = class _HasSharingPermission {
1003
+ constructor(permissionRepository, roleRepository) {
1004
+ __publicField(this, "permissionRepository");
1005
+ __publicField(this, "roleRepository");
1006
+ this.permissionRepository = permissionRepository;
1007
+ this.roleRepository = roleRepository;
1008
+ }
1009
+ async execute({ clientId, userId, roles } = {}) {
1010
+ var _a;
1011
+ if (!userId) return false;
1012
+ if (isAnonymousUser(clientId)) return false;
1013
+ if (roles == null ? void 0 : roles.length) {
1014
+ const rolePermissions = await Promise.all(roles.map((role) => this.roleRepository.getByName(role)));
1015
+ const foundRoles = rolePermissions.filter((role) => role != null);
1016
+ if (foundRoles.length > 0) {
1017
+ return foundRoles.some((role) => {
1018
+ var _a2;
1019
+ return (_a2 = role == null ? void 0 : role.permissions) == null ? void 0 : _a2.assetSharing;
1020
+ });
1021
+ }
1022
+ }
1023
+ const permission = await this.permissionRepository.getPermission(clientId != null ? clientId : userId);
1024
+ return (_a = permission == null ? void 0 : permission.assetSharing) != null ? _a : false;
1025
+ }
1026
+ };
1027
+ __name(_HasSharingPermission, "HasSharingPermission");
1028
+ var HasSharingPermission = _HasSharingPermission;
1029
+ HasSharingPermission = _ts_decorate3([
1030
+ injectable(),
1031
+ _ts_param3(0, inject("PermissionRepository")),
1032
+ _ts_param3(1, inject("RoleRepository")),
1033
+ _ts_metadata3("design:type", Function),
1034
+ _ts_metadata3("design:paramtypes", [
1035
+ typeof PermissionRepositoryInterface === "undefined" ? Object : PermissionRepositoryInterface,
1036
+ typeof RoleRepositoryInterface === "undefined" ? Object : RoleRepositoryInterface
1037
+ ])
1038
+ ], HasSharingPermission);
1039
+ function _ts_decorate4(decorators, target, key, desc) {
1040
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1041
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1042
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1043
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1044
+ }
1045
+ __name(_ts_decorate4, "_ts_decorate");
1046
+ function _ts_metadata4(k, v) {
1047
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1048
+ }
1049
+ __name(_ts_metadata4, "_ts_metadata");
1050
+ function _ts_param4(paramIndex, decorator) {
1051
+ return function(target, key) {
1052
+ decorator(target, key, paramIndex);
1053
+ };
1054
+ }
1055
+ __name(_ts_param4, "_ts_param");
1056
+ var _CheckAppAccess = class _CheckAppAccess {
756
1057
  constructor(adminRepository) {
1058
+ __publicField(this, "adminRepository");
757
1059
  this.adminRepository = adminRepository;
758
1060
  }
759
1061
  //TODO Need Test
760
- async execute({
761
- appId,
762
- userId
763
- }) {
764
- if (!userId)
765
- return {
766
- hasAccess: false
767
- };
1062
+ async execute({ appId, userId }) {
1063
+ if (!userId) return {
1064
+ hasAccess: false
1065
+ };
768
1066
  const appInfo = await this.adminRepository.getApplicationInfo({
769
1067
  appId,
770
1068
  userId
771
1069
  });
772
- if (appInfo.status !== 200)
773
- return {
774
- hasAccess: false
775
- };
1070
+ if (appInfo.status !== 200) return {
1071
+ hasAccess: false
1072
+ };
776
1073
  return {
777
1074
  hasAccess: true
778
1075
  };
779
1076
  }
780
1077
  };
781
- CheckAppAccess = __decorateClass([
1078
+ __name(_CheckAppAccess, "CheckAppAccess");
1079
+ var CheckAppAccess = _CheckAppAccess;
1080
+ CheckAppAccess = _ts_decorate4([
782
1081
  injectable(),
783
- __decorateParam(0, inject("AdminRepository"))
1082
+ _ts_param4(0, inject("AdminRepository")),
1083
+ _ts_metadata4("design:type", Function),
1084
+ _ts_metadata4("design:paramtypes", [
1085
+ typeof AdminRepositoryInterface === "undefined" ? Object : AdminRepositoryInterface
1086
+ ])
784
1087
  ], CheckAppAccess);
785
- var SharingDetail = class _SharingDetail {
1088
+ function _ts_decorate5(decorators, target, key, desc) {
1089
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1090
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1091
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1092
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1093
+ }
1094
+ __name(_ts_decorate5, "_ts_decorate");
1095
+ function _ts_metadata5(k, v) {
1096
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1097
+ }
1098
+ __name(_ts_metadata5, "_ts_metadata");
1099
+ function _ts_param5(paramIndex, decorator) {
1100
+ return function(target, key) {
1101
+ decorator(target, key, paramIndex);
1102
+ };
1103
+ }
1104
+ __name(_ts_param5, "_ts_param");
1105
+ var _CheckOrgPermissions = class _CheckOrgPermissions {
1106
+ constructor(organizationRepository) {
1107
+ __publicField(this, "organizationRepository");
1108
+ this.organizationRepository = organizationRepository;
1109
+ }
1110
+ //TODO Need Tes
1111
+ async execute({ orgId }) {
1112
+ const hasPublicAccess = await this.organizationRepository.getOne(orgId);
1113
+ const privacy = (hasPublicAccess == null ? void 0 : hasPublicAccess.effective_asset_sharing) ? APP_SHARING_STATUS.PRIVATE : APP_SHARING_STATUS.PUBLIC;
1114
+ return {
1115
+ privacy
1116
+ };
1117
+ }
1118
+ };
1119
+ __name(_CheckOrgPermissions, "CheckOrgPermissions");
1120
+ var CheckOrgPermissions = _CheckOrgPermissions;
1121
+ CheckOrgPermissions = _ts_decorate5([
1122
+ injectable(),
1123
+ _ts_param5(0, inject("OrganizationRepository")),
1124
+ _ts_metadata5("design:type", Function),
1125
+ _ts_metadata5("design:paramtypes", [
1126
+ typeof OrganizationRepositoryInterface === "undefined" ? Object : OrganizationRepositoryInterface
1127
+ ])
1128
+ ], CheckOrgPermissions);
1129
+ var _SharingDetail = class _SharingDetail {
786
1130
  constructor(params) {
1131
+ __publicField(this, "sharingDetailsId");
1132
+ __publicField(this, "assetId");
1133
+ __publicField(this, "accessLevel");
1134
+ __publicField(this, "accessLevelAsText");
1135
+ __publicField(this, "orgId");
1136
+ __publicField(this, "sharedWith");
1137
+ __publicField(this, "sharedType");
1138
+ __publicField(this, "sharedOrigin");
1139
+ __publicField(this, "sharedEmail");
1140
+ __publicField(this, "createdAt");
1141
+ __publicField(this, "updatedAt");
1142
+ __publicField(this, "deletedAt");
787
1143
  this.sharingDetailsId = params.sharingDetailsId;
788
1144
  this.assetId = params.assetId;
789
1145
  this.accessLevel = params.accessLevel;
790
- this.accessLevelAsText = this.convertAccessLevelToText(
791
- params.accessLevel
792
- );
1146
+ this.accessLevelAsText = this.convertAccessLevelToText(params.accessLevel);
793
1147
  this.orgId = params.orgId;
794
1148
  this.sharedWith = params.sharedWith;
795
1149
  this.sharedType = params.sharedType;
@@ -800,10 +1154,10 @@ var SharingDetail = class _SharingDetail {
800
1154
  this.deletedAt = params.deletedAt;
801
1155
  }
802
1156
  static create(params) {
803
- var _a;
804
1157
  const now = (/* @__PURE__ */ new Date()).toISOString();
805
- const obj = __spreadProps(__spreadValues({}, params), {
806
- sharingDetailsId: (_a = params.sharedId) != null ? _a : getId(),
1158
+ const _a = params, { sharedId } = _a, rest = __objRest(_a, ["sharedId"]);
1159
+ const obj = __spreadProps(__spreadValues({}, rest), {
1160
+ sharingDetailsId: sharedId != null ? sharedId : getId(),
807
1161
  createdAt: now,
808
1162
  updatedAt: now
809
1163
  });
@@ -825,8 +1179,7 @@ var SharingDetail = class _SharingDetail {
825
1179
  });
826
1180
  }
827
1181
  update(params) {
828
- if (params.accessLevel || params.accessLevel === 0)
829
- this.accessLevel = params.accessLevel;
1182
+ if (params.accessLevel || params.accessLevel === 0) this.accessLevel = params.accessLevel;
830
1183
  if (params.sharedEmail) this.sharedEmail = params.sharedEmail;
831
1184
  this.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
832
1185
  }
@@ -889,33 +1242,86 @@ var SharingDetail = class _SharingDetail {
889
1242
  return (_a = ACCESS_LEVEL[level]) != null ? _a : "UNKNOWN";
890
1243
  }
891
1244
  };
1245
+ __name(_SharingDetail, "SharingDetail");
1246
+ var SharingDetail = _SharingDetail;
892
1247
 
893
1248
  // src/sharing/services/checkUserAccessLevel.ts
894
- var CheckUserAccessLevel = class {
895
- constructor(detailsRepository) {
1249
+ function _ts_decorate6(decorators, target, key, desc) {
1250
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1251
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1252
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1253
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1254
+ }
1255
+ __name(_ts_decorate6, "_ts_decorate");
1256
+ function _ts_metadata6(k, v) {
1257
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1258
+ }
1259
+ __name(_ts_metadata6, "_ts_metadata");
1260
+ function _ts_param6(paramIndex, decorator) {
1261
+ return function(target, key) {
1262
+ decorator(target, key, paramIndex);
1263
+ };
1264
+ }
1265
+ __name(_ts_param6, "_ts_param");
1266
+ var _CheckUserAccessLevel = class _CheckUserAccessLevel {
1267
+ constructor(detailsRepository, organizationRepository) {
1268
+ __publicField(this, "detailsRepository");
1269
+ __publicField(this, "organizationRepository");
896
1270
  this.detailsRepository = detailsRepository;
1271
+ this.organizationRepository = organizationRepository;
897
1272
  }
898
- async execute({
899
- userId,
900
- assetId,
901
- clientId,
902
- loginType,
903
- roles,
904
- orgId
905
- }) {
1273
+ async execute({ userId, assetId, assetOrgId, clientId, loginType, roles, orgId }) {
1274
+ var _a;
906
1275
  const user = await fromTokenToUser({
907
- body: { userId, clientId, roles, orgId, loginType }
1276
+ body: {
1277
+ userId,
1278
+ clientId,
1279
+ roles,
1280
+ orgId,
1281
+ loginType
1282
+ }
908
1283
  });
1284
+ if (isAnonymousUser(user.userId)) return {
1285
+ level: ACCESS_LEVEL.CAN_USE,
1286
+ levelAsText: "CAN_USE"
1287
+ };
1288
+ const currentUserOrgId = user.orgId || ORGANIZATION_QRVEY;
1289
+ const orgsId = await this.organizationRepository.getOrgTree(currentUserOrgId, HIERARCHY_SCOPE.BOTH);
1290
+ const isAdmin = await hasAdminRole(user);
1291
+ if (isAdmin) {
1292
+ const isSuperAdmin = currentUserOrgId === ORGANIZATION_QRVEY;
1293
+ const isSameOrg = currentUserOrgId === assetOrgId;
1294
+ const isChildOrg = ((_a = orgsId == null ? void 0 : orgsId.childrenIds) == null ? void 0 : _a.includes(assetOrgId)) || false;
1295
+ if (isSuperAdmin || isSameOrg || isChildOrg) {
1296
+ return {
1297
+ level: ACCESS_LEVEL.ADMIN,
1298
+ levelAsText: "ADMIN"
1299
+ };
1300
+ }
1301
+ }
1302
+ orgsId.parentIds.push(currentUserOrgId);
909
1303
  const details = await this.detailsRepository.getList({
910
- data: { assetId, user },
911
- sorting: [{ column: "access_level", direction: "DESC" }]
1304
+ data: {
1305
+ assetId,
1306
+ user,
1307
+ parentOrgIds: orgsId.parentIds
1308
+ },
1309
+ sorting: [
1310
+ {
1311
+ column: "access_level",
1312
+ direction: "DESC"
1313
+ }
1314
+ ]
912
1315
  });
913
- if (details.items.length === 0)
914
- return { level: 0 /* NONE */, levelAsText: "NONE" };
1316
+ if (details.items.length === 0) return {
1317
+ level: ACCESS_LEVEL.NONE,
1318
+ levelAsText: "NONE"
1319
+ };
915
1320
  const priority = {
916
- ["USER" /* USER */]: 3,
917
- ["ROLE" /* ROLE */]: 2,
918
- ["ORGANIZATION" /* ORGANIZATION */]: 1
1321
+ [SHARE_TYPE.USER]: 4,
1322
+ [SHARE_TYPE.ROLE]: 3,
1323
+ [SHARE_TYPE.ORGANIZATION]: 2,
1324
+ [SHARE_TYPE.TENANT]: 1
919
1325
  };
920
1326
  const priorityDetail = details.items.reduce((best, current) => {
921
1327
  const bestPriority = priority[best.shared_type];
@@ -931,12 +1337,38 @@ var CheckUserAccessLevel = class {
931
1337
  };
932
1338
  }
933
1339
  };
934
- CheckUserAccessLevel = __decorateClass([
1340
+ __name(_CheckUserAccessLevel, "CheckUserAccessLevel");
1341
+ var CheckUserAccessLevel = _CheckUserAccessLevel;
1342
+ CheckUserAccessLevel = _ts_decorate6([
935
1343
  injectable(),
936
- __decorateParam(0, inject("SharingDetailsRepository"))
1344
+ _ts_param6(0, inject("SharingDetailsRepository")),
1345
+ _ts_param6(1, inject("OrganizationRepository")),
1346
+ _ts_metadata6("design:type", Function),
1347
+ _ts_metadata6("design:paramtypes", [
1348
+ typeof SharingDetailsRepositoryInterface === "undefined" ? Object : SharingDetailsRepositoryInterface,
1349
+ typeof OrganizationRepositoryInterface === "undefined" ? Object : OrganizationRepositoryInterface
1350
+ ])
937
1351
  ], CheckUserAccessLevel);
938
- var DeleteSharing = class {
1352
+ function _ts_decorate7(decorators, target, key, desc) {
1353
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1354
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1355
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1356
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1357
+ }
1358
+ __name(_ts_decorate7, "_ts_decorate");
1359
+ function _ts_metadata7(k, v) {
1360
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1361
+ }
1362
+ __name(_ts_metadata7, "_ts_metadata");
1363
+ function _ts_param7(paramIndex, decorator) {
1364
+ return function(target, key) {
1365
+ decorator(target, key, paramIndex);
1366
+ };
1367
+ }
1368
+ __name(_ts_param7, "_ts_param");
1369
+ var _DeleteSharing = class _DeleteSharing {
939
1370
  constructor(sharingRepository) {
1371
+ __publicField(this, "sharingRepository");
940
1372
  this.sharingRepository = sharingRepository;
941
1373
  }
942
1374
  async execute({ body }) {
@@ -947,71 +1379,126 @@ var DeleteSharing = class {
947
1379
  return detailSharing;
948
1380
  }
949
1381
  };
950
- DeleteSharing = __decorateClass([
1382
+ __name(_DeleteSharing, "DeleteSharing");
1383
+ var DeleteSharing = _DeleteSharing;
1384
+ DeleteSharing = _ts_decorate7([
951
1385
  injectable(),
952
- __decorateParam(0, inject("SharingRepository"))
1386
+ _ts_param7(0, inject("SharingRepository")),
1387
+ _ts_metadata7("design:type", Function),
1388
+ _ts_metadata7("design:paramtypes", [
1389
+ typeof SharingRepositoryInterface === "undefined" ? Object : SharingRepositoryInterface
1390
+ ])
953
1391
  ], DeleteSharing);
954
- var GetOrgTree = class {
1392
+ function _ts_decorate8(decorators, target, key, desc) {
1393
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1394
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1395
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1396
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1397
+ }
1398
+ __name(_ts_decorate8, "_ts_decorate");
1399
+ function _ts_metadata8(k, v) {
1400
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1401
+ }
1402
+ __name(_ts_metadata8, "_ts_metadata");
1403
+ function _ts_param8(paramIndex, decorator) {
1404
+ return function(target, key) {
1405
+ decorator(target, key, paramIndex);
1406
+ };
1407
+ }
1408
+ __name(_ts_param8, "_ts_param");
1409
+ var _GetOrgTree = class _GetOrgTree {
955
1410
  constructor(organizationRepository) {
1411
+ __publicField(this, "organizationRepository");
956
1412
  this.organizationRepository = organizationRepository;
957
1413
  }
958
1414
  async execute(orgId, scope) {
959
- return this.organizationRepository.getOrgTree(
960
- orgId,
961
- scope != null ? scope : "both" /* BOTH */
962
- );
1415
+ return this.organizationRepository.getOrgTree(orgId, scope != null ? scope : HIERARCHY_SCOPE.BOTH);
963
1416
  }
964
1417
  };
965
- GetOrgTree = __decorateClass([
1418
+ __name(_GetOrgTree, "GetOrgTree");
1419
+ var GetOrgTree = _GetOrgTree;
1420
+ GetOrgTree = _ts_decorate8([
966
1421
  injectable(),
967
- __decorateParam(0, inject("OrganizationRepository"))
1422
+ _ts_param8(0, inject("OrganizationRepository")),
1423
+ _ts_metadata8("design:type", Function),
1424
+ _ts_metadata8("design:paramtypes", [
1425
+ typeof OrganizationRepositoryInterface === "undefined" ? Object : OrganizationRepositoryInterface
1426
+ ])
968
1427
  ], GetOrgTree);
969
- var ListSharing = class {
1428
+ function _ts_decorate9(decorators, target, key, desc) {
1429
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1430
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1431
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1432
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1433
+ }
1434
+ __name(_ts_decorate9, "_ts_decorate");
1435
+ function _ts_metadata9(k, v) {
1436
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1437
+ }
1438
+ __name(_ts_metadata9, "_ts_metadata");
1439
+ function _ts_param9(paramIndex, decorator) {
1440
+ return function(target, key) {
1441
+ decorator(target, key, paramIndex);
1442
+ };
1443
+ }
1444
+ __name(_ts_param9, "_ts_param");
1445
+ var _ListSharing = class _ListSharing {
970
1446
  constructor(sharingRepository, detailsRepository) {
1447
+ __publicField(this, "sharingRepository");
1448
+ __publicField(this, "detailsRepository");
971
1449
  this.sharingRepository = sharingRepository;
972
1450
  this.detailsRepository = detailsRepository;
973
1451
  }
974
- async execute({
975
- body
976
- }) {
1452
+ async execute({ body }) {
977
1453
  var _a;
978
- const {
979
- data: { assetId },
980
- pagination
981
- } = body;
1454
+ const { data: { assetId }, pagination } = body;
982
1455
  const sharing = await this.sharingRepository.getOne(assetId);
983
1456
  if (!sharing) return null;
984
- const sorting = body.sorting && ((_a = body.sorting) == null ? void 0 : _a.length) > 0 ? body.sorting : [{ column: "created_at", direction: "ASC" }];
1457
+ const sorting = body.sorting && ((_a = body.sorting) == null ? void 0 : _a.length) > 0 ? body.sorting : [
1458
+ {
1459
+ column: "created_at",
1460
+ direction: "ASC"
1461
+ }
1462
+ ];
985
1463
  const detailSharing = await this.detailsRepository.getList({
986
- data: { assetId },
1464
+ data: {
1465
+ assetId
1466
+ },
987
1467
  pagination,
988
1468
  sorting
989
1469
  });
990
- const items = detailSharing.items.map(
991
- (item) => SharingDetail.parse(item).toJSON()
992
- );
1470
+ const items = detailSharing.items.map((item) => SharingDetail.parse(item).toJSON());
993
1471
  return __spreadProps(__spreadValues({}, detailSharing), {
994
1472
  items
995
1473
  });
996
1474
  }
997
1475
  };
998
- ListSharing = __decorateClass([
1476
+ __name(_ListSharing, "ListSharing");
1477
+ var ListSharing = _ListSharing;
1478
+ ListSharing = _ts_decorate9([
999
1479
  injectable(),
1000
- __decorateParam(0, inject("SharingRepository")),
1001
- __decorateParam(1, inject("SharingDetailsRepository"))
1480
+ _ts_param9(0, inject("SharingRepository")),
1481
+ _ts_param9(1, inject("SharingDetailsRepository")),
1482
+ _ts_metadata9("design:type", Function),
1483
+ _ts_metadata9("design:paramtypes", [
1484
+ typeof SharingRepositoryInterface === "undefined" ? Object : SharingRepositoryInterface,
1485
+ typeof SharingDetailsRepositoryInterface === "undefined" ? Object : SharingDetailsRepositoryInterface
1486
+ ])
1002
1487
  ], ListSharing);
1003
1488
 
1004
1489
  // src/sharing/entities/sharing.ts
1005
- var Sharing = class _Sharing {
1490
+ var _Sharing = class _Sharing {
1006
1491
  constructor(params) {
1007
- var _a, _b;
1492
+ __publicField(this, "assetId");
1493
+ __publicField(this, "assetType");
1494
+ __publicField(this, "createdAt");
1495
+ __publicField(this, "updatedAt");
1496
+ __publicField(this, "deletedAt");
1008
1497
  this.assetId = params.assetId;
1009
1498
  this.assetType = params.assetType;
1010
1499
  this.createdAt = params.createdAt;
1011
1500
  this.updatedAt = params.updatedAt;
1012
1501
  this.deletedAt = params.deletedAt;
1013
- this.sharingModeStatus = (_a = params.sharingModeStatus) != null ? _a : true;
1014
- this.sharingMode = (_b = params.sharingMode) != null ? _b : null;
1015
1502
  }
1016
1503
  static create(params) {
1017
1504
  const now = (/* @__PURE__ */ new Date()).toISOString();
@@ -1039,9 +1526,7 @@ var Sharing = class _Sharing {
1039
1526
  asset_type: this.assetType,
1040
1527
  created_at: this.createdAt,
1041
1528
  updated_at: this.updatedAt,
1042
- deleted_at: this.deletedAt,
1043
- sharing_mode: this.sharingMode,
1044
- sharing_mode_status: this.sharingModeStatus
1529
+ deleted_at: this.deletedAt
1045
1530
  };
1046
1531
  }
1047
1532
  toPlain() {
@@ -1061,12 +1546,6 @@ var Sharing = class _Sharing {
1061
1546
  updatedAt: this.updatedAt
1062
1547
  };
1063
1548
  }
1064
- set setSharingModeStatus(sharingModeStatus) {
1065
- this.sharingModeStatus = sharingModeStatus;
1066
- }
1067
- set setSharingMode(sharingMode) {
1068
- this.sharingMode = sharingMode;
1069
- }
1070
1549
  get getAssetId() {
1071
1550
  return this.assetId;
1072
1551
  }
@@ -1074,10 +1553,35 @@ var Sharing = class _Sharing {
1074
1553
  return this.assetType;
1075
1554
  }
1076
1555
  };
1556
+ __name(_Sharing, "Sharing");
1557
+ var Sharing = _Sharing;
1077
1558
 
1078
1559
  // src/sharing/services/upsert.ts
1079
- var UpsertSharing = class {
1560
+ function _ts_decorate10(decorators, target, key, desc) {
1561
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1562
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1563
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1564
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1565
+ }
1566
+ __name(_ts_decorate10, "_ts_decorate");
1567
+ function _ts_metadata10(k, v) {
1568
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1569
+ }
1570
+ __name(_ts_metadata10, "_ts_metadata");
1571
+ function _ts_param10(paramIndex, decorator) {
1572
+ return function(target, key) {
1573
+ decorator(target, key, paramIndex);
1574
+ };
1575
+ }
1576
+ __name(_ts_param10, "_ts_param");
1577
+ var _UpsertSharing = class _UpsertSharing {
1080
1578
  constructor(sharingRepository, detailsRepository, dxRepository, dmRepository, userRepository, roleRepository) {
1579
+ __publicField(this, "sharingRepository");
1580
+ __publicField(this, "detailsRepository");
1581
+ __publicField(this, "dxRepository");
1582
+ __publicField(this, "dmRepository");
1583
+ __publicField(this, "userRepository");
1584
+ __publicField(this, "roleRepository");
1081
1585
  this.sharingRepository = sharingRepository;
1082
1586
  this.detailsRepository = detailsRepository;
1083
1587
  this.dxRepository = dxRepository;
@@ -1085,16 +1589,10 @@ var UpsertSharing = class {
1085
1589
  this.userRepository = userRepository;
1086
1590
  this.roleRepository = roleRepository;
1087
1591
  }
1088
- async execute({
1089
- body
1090
- }) {
1592
+ async execute({ body }) {
1091
1593
  const assetId = body.assetId;
1092
- const isValidAsset = await this.validateIfAssetExists(
1093
- assetId,
1094
- body.assetType
1095
- );
1096
- if (!isValidAsset)
1097
- throw new Error(`Asset with ID ${assetId} not found`);
1594
+ const isValidAsset = await this.validateIfAssetExists(assetId, body.assetType);
1595
+ if (!isValidAsset) throw new Error(`Asset with ID ${assetId} not found`);
1098
1596
  const sharing = await this.sharingRepository.getOne(assetId);
1099
1597
  let currentSharing;
1100
1598
  if (sharing) {
@@ -1111,20 +1609,17 @@ var UpsertSharing = class {
1111
1609
  if (body.add) updatedList = await this.addDetails(assetId, body.add);
1112
1610
  if (body.remove) await this.removeDetails(body.remove);
1113
1611
  currentSharing.update();
1114
- await this.sharingRepository.patch(
1115
- currentSharing.getAssetId,
1116
- currentSharing.toTable()
1117
- );
1612
+ await this.sharingRepository.patch(currentSharing.getAssetId, currentSharing.toTable());
1118
1613
  return updatedList.map((detail) => detail.toJSON());
1119
1614
  }
1120
1615
  async validateIfAssetExists(assetId, assetType) {
1121
1616
  switch (assetType) {
1122
- case "DX" /* DX */: {
1617
+ case ASSET_TYPE.DX: {
1123
1618
  const result = await this.dxRepository.get(assetId);
1124
1619
  if (result) return true;
1125
1620
  return false;
1126
1621
  }
1127
- case "DM" /* DM */: {
1622
+ case ASSET_TYPE.DM: {
1128
1623
  return true;
1129
1624
  }
1130
1625
  default:
@@ -1144,22 +1639,14 @@ var UpsertSharing = class {
1144
1639
  let currentDetail;
1145
1640
  const isValid = await this.validateIfSharedWithExist(detail);
1146
1641
  if (!isValid) return null;
1147
- let sharingDetail = await this.detailsRepository.getBySharedWith(
1148
- assetId,
1149
- detail.sharedWith
1150
- );
1642
+ let sharingDetail = await this.detailsRepository.getBySharedWith(assetId, detail.sharedWith);
1151
1643
  if (!sharingDetail && detail.sharedId) {
1152
- sharingDetail = await this.detailsRepository.getOne(
1153
- detail.sharedId
1154
- );
1644
+ sharingDetail = await this.detailsRepository.getOne(detail.sharedId);
1155
1645
  }
1156
1646
  if (sharingDetail) {
1157
1647
  currentDetail = SharingDetail.parse(sharingDetail);
1158
1648
  currentDetail.update(detail);
1159
- await this.detailsRepository.patch(
1160
- currentDetail.getSharingDetailsId,
1161
- currentDetail.toTable()
1162
- );
1649
+ await this.detailsRepository.patch(currentDetail.getSharingDetailsId, currentDetail.toTable());
1163
1650
  } else {
1164
1651
  const createDetails = __spreadValues({
1165
1652
  assetId,
@@ -1171,18 +1658,18 @@ var UpsertSharing = class {
1171
1658
  return currentDetail;
1172
1659
  }
1173
1660
  async validateIfSharedWithExist(detail) {
1174
- if (detail.sharedOrigin === "EXTERNAL" /* EXTERNAL */ || detail.sharedOrigin === "UNKNOWN" /* UNKNOWN */)
1175
- return true;
1176
- const isQrveyOrg = detail.sharedType === "ORGANIZATION" /* ORGANIZATION */ && detail.sharedWith === ORGANIZATION_QRVEY;
1661
+ if (detail.sharedOrigin === SHARED_ORIGIN.EXTERNAL || detail.sharedOrigin === SHARED_ORIGIN.UNKNOWN) return true;
1662
+ const isQrveyOrg = detail.sharedType === SHARE_TYPE.ORGANIZATION && detail.sharedWith === ORGANIZATION_QRVEY;
1177
1663
  if (isQrveyOrg) return true;
1178
- if (detail.sharedType === "USER" /* USER */) {
1664
+ if (detail.sharedType === SHARE_TYPE.USER) {
1179
1665
  const user = await this.userRepository.getOne(detail.sharedWith);
1180
1666
  if (user) return true;
1181
1667
  }
1182
- if (detail.sharedType === "ROLE" /* ROLE */) {
1668
+ if (detail.sharedType === SHARE_TYPE.ROLE) {
1183
1669
  const role = await this.roleRepository.getOne(detail.sharedWith);
1184
1670
  if (role) return true;
1185
1671
  }
1672
+ if (detail.sharedType === SHARE_TYPE.TENANT && detail.sharedWith === SHARE_TYPE.TENANT) return true;
1186
1673
  return false;
1187
1674
  }
1188
1675
  async removeDetails(list) {
@@ -1191,26 +1678,53 @@ var UpsertSharing = class {
1191
1678
  }
1192
1679
  }
1193
1680
  };
1194
- UpsertSharing = __decorateClass([
1681
+ __name(_UpsertSharing, "UpsertSharing");
1682
+ var UpsertSharing = _UpsertSharing;
1683
+ UpsertSharing = _ts_decorate10([
1195
1684
  injectable(),
1196
- __decorateParam(0, inject("SharingRepository")),
1197
- __decorateParam(1, inject("SharingDetailsRepository")),
1198
- __decorateParam(2, inject("dxRepository")),
1199
- __decorateParam(3, inject("dmRepository")),
1200
- __decorateParam(4, inject("UserRepository")),
1201
- __decorateParam(5, inject("RoleRepository"))
1685
+ _ts_param10(0, inject("SharingRepository")),
1686
+ _ts_param10(1, inject("SharingDetailsRepository")),
1687
+ _ts_param10(2, inject("dxRepository")),
1688
+ _ts_param10(3, inject("dmRepository")),
1689
+ _ts_param10(4, inject("UserRepository")),
1690
+ _ts_param10(5, inject("RoleRepository")),
1691
+ _ts_metadata10("design:type", Function),
1692
+ _ts_metadata10("design:paramtypes", [
1693
+ typeof SharingRepositoryInterface === "undefined" ? Object : SharingRepositoryInterface,
1694
+ typeof SharingDetailsRepositoryInterface === "undefined" ? Object : SharingDetailsRepositoryInterface,
1695
+ typeof DashboardRepositoryInterface === "undefined" ? Object : DashboardRepositoryInterface,
1696
+ typeof DownloadManagerRepositoryInterface === "undefined" ? Object : DownloadManagerRepositoryInterface,
1697
+ typeof UserRepositoryInterface === "undefined" ? Object : UserRepositoryInterface,
1698
+ typeof RoleRepositoryInterface === "undefined" ? Object : RoleRepositoryInterface
1699
+ ])
1202
1700
  ], UpsertSharing);
1203
- var UpsertDefaultSharing = class {
1204
- constructor(sharingRepository, adminRepository) {
1701
+ function _ts_decorate11(decorators, target, key, desc) {
1702
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1703
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1704
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1705
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1706
+ }
1707
+ __name(_ts_decorate11, "_ts_decorate");
1708
+ function _ts_metadata11(k, v) {
1709
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1710
+ }
1711
+ __name(_ts_metadata11, "_ts_metadata");
1712
+ function _ts_param11(paramIndex, decorator) {
1713
+ return function(target, key) {
1714
+ decorator(target, key, paramIndex);
1715
+ };
1716
+ }
1717
+ __name(_ts_param11, "_ts_param");
1718
+ var _SetDefaultSharing = class _SetDefaultSharing {
1719
+ constructor(sharingRepository, detailsRepository, adminRepository) {
1720
+ __publicField(this, "sharingRepository");
1721
+ __publicField(this, "detailsRepository");
1722
+ __publicField(this, "adminRepository");
1205
1723
  this.sharingRepository = sharingRepository;
1724
+ this.detailsRepository = detailsRepository;
1206
1725
  this.adminRepository = adminRepository;
1207
1726
  }
1208
- async execute({
1209
- assetId,
1210
- assetType,
1211
- sharingMode,
1212
- sharingModeStatus = true
1213
- }) {
1727
+ async execute({ assetId, assetType, orgId, sharedOrigin }) {
1214
1728
  const sharingRecord = await this.sharingRepository.getOne(assetId);
1215
1729
  let currentSharing;
1216
1730
  if (sharingRecord) {
@@ -1218,60 +1732,64 @@ var UpsertDefaultSharing = class {
1218
1732
  } else {
1219
1733
  const createSharing = {
1220
1734
  assetId,
1221
- assetType,
1222
- sharingModeStatus,
1223
- sharingMode: sharingMode != null ? sharingMode : null
1735
+ assetType
1224
1736
  };
1225
1737
  currentSharing = Sharing.create(createSharing);
1226
1738
  await this.sharingRepository.create(currentSharing.toTable());
1227
1739
  }
1228
- currentSharing.setSharingMode = sharingMode != null ? sharingMode : (await this.adminRepository.getPlatformConfiguration()).defaultSharingMode;
1229
- currentSharing.setSharingModeStatus = sharingModeStatus;
1230
- currentSharing.update();
1231
- await this.sharingRepository.patch(
1232
- currentSharing.getAssetId,
1233
- currentSharing.toTable()
1234
- );
1740
+ const sharingDetailsTenants = SharingDetail.create({
1741
+ accessLevel: ACCESS_LEVEL.CAN_USE,
1742
+ assetId,
1743
+ sharedOrigin,
1744
+ sharedType: SHARE_TYPE.TENANT,
1745
+ sharedWith: "TENANT",
1746
+ orgId
1747
+ });
1748
+ const sharingDetailsOrg = SharingDetail.create({
1749
+ accessLevel: ACCESS_LEVEL.CAN_EDIT,
1750
+ assetId,
1751
+ sharedOrigin,
1752
+ sharedType: SHARE_TYPE.ORGANIZATION,
1753
+ sharedWith: orgId,
1754
+ orgId
1755
+ });
1756
+ await Promise.all([
1757
+ this.detailsRepository.create(sharingDetailsTenants.toTable()),
1758
+ this.detailsRepository.create(sharingDetailsOrg.toTable())
1759
+ ]);
1235
1760
  return currentSharing;
1236
1761
  }
1237
1762
  };
1238
- UpsertDefaultSharing = __decorateClass([
1239
- injectable(),
1240
- __decorateParam(0, inject("SharingRepository")),
1241
- __decorateParam(1, inject("AdminRepository"))
1242
- ], UpsertDefaultSharing);
1243
- var CheckOrgPermissions = class {
1244
- constructor(organizationRepository) {
1245
- this.organizationRepository = organizationRepository;
1246
- }
1247
- //TODO Need Tes
1248
- async execute({
1249
- orgId
1250
- }) {
1251
- const hasPublicAccess = await this.organizationRepository.getOne(orgId);
1252
- const privacy = (hasPublicAccess == null ? void 0 : hasPublicAccess.effective_asset_sharing) ? "private" /* PRIVATE */ : "public" /* PUBLIC */;
1253
- return { privacy };
1254
- }
1255
- };
1256
- CheckOrgPermissions = __decorateClass([
1763
+ __name(_SetDefaultSharing, "SetDefaultSharing");
1764
+ var SetDefaultSharing = _SetDefaultSharing;
1765
+ SetDefaultSharing = _ts_decorate11([
1257
1766
  injectable(),
1258
- __decorateParam(0, inject("OrganizationRepository"))
1259
- ], CheckOrgPermissions);
1767
+ _ts_param11(0, inject("SharingRepository")),
1768
+ _ts_param11(1, inject("SharingDetailsRepository")),
1769
+ _ts_param11(2, inject("AdminRepository")),
1770
+ _ts_metadata11("design:type", Function),
1771
+ _ts_metadata11("design:paramtypes", [
1772
+ typeof SharingRepositoryInterface === "undefined" ? Object : SharingRepositoryInterface,
1773
+ typeof SharingDetailsRepositoryInterface === "undefined" ? Object : SharingDetailsRepositoryInterface,
1774
+ typeof AdminRepositoryInterface === "undefined" ? Object : AdminRepositoryInterface
1775
+ ])
1776
+ ], SetDefaultSharing);
1260
1777
 
1261
1778
  // src/index.ts
1262
1779
  var api = {
1263
- upsert: (...args) => Context.resolve(UpsertSharing).execute(...args),
1264
- list: (...args) => Context.resolve(ListSharing).execute(...args),
1265
- delete: (...args) => Context.resolve(DeleteSharing).execute(...args)
1780
+ upsert: /* @__PURE__ */ __name((...args) => Context.resolve(UpsertSharing).execute(...args), "upsert"),
1781
+ list: /* @__PURE__ */ __name((...args) => Context.resolve(ListSharing).execute(...args), "list"),
1782
+ delete: /* @__PURE__ */ __name((...args) => Context.resolve(DeleteSharing).execute(...args), "delete")
1266
1783
  };
1267
- var checkUserAccessLevel = (...args) => Context.resolve(CheckUserAccessLevel).execute(...args);
1268
- var checkAppAccess = (...args) => Context.resolve(CheckAppAccess).execute(...args);
1269
- var getOrgTree = (...args) => Context.resolve(GetOrgTree).execute(...args);
1270
- var fromTokenToUser = (...args) => Context.resolve(FromTokenToUser).execute(...args);
1271
- var hasAdminRole = (...args) => Context.resolve(HasAdminRole).execute(...args);
1272
- var upsertDefaultSharing = (...args) => Context.resolve(UpsertDefaultSharing).execute(...args);
1273
- var checkOrgPermissions = (...args) => Context.resolve(CheckOrgPermissions).execute(...args);
1784
+ var checkUserAccessLevel = /* @__PURE__ */ __name((...args) => Context.resolve(CheckUserAccessLevel).execute(...args), "checkUserAccessLevel");
1785
+ var checkAppAccess = /* @__PURE__ */ __name((...args) => Context.resolve(CheckAppAccess).execute(...args), "checkAppAccess");
1786
+ var getOrgTree = /* @__PURE__ */ __name((...args) => Context.resolve(GetOrgTree).execute(...args), "getOrgTree");
1787
+ var fromTokenToUser = /* @__PURE__ */ __name((...args) => Context.resolve(FromTokenToUser).execute(...args), "fromTokenToUser");
1788
+ var hasAdminRole = /* @__PURE__ */ __name((...args) => Context.resolve(HasAdminRole).execute(...args), "hasAdminRole");
1789
+ var hasSharingPermission = /* @__PURE__ */ __name((...args) => Context.resolve(HasSharingPermission).execute(...args), "hasSharingPermission");
1790
+ var setDefaultSharing = /* @__PURE__ */ __name((...args) => Context.resolve(SetDefaultSharing).execute(...args), "setDefaultSharing");
1791
+ var checkOrgPermissions = /* @__PURE__ */ __name((...args) => Context.resolve(CheckOrgPermissions).execute(...args), "checkOrgPermissions");
1274
1792
 
1275
- export { ACCESS_LEVEL, APP_SHARING_STATUS, ASSET_TYPE, HIERARCHY_SCOPE, ORGANIZATION_ANONYMOUS, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, SHARING_MODE, api, checkAppAccess, checkOrgPermissions, checkUserAccessLevel, fromTokenToUser, getOrgTree, hasAdminRole, upsertDefaultSharing };
1793
+ 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, hasSharingPermission, setDefaultSharing };
1276
1794
  //# sourceMappingURL=index.mjs.map
1277
1795
  //# sourceMappingURL=index.mjs.map