@qrvey/assets-sharing 0.3.4 → 0.3.5-1236

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 (108) hide show
  1. package/dist/cjs/common/constants.js +11 -1
  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 +6 -0
  6. package/dist/cjs/context.js.map +1 -1
  7. package/dist/cjs/index.js +23 -1
  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/types/orgTreeResult.js +10 -0
  26. package/dist/cjs/sharing/entities/types/orgTreeResult.js.map +1 -0
  27. package/dist/cjs/sharing/entities/types/organization.type.js +3 -0
  28. package/dist/cjs/sharing/entities/types/organization.type.js.map +1 -0
  29. package/dist/cjs/sharing/implementations/admin.repository.js +30 -0
  30. package/dist/cjs/sharing/implementations/admin.repository.js.map +1 -0
  31. package/dist/cjs/sharing/implementations/details.repository.js +13 -4
  32. package/dist/cjs/sharing/implementations/details.repository.js.map +1 -1
  33. package/dist/cjs/sharing/implementations/organization.model.js +31 -0
  34. package/dist/cjs/sharing/implementations/organization.model.js.map +1 -0
  35. package/dist/cjs/sharing/implementations/organization.repository.js +73 -0
  36. package/dist/cjs/sharing/implementations/organization.repository.js.map +1 -0
  37. package/dist/cjs/sharing/implementations/sharing.model.js +4 -2
  38. package/dist/cjs/sharing/implementations/sharing.model.js.map +1 -1
  39. package/dist/cjs/sharing/interfaces/adminRepository.interface.js +3 -0
  40. package/dist/cjs/sharing/interfaces/adminRepository.interface.js.map +1 -0
  41. package/dist/cjs/sharing/interfaces/organizationRepository.interface.js +3 -0
  42. package/dist/cjs/sharing/interfaces/organizationRepository.interface.js.map +1 -0
  43. package/dist/cjs/sharing/services/checkAppAccess.js +47 -0
  44. package/dist/cjs/sharing/services/checkAppAccess.js.map +1 -0
  45. package/dist/cjs/sharing/services/checkOrgPermissions.js +36 -0
  46. package/dist/cjs/sharing/services/checkOrgPermissions.js.map +1 -0
  47. package/dist/cjs/sharing/services/checkUserAccessLevel.js +30 -7
  48. package/dist/cjs/sharing/services/checkUserAccessLevel.js.map +1 -1
  49. package/dist/cjs/sharing/services/delete.js +5 -1
  50. package/dist/cjs/sharing/services/delete.js.map +1 -1
  51. package/dist/cjs/sharing/services/getOrgTree.js +31 -0
  52. package/dist/cjs/sharing/services/getOrgTree.js.map +1 -0
  53. package/dist/cjs/sharing/services/list.js +5 -1
  54. package/dist/cjs/sharing/services/list.js.map +1 -1
  55. package/dist/cjs/sharing/services/upsert.js +11 -2
  56. package/dist/cjs/sharing/services/upsert.js.map +1 -1
  57. package/dist/cjs/sharing/services/upsertDefaultSharing.js +71 -0
  58. package/dist/cjs/sharing/services/upsertDefaultSharing.js.map +1 -0
  59. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  60. package/dist/esm/index.mjs +1089 -312
  61. package/dist/esm/index.mjs.map +1 -1
  62. package/dist/types/index.d.ts +348 -54
  63. package/package.json +60 -51
  64. package/.eslintrc +0 -88
  65. package/__test__/hasAdminRole.test.ts +0 -299
  66. package/jest.config.ts +0 -15
  67. package/src/common/common.type.ts +0 -33
  68. package/src/common/constants.ts +0 -47
  69. package/src/common/persistence/base.ts +0 -13
  70. package/src/common/persistence/poolClient.ts +0 -7
  71. package/src/common/util.ts +0 -8
  72. package/src/context.ts +0 -35
  73. package/src/index.ts +0 -38
  74. package/src/quser/entities/types/user.type.ts +0 -14
  75. package/src/quser/entities/user.ts +0 -31
  76. package/src/quser/implementations/group.model.ts +0 -18
  77. package/src/quser/implementations/group.repository.ts +0 -20
  78. package/src/quser/implementations/user.model.ts +0 -23
  79. package/src/quser/implementations/user.repository.ts +0 -35
  80. package/src/quser/interfaces/rolesRepository.interface.ts +0 -3
  81. package/src/quser/interfaces/userRepository.interface.ts +0 -10
  82. package/src/quser/services/fromTokenToUser.ts +0 -49
  83. package/src/quser/services/hasAdminRole.ts +0 -52
  84. package/src/sharing/entities/details.ts +0 -144
  85. package/src/sharing/entities/sharing.ts +0 -84
  86. package/src/sharing/entities/types/details.type.ts +0 -58
  87. package/src/sharing/entities/types/sharing.type.ts +0 -24
  88. package/src/sharing/implementations/details.model.ts +0 -93
  89. package/src/sharing/implementations/details.repository.ts +0 -154
  90. package/src/sharing/implementations/dm.model.ts +0 -21
  91. package/src/sharing/implementations/dm.repository.ts +0 -23
  92. package/src/sharing/implementations/dx.model.ts +0 -30
  93. package/src/sharing/implementations/dx.repository.ts +0 -22
  94. package/src/sharing/implementations/sharing.model.ts +0 -33
  95. package/src/sharing/implementations/sharing.repository.ts +0 -36
  96. package/src/sharing/interfaces/dashboardRepository.interface.ts +0 -3
  97. package/src/sharing/interfaces/detailsRepository.interface.ts +0 -60
  98. package/src/sharing/interfaces/downloadManagerRepository.interface.ts +0 -3
  99. package/src/sharing/interfaces/sharingRepository.interface.ts +0 -32
  100. package/src/sharing/services/checkUserAccessLevel.ts +0 -63
  101. package/src/sharing/services/delete.ts +0 -24
  102. package/src/sharing/services/list.ts +0 -53
  103. package/src/sharing/services/upsert.ts +0 -197
  104. package/tsconfig.cjs.json +0 -7
  105. package/tsconfig.json +0 -19
  106. package/tsup.config.cjs.ts +0 -11
  107. package/tsup.config.esm.ts +0 -12
  108. package/tsup.config.types.ts +0 -9
@@ -1,11 +1,11 @@
1
1
  import 'reflect-metadata';
2
2
  import { container, injectable, inject } from 'tsyringe';
3
3
  import { CrudSchema, CrudService, buildFilter, getDbPool } from '@qrvey/data-persistence';
4
+ import { getAttribute } from '@qrvey/utils';
4
5
  import { getId } from '@qrvey/id-generator';
5
6
 
6
7
  var __defProp = Object.defineProperty;
7
8
  var __defProps = Object.defineProperties;
8
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
9
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
10
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
11
  var __hasOwnProp = Object.prototype.hasOwnProperty;
@@ -23,19 +23,27 @@ var __spreadValues = (a, b) => {
23
23
  return a;
24
24
  };
25
25
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
- var __decorateClass = (decorators, target, key, kind) => {
27
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
28
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
29
- if (decorator = decorators[i])
30
- result = (decorator(result)) || result;
31
- return result;
32
- };
33
- var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index);
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;
38
+ };
39
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
34
40
 
35
41
  // src/common/constants.ts
36
42
  var ENVIRONMENT = {
37
43
  SERVER_PREFIX: process.env.SERVER_PREFIX,
38
- TABLE_PREFIX: process.env.TABLE_PREFIX
44
+ TABLE_PREFIX: process.env.TABLE_PREFIX,
45
+ DOMAIN: process.env.DOMAIN,
46
+ API_KEY: process.env.API_KEY
39
47
  };
40
48
  var DATABASE_INFO = {
41
49
  DATA_PERSISTENCE_SCHEMA: "admin",
@@ -43,54 +51,67 @@ var DATABASE_INFO = {
43
51
  TABLE_PREFIX: ENVIRONMENT.TABLE_PREFIX
44
52
  };
45
53
  var ORGANIZATION_QRVEY = "org:0";
46
- var ASSET_TYPE = /* @__PURE__ */ ((ASSET_TYPE2) => {
54
+ var USER_ANONYMOUS = "anonymous";
55
+ var ASSET_TYPE = /* @__PURE__ */ (function(ASSET_TYPE2) {
47
56
  ASSET_TYPE2["DX"] = "DX";
48
57
  ASSET_TYPE2["DM"] = "DM";
49
58
  return ASSET_TYPE2;
50
- })(ASSET_TYPE || {});
51
- var SHARED_ORIGIN = /* @__PURE__ */ ((SHARED_ORIGIN3) => {
52
- SHARED_ORIGIN3["INTERNAL"] = "INTERNAL";
53
- SHARED_ORIGIN3["EXTERNAL"] = "EXTERNAL";
54
- SHARED_ORIGIN3["UNKNOWN"] = "UNKNOWN";
55
- return SHARED_ORIGIN3;
56
- })(SHARED_ORIGIN || {});
57
- var SHARE_TYPE = /* @__PURE__ */ ((SHARE_TYPE3) => {
58
- SHARE_TYPE3["USER"] = "USER";
59
- SHARE_TYPE3["ROLE"] = "ROLE";
60
- SHARE_TYPE3["ORGANIZATION"] = "ORGANIZATION";
61
- return SHARE_TYPE3;
62
- })(SHARE_TYPE || {});
63
- var ACCESS_LEVEL = /* @__PURE__ */ ((ACCESS_LEVEL3) => {
64
- ACCESS_LEVEL3[ACCESS_LEVEL3["NONE"] = 0] = "NONE";
65
- ACCESS_LEVEL3[ACCESS_LEVEL3["CAN_USE"] = 1] = "CAN_USE";
66
- ACCESS_LEVEL3[ACCESS_LEVEL3["CAN_EDIT"] = 2] = "CAN_EDIT";
67
- ACCESS_LEVEL3[ACCESS_LEVEL3["ADMIN"] = 4] = "ADMIN";
68
- return ACCESS_LEVEL3;
69
- })(ACCESS_LEVEL || {});
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
+ APP_SHARING_STATUS2["PUBLIC"] = "public";
82
+ APP_SHARING_STATUS2["PRIVATE"] = "private";
83
+ APP_SHARING_STATUS2["SHARED"] = "shared";
84
+ return APP_SHARING_STATUS2;
85
+ })({});
70
86
  var LIMIT_PER_PAGE = 10;
71
87
 
72
88
  // src/quser/implementations/group.model.ts
73
- var GroupModel = class extends CrudSchema {
89
+ var _GroupModel = class _GroupModel extends CrudSchema {
74
90
  };
75
- GroupModel.table = {
91
+ __name(_GroupModel, "GroupModel");
92
+ __publicField(_GroupModel, "table", {
76
93
  name: `${DATABASE_INFO.SERVER_PREFIX}Groups`,
77
94
  alias: "qv_groups"
78
- };
79
- GroupModel.columns = {
95
+ });
96
+ __publicField(_GroupModel, "columns", {
80
97
  groupid: {
81
98
  type: "string"
99
+ },
100
+ name: {
101
+ type: "string"
82
102
  }
83
- };
84
- GroupModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
103
+ });
104
+ __publicField(_GroupModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
105
+ var GroupModel = _GroupModel;
85
106
  var poolClient;
86
107
  function getPoolClient() {
87
- if (!poolClient)
88
- poolClient = getDbPool();
108
+ if (!poolClient) poolClient = getDbPool();
89
109
  return poolClient;
90
110
  }
111
+ __name(getPoolClient, "getPoolClient");
91
112
 
92
113
  // src/common/persistence/base.ts
93
- var BaseRepository = class extends CrudService {
114
+ var _BaseRepository = class _BaseRepository extends CrudService {
94
115
  constructor(schema) {
95
116
  super(schema, getPoolClient());
96
117
  }
@@ -98,27 +119,81 @@ var BaseRepository = class extends CrudService {
98
119
  return buildFilter(attribute, value, operator);
99
120
  }
100
121
  };
122
+ __name(_BaseRepository, "BaseRepository");
123
+ var BaseRepository = _BaseRepository;
101
124
 
102
125
  // src/quser/implementations/group.repository.ts
103
- var GroupRepository = class extends BaseRepository {
126
+ var _GroupRepository = class _GroupRepository extends BaseRepository {
104
127
  constructor() {
105
128
  super(GroupModel);
106
129
  }
107
130
  async getOne(identifier) {
108
131
  const params = {
109
- filters: [this.filter("groupid", identifier)]
132
+ filters: {
133
+ OR: [
134
+ this.filter("groupid", identifier),
135
+ this.filter("name", identifier)
136
+ ]
137
+ }
110
138
  };
111
139
  const response = await super.findItem(params);
112
140
  return response;
113
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
+ }
162
+ };
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
+ }
114
186
  };
115
- var UserModel = class extends CrudSchema {
187
+ __name(_PermissionRepository, "PermissionRepository");
188
+ var PermissionRepository = _PermissionRepository;
189
+ var _UserModel = class _UserModel extends CrudSchema {
116
190
  };
117
- UserModel.table = {
191
+ __name(_UserModel, "UserModel");
192
+ __publicField(_UserModel, "table", {
118
193
  name: `${DATABASE_INFO.SERVER_PREFIX}Users`,
119
194
  alias: "qv_users"
120
- };
121
- UserModel.columns = {
195
+ });
196
+ __publicField(_UserModel, "columns", {
122
197
  userid: {
123
198
  type: "string",
124
199
  primary: true,
@@ -127,17 +202,20 @@ UserModel.columns = {
127
202
  groups: {
128
203
  type: "array"
129
204
  }
130
- };
131
- UserModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
205
+ });
206
+ __publicField(_UserModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
207
+ var UserModel = _UserModel;
132
208
 
133
209
  // src/quser/implementations/user.repository.ts
134
- var UserRepository = class extends BaseRepository {
210
+ var _UserRepository = class _UserRepository extends BaseRepository {
135
211
  constructor() {
136
212
  super(UserModel);
137
213
  }
138
214
  async getOne(identifier) {
139
215
  const params = {
140
- filters: [this.filter("userid", identifier)]
216
+ filters: [
217
+ this.filter("userid", identifier)
218
+ ]
141
219
  };
142
220
  const response = await super.findItem(params);
143
221
  return response;
@@ -153,26 +231,77 @@ var UserRepository = class extends BaseRepository {
153
231
  return response;
154
232
  }
155
233
  };
156
- var SharingDetailsModel = class extends CrudSchema {
234
+ __name(_UserRepository, "UserRepository");
235
+ var UserRepository = _UserRepository;
236
+ var _AdminRepository = class _AdminRepository {
237
+ async getApplicationInfo(body) {
238
+ var _a;
239
+ const url = `${ENVIRONMENT.DOMAIN}/devapi/v4/user/${body.userId}/app/${body.appId}`;
240
+ const headers = {
241
+ "x-api-key": ENVIRONMENT.API_KEY
242
+ };
243
+ const requestOptions = {
244
+ method: "GET",
245
+ headers
246
+ };
247
+ const response = await fetch(url, requestOptions);
248
+ const data = await response.json();
249
+ return {
250
+ status: response.status,
251
+ data: {
252
+ userId: (_a = data == null ? void 0 : data.userid) != null ? _a : body.userId,
253
+ appId: getAttribute(data, "appId"),
254
+ userEmail: getAttribute(data, "userEmail")
255
+ }
256
+ };
257
+ }
157
258
  };
158
- SharingDetailsModel.table = {
259
+ __name(_AdminRepository, "AdminRepository");
260
+ var AdminRepository = _AdminRepository;
261
+ var _SharingDetailsModel = class _SharingDetailsModel extends CrudSchema {
262
+ };
263
+ __name(_SharingDetailsModel, "SharingDetailsModel");
264
+ __publicField(_SharingDetailsModel, "table", {
159
265
  name: `${DATABASE_INFO.SERVER_PREFIX}_sharing_details`,
160
266
  alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing_details`
161
- };
162
- SharingDetailsModel.columns = {
163
- sharing_details_id: { type: "string", primary: true },
164
- asset_id: { type: "string" },
165
- access_level: { type: "numeric" },
166
- org_id: { type: "string" },
167
- shared_with: { type: "string" },
168
- shared_type: { type: "string" },
169
- shared_email: { type: "string" },
170
- share_origin: { type: "string" },
171
- created_at: { type: "date" },
172
- updated_at: { type: "date" },
173
- deleted_at: { type: "date" }
174
- };
175
- 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", {
176
305
  sharingDetailsOrgId: {
177
306
  name: "sharing_details_org_id_index",
178
307
  columns: [
@@ -236,18 +365,21 @@ SharingDetailsModel.indexes = {
236
365
  "share_origin"
237
366
  ]
238
367
  }
239
- };
240
- SharingDetailsModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
241
- SharingDetailsModel.usePool = true;
368
+ });
369
+ __publicField(_SharingDetailsModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
370
+ __publicField(_SharingDetailsModel, "usePool", true);
371
+ var SharingDetailsModel = _SharingDetailsModel;
242
372
 
243
373
  // src/sharing/implementations/details.repository.ts
244
- var SharingDetailsRepository = class extends BaseRepository {
374
+ var _SharingDetailsRepository = class _SharingDetailsRepository extends BaseRepository {
245
375
  constructor() {
246
376
  super(SharingDetailsModel);
247
377
  }
248
378
  async getOne(sharingDetailId) {
249
379
  const params = {
250
- filters: [this.filter("sharing_details_id", sharingDetailId)]
380
+ filters: [
381
+ this.filter("sharing_details_id", sharingDetailId)
382
+ ]
251
383
  };
252
384
  const response = await super.findItem(params);
253
385
  return response;
@@ -264,6 +396,7 @@ var SharingDetailsRepository = class extends BaseRepository {
264
396
  return response;
265
397
  }
266
398
  async getList(options) {
399
+ var _a;
267
400
  const assetIndex = SharingDetailsModel.indexes.sharingDetailsAssetId;
268
401
  const pagination = this.getPagination(options.pagination);
269
402
  const params = {
@@ -273,7 +406,9 @@ var SharingDetailsRepository = class extends BaseRepository {
273
406
  columns: assetIndex.columns
274
407
  }
275
408
  };
276
- const filterList = [this.filter("asset_id", options.data.assetId)];
409
+ const filterList = [
410
+ this.filter("asset_id", options.data.assetId)
411
+ ];
277
412
  if (options.filters) {
278
413
  options.filters.forEach((filter) => {
279
414
  filterList.push(this.filter(filter.column, filter.value));
@@ -281,14 +416,9 @@ var SharingDetailsRepository = class extends BaseRepository {
281
416
  }
282
417
  params.filters = filterList;
283
418
  if (options.data.user) {
284
- const currentFilter = this.getUserFilter(
285
- options.data.user,
286
- filterList
287
- );
288
- params.filters = currentFilter;
419
+ params.filters = this.getUserFilter(options.data.user, (_a = options.data.parentOrgIds) != null ? _a : [], filterList);
289
420
  }
290
- if (options.sorting)
291
- params.sorting = options.sorting;
421
+ if (options.sorting) params.sorting = options.sorting;
292
422
  const response = await super.find(params);
293
423
  return response;
294
424
  }
@@ -297,10 +427,9 @@ var SharingDetailsRepository = class extends BaseRepository {
297
427
  return response;
298
428
  }
299
429
  async patch(sharingDetailId, details) {
300
- await super.update(
301
- [this.filter("sharing_details_id", sharingDetailId)],
302
- details
303
- );
430
+ await super.update([
431
+ this.filter("sharing_details_id", sharingDetailId)
432
+ ], details);
304
433
  return true;
305
434
  }
306
435
  async delete(sharingDetailId) {
@@ -316,9 +445,12 @@ var SharingDetailsRepository = class extends BaseRepository {
316
445
  from: (_b = options == null ? void 0 : options.from) != null ? _b : void 0
317
446
  };
318
447
  }
319
- getUserFilter(user, currentFilters) {
448
+ getUserFilter(user, parentsOrgIds, currentFilters) {
320
449
  const { userId, roles } = user;
321
450
  const orgId = user.orgId === "" ? ORGANIZATION_QRVEY : user.orgId;
451
+ if (!parentsOrgIds.includes(ORGANIZATION_QRVEY)) {
452
+ parentsOrgIds.push(ORGANIZATION_QRVEY);
453
+ }
322
454
  const sharing = {
323
455
  OR: [
324
456
  {
@@ -334,6 +466,12 @@ var SharingDetailsRepository = class extends BaseRepository {
334
466
  this.buildFilter("shared_type", "ORGANIZATION"),
335
467
  this.buildFilter("org_id", orgId)
336
468
  ]
469
+ },
470
+ {
471
+ AND: [
472
+ this.buildFilter("shared_type", "TENANT"),
473
+ this.buildFilter("org_id", parentsOrgIds, "IN")
474
+ ]
337
475
  }
338
476
  ]
339
477
  };
@@ -347,35 +485,42 @@ var SharingDetailsRepository = class extends BaseRepository {
347
485
  });
348
486
  }
349
487
  const filter = [];
350
- if (currentFilters)
351
- filter.push(...currentFilters);
488
+ if (currentFilters) filter.push(...currentFilters);
352
489
  filter.push(sharing);
353
- return { AND: filter };
490
+ return {
491
+ AND: filter
492
+ };
354
493
  }
355
494
  };
356
- var DownloadManagerSchema = class extends CrudSchema {
495
+ __name(_SharingDetailsRepository, "SharingDetailsRepository");
496
+ var SharingDetailsRepository = _SharingDetailsRepository;
497
+ var _DownloadManagerSchema = class _DownloadManagerSchema extends CrudSchema {
357
498
  };
358
- DownloadManagerSchema.table = {
499
+ __name(_DownloadManagerSchema, "DownloadManagerSchema");
500
+ __publicField(_DownloadManagerSchema, "table", {
359
501
  name: `${DATABASE_INFO.SERVER_PREFIX}DownloadManager`,
360
502
  alias: `${DATABASE_INFO.TABLE_PREFIX}_download_manager`
361
- };
362
- DownloadManagerSchema.columns = {
503
+ });
504
+ __publicField(_DownloadManagerSchema, "columns", {
363
505
  downloadManagerId: {
364
506
  primary: true,
365
507
  type: "String",
366
508
  columnId: true
367
509
  }
368
- };
369
- DownloadManagerSchema.schema = "exports";
370
- DownloadManagerSchema.usePool = true;
510
+ });
511
+ __publicField(_DownloadManagerSchema, "schema", "exports");
512
+ __publicField(_DownloadManagerSchema, "usePool", true);
513
+ var DownloadManagerSchema = _DownloadManagerSchema;
371
514
 
372
515
  // src/sharing/implementations/dm.repository.ts
373
- var DownloadManagerRepository = class extends BaseRepository {
516
+ var _DownloadManagerRepository = class _DownloadManagerRepository extends BaseRepository {
374
517
  constructor() {
375
518
  super(DownloadManagerSchema);
376
519
  }
377
520
  async get(identifier) {
378
- const filterList = [this.filter("downloadManagerId", identifier)];
521
+ const filterList = [
522
+ this.filter("downloadManagerId", identifier)
523
+ ];
379
524
  const params = {
380
525
  filters: filterList
381
526
  };
@@ -383,38 +528,62 @@ var DownloadManagerRepository = class extends BaseRepository {
383
528
  return response;
384
529
  }
385
530
  };
386
- var DashboardSchema = class extends CrudSchema {
531
+ __name(_DownloadManagerRepository, "DownloadManagerRepository");
532
+ var DownloadManagerRepository = _DownloadManagerRepository;
533
+ var _DashboardSchema = class _DashboardSchema extends CrudSchema {
387
534
  };
388
- DashboardSchema.table = {
535
+ __name(_DashboardSchema, "DashboardSchema");
536
+ __publicField(_DashboardSchema, "table", {
389
537
  name: `${DATABASE_INFO.SERVER_PREFIX}_dx_dashboard`,
390
538
  alias: `${DATABASE_INFO.TABLE_PREFIX}_dashboard`
391
- };
392
- DashboardSchema.columns = {
393
- ResourceUID: { type: "string", primary: true },
394
- dashboardId: { type: "string" },
395
- contentId: { type: "string" },
396
- userId: { type: "string" },
397
- ownerId: { type: "string" },
398
- appId: { type: "string" },
399
- qvAttributes: { type: "object" }
400
- };
401
- 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", {
402
565
  ResourceUID: {
403
566
  name: "MetadataByResource",
404
- columns: ["Metadata", "ResourceUID"]
567
+ columns: [
568
+ "Metadata",
569
+ "ResourceUID"
570
+ ]
405
571
  }
406
- };
407
- DashboardSchema.schema = "dashboard_x";
408
- DashboardSchema.usePool = true;
572
+ });
573
+ __publicField(_DashboardSchema, "schema", "dashboard_x");
574
+ __publicField(_DashboardSchema, "usePool", true);
575
+ var DashboardSchema = _DashboardSchema;
409
576
 
410
577
  // src/sharing/implementations/dx.repository.ts
411
- var DashboardRepository = class extends BaseRepository {
578
+ var _DashboardRepository = class _DashboardRepository extends BaseRepository {
412
579
  constructor() {
413
580
  super(DashboardSchema);
414
581
  }
415
582
  async get(identifier) {
416
583
  const uid = `DASHBOARD=${identifier}&BRANCH=MAIN`;
417
- const filterList = [this.filter("ResourceUID", uid)];
584
+ const filterList = [
585
+ this.filter("ResourceUID", uid)
586
+ ];
418
587
  const params = {
419
588
  filters: filterList
420
589
  };
@@ -422,41 +591,196 @@ var DashboardRepository = class extends BaseRepository {
422
591
  return response;
423
592
  }
424
593
  };
425
- var SharingModel = class extends CrudSchema {
594
+ __name(_DashboardRepository, "DashboardRepository");
595
+ var DashboardRepository = _DashboardRepository;
596
+ var _OrganizationModel = class _OrganizationModel extends CrudSchema {
426
597
  };
427
- SharingModel.table = {
428
- name: `${DATABASE_INFO.SERVER_PREFIX}_sharing`,
429
- alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing`
598
+ __name(_OrganizationModel, "OrganizationModel");
599
+ __publicField(_OrganizationModel, "table", {
600
+ name: "qv_organizations",
601
+ alias: `${DATABASE_INFO.TABLE_PREFIX}_organizations`
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
+ },
637
+ parent_org_id: {
638
+ name: "idx_qv_orgs_parent",
639
+ columns: [
640
+ "parent_org_id"
641
+ ]
642
+ }
643
+ });
644
+ __publicField(_OrganizationModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
645
+ __publicField(_OrganizationModel, "usePool", true);
646
+ var OrganizationModel = _OrganizationModel;
647
+
648
+ // src/sharing/entities/types/orgTreeResult.ts
649
+ var HIERARCHY_SCOPE = /* @__PURE__ */ (function(HIERARCHY_SCOPE2) {
650
+ HIERARCHY_SCOPE2["CHILDREN"] = "children";
651
+ HIERARCHY_SCOPE2["PARENTS"] = "parents";
652
+ HIERARCHY_SCOPE2["BOTH"] = "both";
653
+ return HIERARCHY_SCOPE2;
654
+ })({});
655
+
656
+ // src/sharing/implementations/organization.repository.ts
657
+ var _OrganizationRepository = class _OrganizationRepository extends BaseRepository {
658
+ constructor() {
659
+ super(OrganizationModel);
660
+ }
661
+ async getOne(orgId) {
662
+ const params = {
663
+ filters: [
664
+ this.filter('"orgId"', orgId)
665
+ ]
666
+ };
667
+ const response = await super.findItem(params);
668
+ return response;
669
+ }
670
+ async getOrgTree(orgId, scope = HIERARCHY_SCOPE.BOTH) {
671
+ const cte = `WITH target AS (SELECT org_path FROM admin.qv_organizations WHERE "orgId" = '${orgId}')`;
672
+ let condition = "";
673
+ if (scope === HIERARCHY_SCOPE.CHILDREN) {
674
+ condition = `admin.qv_organizations.org_path <@ target.org_path`;
675
+ } else if (scope === HIERARCHY_SCOPE.PARENTS) {
676
+ condition = `admin.qv_organizations.org_path @> target.org_path`;
677
+ } else {
678
+ condition = `(
679
+ admin.qv_organizations.org_path <@ target.org_path
680
+ OR
681
+ admin.qv_organizations.org_path @> target.org_path
682
+ )`;
683
+ }
684
+ const selectClause = `
685
+ SELECT
686
+ COALESCE(
687
+ ARRAY_AGG("orgId") FILTER (
688
+ WHERE admin.qv_organizations.org_path <@ target.org_path AND "orgId" != '${orgId}'
689
+ ),
690
+ '{}'
691
+ ) as db_children,
692
+ COALESCE(
693
+ ARRAY_AGG("orgId") FILTER (
694
+ WHERE admin.qv_organizations.org_path @> target.org_path AND "orgId" != '${orgId}'
695
+ ),
696
+ '{}'
697
+ ) as db_parents
698
+ `;
699
+ const fromWhereClause = `
700
+ FROM admin.qv_organizations, target
701
+ WHERE ${condition}
702
+ AND "orgId" != '${orgId}'
703
+ `;
704
+ const fullSql = `${cte} ${selectClause} ${fromWhereClause};`;
705
+ const result = await super.runRawQuery(fullSql, []);
706
+ const row = result == null ? void 0 : result.rows[0];
707
+ if (!row) {
708
+ return {
709
+ childrenIds: [],
710
+ parentIds: []
711
+ };
712
+ }
713
+ return {
714
+ childrenIds: row.db_children,
715
+ parentIds: row.db_parents
716
+ };
717
+ }
430
718
  };
431
- SharingModel.columns = {
432
- asset_id: { type: "string", primary: true },
433
- asset_type: { type: "string" },
434
- created_at: { type: "date" },
435
- updated_at: { type: "date" },
436
- deleted_at: { type: "date" },
437
- qvAttributes: { type: "object" }
719
+ __name(_OrganizationRepository, "OrganizationRepository");
720
+ var OrganizationRepository = _OrganizationRepository;
721
+ var _SharingModel = class _SharingModel extends CrudSchema {
438
722
  };
439
- SharingModel.indexes = {
440
- sharingAssetIdAssetType: {
441
- name: "sharing_asset_id_asset_type_index",
442
- columns: ["asset_id", "asset_type"]
723
+ __name(_SharingModel, "SharingModel");
724
+ __publicField(_SharingModel, "table", {
725
+ name: `${DATABASE_INFO.SERVER_PREFIX}_sharing`,
726
+ alias: `${DATABASE_INFO.TABLE_PREFIX}_sharing`
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", {
756
+ sharingConfigLookup: {
757
+ name: "sharing_config_lookup_idx",
758
+ columns: [
759
+ "asset_id",
760
+ "asset_type"
761
+ ]
443
762
  },
444
763
  sharingAssetType: {
445
764
  name: "sharing_asset_type_index",
446
- columns: ["asset_type"]
765
+ columns: [
766
+ "asset_type"
767
+ ]
447
768
  }
448
- };
449
- SharingModel.schema = DATABASE_INFO.DATA_PERSISTENCE_SCHEMA;
450
- SharingModel.usePool = true;
769
+ });
770
+ __publicField(_SharingModel, "schema", DATABASE_INFO.DATA_PERSISTENCE_SCHEMA);
771
+ __publicField(_SharingModel, "usePool", true);
772
+ var SharingModel = _SharingModel;
451
773
 
452
774
  // src/sharing/implementations/sharing.repository.ts
453
- var SharingRepository = class extends BaseRepository {
775
+ var _SharingRepository = class _SharingRepository extends BaseRepository {
454
776
  constructor() {
455
777
  super(SharingModel);
456
778
  }
457
779
  async getOne(assetId) {
458
780
  const params = {
459
- filters: [this.filter("asset_id", assetId)]
781
+ filters: [
782
+ this.filter("asset_id", assetId)
783
+ ]
460
784
  };
461
785
  const response = await super.findItem(params);
462
786
  return response;
@@ -466,44 +790,50 @@ var SharingRepository = class extends BaseRepository {
466
790
  return response;
467
791
  }
468
792
  async patch(assetId, sharing) {
469
- await super.update([this.filter("asset_id", assetId)], sharing);
793
+ await super.update([
794
+ this.filter("asset_id", assetId)
795
+ ], sharing);
470
796
  return true;
471
797
  }
472
798
  async delete(assetId) {
473
- await super.remove([this.filter("asset_id", assetId)]);
799
+ await super.remove([
800
+ this.filter("asset_id", assetId)
801
+ ]);
474
802
  return true;
475
803
  }
476
804
  };
805
+ __name(_SharingRepository, "SharingRepository");
806
+ var SharingRepository = _SharingRepository;
477
807
 
478
808
  // src/context.ts
479
- container.register(
480
- "SharingRepository",
481
- SharingRepository
482
- );
483
- container.register(
484
- "SharingDetailsRepository",
485
- SharingDetailsRepository
486
- );
809
+ container.register("SharingRepository", SharingRepository);
810
+ container.register("SharingDetailsRepository", SharingDetailsRepository);
487
811
  container.register("UserRepository", UserRepository);
488
812
  container.register("RoleRepository", GroupRepository);
489
- container.register(
490
- "dxRepository",
491
- DashboardRepository
492
- );
493
- container.register(
494
- "dmRepository",
495
- DownloadManagerRepository
496
- );
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);
497
818
  var Context = container;
498
819
 
499
820
  // src/common/util.ts
500
821
  function isComposer(type) {
501
- return type === "qrveyLogin" /* composer */ || type === "OPENID_CREATORS" /* openIdComposer */;
822
+ return type === "qrveyLogin" || type === "OPENID_CREATORS";
502
823
  }
824
+ __name(isComposer, "isComposer");
825
+ function isAnonymousUser(value) {
826
+ return (value == null ? void 0 : value.toLowerCase()) === USER_ANONYMOUS;
827
+ }
828
+ __name(isAnonymousUser, "isAnonymousUser");
503
829
 
504
830
  // src/quser/entities/user.ts
505
- var User = class {
831
+ var _User = class _User {
506
832
  constructor(params) {
833
+ __publicField(this, "userId");
834
+ __publicField(this, "email");
835
+ __publicField(this, "groups");
836
+ __publicField(this, "organization");
507
837
  this.userId = params.userid;
508
838
  this.email = params.email;
509
839
  this.groups = params.groups;
@@ -522,19 +852,35 @@ var User = class {
522
852
  return this.organization;
523
853
  }
524
854
  };
855
+ __name(_User, "User");
856
+ var User = _User;
525
857
 
526
858
  // src/quser/services/fromTokenToUser.ts
527
- 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 {
528
877
  constructor(userRepository) {
878
+ __publicField(this, "userRepository");
529
879
  this.userRepository = userRepository;
530
880
  }
531
- async execute({
532
- body
533
- }) {
881
+ async execute({ body }) {
534
882
  var _a;
535
- const current = await this.userRepository.getOne(
536
- body.clientId || body.userId
537
- );
883
+ const current = await this.userRepository.getOne(body.clientId || body.userId);
538
884
  if (current) {
539
885
  const user = new User(current);
540
886
  return {
@@ -558,54 +904,246 @@ var FromTokenToUser = class {
558
904
  };
559
905
  }
560
906
  };
561
- FromTokenToUser = __decorateClass([
907
+ __name(_FromTokenToUser, "FromTokenToUser");
908
+ var FromTokenToUser = _FromTokenToUser;
909
+ FromTokenToUser = _ts_decorate([
562
910
  injectable(),
563
- __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
+ ])
564
916
  ], FromTokenToUser);
565
- var HasAdminRole = class {
566
- 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");
567
939
  this.userRepository = userRepository;
940
+ this.permissionRepository = permissionRepository;
941
+ this.roleRepository = roleRepository;
568
942
  }
569
- async execute({
570
- apiKey,
571
- clientId,
572
- orgId,
573
- userId,
574
- loginType
575
- } = {}) {
576
- if (!userId)
577
- return false;
943
+ async execute({ apiKey, clientId, orgId, userId, loginType, roles } = {}) {
944
+ var _a;
945
+ if (!userId) return false;
946
+ if (isAnonymousUser(clientId)) return false;
578
947
  const existingUser = await this.userRepository.getOne(userId);
579
- const isMasterKey = apiKey && (orgId === void 0 || orgId === ORGANIZATION_QRVEY);
580
- if (isMasterKey && existingUser && (!clientId || clientId === userId))
581
- return true;
582
- const user = await this.userRepository.getList({
583
- data: { identifier: clientId != null ? clientId : userId, role: "administrator" }
584
- });
585
- const isAdmin = user.items.length > 0;
586
- if (isMasterKey && isAdmin)
948
+ const isMasterKey = apiKey && (!orgId || orgId === ORGANIZATION_QRVEY);
949
+ if (isMasterKey && existingUser && (!clientId || clientId === userId)) {
587
950
  return true;
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;
964
+ if (isMasterKey && isAdmin) return true;
588
965
  const inComposer = isComposer(loginType || "");
589
966
  const isExternal = !clientId && !inComposer || orgId && orgId !== ORGANIZATION_QRVEY;
590
- if (isExternal)
591
- return false;
592
- if (isAdmin)
593
- return true;
594
- return false;
967
+ if (isExternal) return false;
968
+ return isAdmin;
595
969
  }
596
970
  };
597
- HasAdminRole = __decorateClass([
971
+ __name(_HasAdminRole, "HasAdminRole");
972
+ var HasAdminRole = _HasAdminRole;
973
+ HasAdminRole = _ts_decorate2([
598
974
  injectable(),
599
- __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
+ ])
600
984
  ], HasAdminRole);
601
- var SharingDetail = class _SharingDetail {
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 {
1057
+ constructor(adminRepository) {
1058
+ __publicField(this, "adminRepository");
1059
+ this.adminRepository = adminRepository;
1060
+ }
1061
+ //TODO Need Test
1062
+ async execute({ appId, userId }) {
1063
+ if (!userId) return {
1064
+ hasAccess: false
1065
+ };
1066
+ const appInfo = await this.adminRepository.getApplicationInfo({
1067
+ appId,
1068
+ userId
1069
+ });
1070
+ if (appInfo.status !== 200) return {
1071
+ hasAccess: false
1072
+ };
1073
+ return {
1074
+ hasAccess: true
1075
+ };
1076
+ }
1077
+ };
1078
+ __name(_CheckAppAccess, "CheckAppAccess");
1079
+ var CheckAppAccess = _CheckAppAccess;
1080
+ CheckAppAccess = _ts_decorate4([
1081
+ injectable(),
1082
+ _ts_param4(0, inject("AdminRepository")),
1083
+ _ts_metadata4("design:type", Function),
1084
+ _ts_metadata4("design:paramtypes", [
1085
+ typeof AdminRepositoryInterface === "undefined" ? Object : AdminRepositoryInterface
1086
+ ])
1087
+ ], CheckAppAccess);
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 {
602
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");
603
1143
  this.sharingDetailsId = params.sharingDetailsId;
604
1144
  this.assetId = params.assetId;
605
1145
  this.accessLevel = params.accessLevel;
606
- this.accessLevelAsText = this.convertAccessLevelToText(
607
- params.accessLevel
608
- );
1146
+ this.accessLevelAsText = this.convertAccessLevelToText(params.accessLevel);
609
1147
  this.orgId = params.orgId;
610
1148
  this.sharedWith = params.sharedWith;
611
1149
  this.sharedType = params.sharedType;
@@ -616,10 +1154,10 @@ var SharingDetail = class _SharingDetail {
616
1154
  this.deletedAt = params.deletedAt;
617
1155
  }
618
1156
  static create(params) {
619
- var _a;
620
1157
  const now = (/* @__PURE__ */ new Date()).toISOString();
621
- const obj = __spreadProps(__spreadValues({}, params), {
622
- 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(),
623
1161
  createdAt: now,
624
1162
  updatedAt: now
625
1163
  });
@@ -641,10 +1179,8 @@ var SharingDetail = class _SharingDetail {
641
1179
  });
642
1180
  }
643
1181
  update(params) {
644
- if (params.accessLevel || params.accessLevel === 0)
645
- this.accessLevel = params.accessLevel;
646
- if (params.sharedEmail)
647
- this.sharedEmail = params.sharedEmail;
1182
+ if (params.accessLevel || params.accessLevel === 0) this.accessLevel = params.accessLevel;
1183
+ if (params.sharedEmail) this.sharedEmail = params.sharedEmail;
648
1184
  this.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
649
1185
  }
650
1186
  toTable() {
@@ -706,40 +1242,92 @@ var SharingDetail = class _SharingDetail {
706
1242
  return (_a = ACCESS_LEVEL[level]) != null ? _a : "UNKNOWN";
707
1243
  }
708
1244
  };
1245
+ __name(_SharingDetail, "SharingDetail");
1246
+ var SharingDetail = _SharingDetail;
709
1247
 
710
1248
  // src/sharing/services/checkUserAccessLevel.ts
711
- var CheckUserAccessLevel = class {
712
- 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");
713
1270
  this.detailsRepository = detailsRepository;
1271
+ this.organizationRepository = organizationRepository;
714
1272
  }
715
- async execute({
716
- userId,
717
- assetId,
718
- clientId,
719
- loginType,
720
- roles,
721
- orgId
722
- }) {
1273
+ async execute({ userId, assetId, assetOrgId, clientId, loginType, roles, orgId }) {
1274
+ var _a;
723
1275
  const user = await fromTokenToUser({
724
- body: { userId, clientId, roles, orgId, loginType }
1276
+ body: {
1277
+ userId,
1278
+ clientId,
1279
+ roles,
1280
+ orgId,
1281
+ loginType
1282
+ }
725
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);
726
1303
  const details = await this.detailsRepository.getList({
727
- data: { assetId, user },
728
- 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
+ ]
729
1315
  });
730
- if (details.items.length === 0)
731
- return { level: 0 /* NONE */, levelAsText: "NONE" };
1316
+ if (details.items.length === 0) return {
1317
+ level: ACCESS_LEVEL.NONE,
1318
+ levelAsText: "NONE"
1319
+ };
732
1320
  const priority = {
733
- ["USER" /* USER */]: 3,
734
- ["ROLE" /* ROLE */]: 2,
735
- ["ORGANIZATION" /* ORGANIZATION */]: 1
1321
+ [SHARE_TYPE.USER]: 4,
1322
+ [SHARE_TYPE.ROLE]: 3,
1323
+ [SHARE_TYPE.ORGANIZATION]: 2,
1324
+ [SHARE_TYPE.TENANT]: 1
736
1325
  };
737
1326
  const priorityDetail = details.items.reduce((best, current) => {
738
1327
  const bestPriority = priority[best.shared_type];
739
1328
  const currentPriority = priority[current.shared_type];
740
1329
  const isBetter = currentPriority > bestPriority || currentPriority === bestPriority && current.access_level > best.access_level;
741
- if (isBetter)
742
- return current;
1330
+ if (isBetter) return current;
743
1331
  return best;
744
1332
  });
745
1333
  const currentDetail = SharingDetail.parse(priorityDetail);
@@ -749,66 +1337,163 @@ var CheckUserAccessLevel = class {
749
1337
  };
750
1338
  }
751
1339
  };
752
- CheckUserAccessLevel = __decorateClass([
1340
+ __name(_CheckUserAccessLevel, "CheckUserAccessLevel");
1341
+ var CheckUserAccessLevel = _CheckUserAccessLevel;
1342
+ CheckUserAccessLevel = _ts_decorate6([
753
1343
  injectable(),
754
- __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
+ ])
755
1351
  ], CheckUserAccessLevel);
756
- 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 {
757
1370
  constructor(sharingRepository) {
1371
+ __publicField(this, "sharingRepository");
758
1372
  this.sharingRepository = sharingRepository;
759
1373
  }
760
1374
  async execute({ body }) {
761
1375
  const { assetId } = body;
762
1376
  const sharing = await this.sharingRepository.getOne(assetId);
763
- if (!sharing)
764
- return null;
1377
+ if (!sharing) return null;
765
1378
  const detailSharing = await this.sharingRepository.delete(assetId);
766
1379
  return detailSharing;
767
1380
  }
768
1381
  };
769
- DeleteSharing = __decorateClass([
1382
+ __name(_DeleteSharing, "DeleteSharing");
1383
+ var DeleteSharing = _DeleteSharing;
1384
+ DeleteSharing = _ts_decorate7([
770
1385
  injectable(),
771
- __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
+ ])
772
1391
  ], DeleteSharing);
773
- var ListSharing = 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 {
1410
+ constructor(organizationRepository) {
1411
+ __publicField(this, "organizationRepository");
1412
+ this.organizationRepository = organizationRepository;
1413
+ }
1414
+ async execute(orgId, scope) {
1415
+ return this.organizationRepository.getOrgTree(orgId, scope != null ? scope : HIERARCHY_SCOPE.BOTH);
1416
+ }
1417
+ };
1418
+ __name(_GetOrgTree, "GetOrgTree");
1419
+ var GetOrgTree = _GetOrgTree;
1420
+ GetOrgTree = _ts_decorate8([
1421
+ injectable(),
1422
+ _ts_param8(0, inject("OrganizationRepository")),
1423
+ _ts_metadata8("design:type", Function),
1424
+ _ts_metadata8("design:paramtypes", [
1425
+ typeof OrganizationRepositoryInterface === "undefined" ? Object : OrganizationRepositoryInterface
1426
+ ])
1427
+ ], GetOrgTree);
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 {
774
1446
  constructor(sharingRepository, detailsRepository) {
1447
+ __publicField(this, "sharingRepository");
1448
+ __publicField(this, "detailsRepository");
775
1449
  this.sharingRepository = sharingRepository;
776
1450
  this.detailsRepository = detailsRepository;
777
1451
  }
778
- async execute({
779
- body
780
- }) {
1452
+ async execute({ body }) {
781
1453
  var _a;
782
- const {
783
- data: { assetId },
784
- pagination
785
- } = body;
1454
+ const { data: { assetId }, pagination } = body;
786
1455
  const sharing = await this.sharingRepository.getOne(assetId);
787
- if (!sharing)
788
- return null;
789
- const sorting = body.sorting && ((_a = body.sorting) == null ? void 0 : _a.length) > 0 ? body.sorting : [{ column: "created_at", direction: "ASC" }];
1456
+ if (!sharing) return null;
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
+ ];
790
1463
  const detailSharing = await this.detailsRepository.getList({
791
- data: { assetId },
1464
+ data: {
1465
+ assetId
1466
+ },
792
1467
  pagination,
793
1468
  sorting
794
1469
  });
795
- const items = detailSharing.items.map(
796
- (item) => SharingDetail.parse(item).toJSON()
797
- );
1470
+ const items = detailSharing.items.map((item) => SharingDetail.parse(item).toJSON());
798
1471
  return __spreadProps(__spreadValues({}, detailSharing), {
799
1472
  items
800
1473
  });
801
1474
  }
802
1475
  };
803
- ListSharing = __decorateClass([
1476
+ __name(_ListSharing, "ListSharing");
1477
+ var ListSharing = _ListSharing;
1478
+ ListSharing = _ts_decorate9([
804
1479
  injectable(),
805
- __decorateParam(0, inject("SharingRepository")),
806
- __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
+ ])
807
1487
  ], ListSharing);
808
1488
 
809
1489
  // src/sharing/entities/sharing.ts
810
- var Sharing = class _Sharing {
1490
+ var _Sharing = class _Sharing {
811
1491
  constructor(params) {
1492
+ __publicField(this, "assetId");
1493
+ __publicField(this, "assetType");
1494
+ __publicField(this, "createdAt");
1495
+ __publicField(this, "updatedAt");
1496
+ __publicField(this, "deletedAt");
812
1497
  this.assetId = params.assetId;
813
1498
  this.assetType = params.assetType;
814
1499
  this.createdAt = params.createdAt;
@@ -868,10 +1553,35 @@ var Sharing = class _Sharing {
868
1553
  return this.assetType;
869
1554
  }
870
1555
  };
1556
+ __name(_Sharing, "Sharing");
1557
+ var Sharing = _Sharing;
871
1558
 
872
1559
  // src/sharing/services/upsert.ts
873
- 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 {
874
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");
875
1585
  this.sharingRepository = sharingRepository;
876
1586
  this.detailsRepository = detailsRepository;
877
1587
  this.dxRepository = dxRepository;
@@ -879,16 +1589,10 @@ var UpsertSharing = class {
879
1589
  this.userRepository = userRepository;
880
1590
  this.roleRepository = roleRepository;
881
1591
  }
882
- async execute({
883
- body
884
- }) {
1592
+ async execute({ body }) {
885
1593
  const assetId = body.assetId;
886
- const isValidAsset = await this.validateIfAssetExists(
887
- assetId,
888
- body.assetType
889
- );
890
- if (!isValidAsset)
891
- 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`);
892
1596
  const sharing = await this.sharingRepository.getOne(assetId);
893
1597
  let currentSharing;
894
1598
  if (sharing) {
@@ -902,26 +1606,20 @@ var UpsertSharing = class {
902
1606
  await this.sharingRepository.create(currentSharing.toTable());
903
1607
  }
904
1608
  let updatedList = [];
905
- if (body.add)
906
- updatedList = await this.addDetails(assetId, body.add);
907
- if (body.remove)
908
- await this.removeDetails(body.remove);
1609
+ if (body.add) updatedList = await this.addDetails(assetId, body.add);
1610
+ if (body.remove) await this.removeDetails(body.remove);
909
1611
  currentSharing.update();
910
- await this.sharingRepository.patch(
911
- currentSharing.getAssetId,
912
- currentSharing.toTable()
913
- );
1612
+ await this.sharingRepository.patch(currentSharing.getAssetId, currentSharing.toTable());
914
1613
  return updatedList.map((detail) => detail.toJSON());
915
1614
  }
916
1615
  async validateIfAssetExists(assetId, assetType) {
917
1616
  switch (assetType) {
918
- case "DX" /* DX */: {
1617
+ case ASSET_TYPE.DX: {
919
1618
  const result = await this.dxRepository.get(assetId);
920
- if (result)
921
- return true;
1619
+ if (result) return true;
922
1620
  return false;
923
1621
  }
924
- case "DM" /* DM */: {
1622
+ case ASSET_TYPE.DM: {
925
1623
  return true;
926
1624
  }
927
1625
  default:
@@ -932,8 +1630,7 @@ var UpsertSharing = class {
932
1630
  const sharingList = [];
933
1631
  for (const detail of list) {
934
1632
  const currentDetail = await this.addSpecificDetail(assetId, detail);
935
- if (currentDetail)
936
- sharingList.push(currentDetail);
1633
+ if (currentDetail) sharingList.push(currentDetail);
937
1634
  }
938
1635
  return sharingList;
939
1636
  }
@@ -941,24 +1638,15 @@ var UpsertSharing = class {
941
1638
  var _a;
942
1639
  let currentDetail;
943
1640
  const isValid = await this.validateIfSharedWithExist(detail);
944
- if (!isValid)
945
- return null;
946
- let sharingDetail = await this.detailsRepository.getBySharedWith(
947
- assetId,
948
- detail.sharedWith
949
- );
1641
+ if (!isValid) return null;
1642
+ let sharingDetail = await this.detailsRepository.getBySharedWith(assetId, detail.sharedWith);
950
1643
  if (!sharingDetail && detail.sharedId) {
951
- sharingDetail = await this.detailsRepository.getOne(
952
- detail.sharedId
953
- );
1644
+ sharingDetail = await this.detailsRepository.getOne(detail.sharedId);
954
1645
  }
955
1646
  if (sharingDetail) {
956
1647
  currentDetail = SharingDetail.parse(sharingDetail);
957
1648
  currentDetail.update(detail);
958
- await this.detailsRepository.patch(
959
- currentDetail.getSharingDetailsId,
960
- currentDetail.toTable()
961
- );
1649
+ await this.detailsRepository.patch(currentDetail.getSharingDetailsId, currentDetail.toTable());
962
1650
  } else {
963
1651
  const createDetails = __spreadValues({
964
1652
  assetId,
@@ -970,21 +1658,18 @@ var UpsertSharing = class {
970
1658
  return currentDetail;
971
1659
  }
972
1660
  async validateIfSharedWithExist(detail) {
973
- if (detail.sharedOrigin === "EXTERNAL" /* EXTERNAL */ || detail.sharedOrigin === "UNKNOWN" /* UNKNOWN */)
974
- return true;
975
- const isQrveyOrg = detail.sharedType === "ORGANIZATION" /* ORGANIZATION */ && detail.sharedWith === ORGANIZATION_QRVEY;
976
- if (isQrveyOrg)
977
- return true;
978
- if (detail.sharedType === "USER" /* USER */) {
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;
1663
+ if (isQrveyOrg) return true;
1664
+ if (detail.sharedType === SHARE_TYPE.USER) {
979
1665
  const user = await this.userRepository.getOne(detail.sharedWith);
980
- if (user)
981
- return true;
1666
+ if (user) return true;
982
1667
  }
983
- if (detail.sharedType === "ROLE" /* ROLE */) {
1668
+ if (detail.sharedType === SHARE_TYPE.ROLE) {
984
1669
  const role = await this.roleRepository.getOne(detail.sharedWith);
985
- if (role)
986
- return true;
1670
+ if (role) return true;
987
1671
  }
1672
+ if (detail.sharedType === SHARE_TYPE.TENANT && detail.sharedWith === SHARE_TYPE.TENANT) return true;
988
1673
  return false;
989
1674
  }
990
1675
  async removeDetails(list) {
@@ -993,26 +1678,118 @@ var UpsertSharing = class {
993
1678
  }
994
1679
  }
995
1680
  };
996
- UpsertSharing = __decorateClass([
1681
+ __name(_UpsertSharing, "UpsertSharing");
1682
+ var UpsertSharing = _UpsertSharing;
1683
+ UpsertSharing = _ts_decorate10([
997
1684
  injectable(),
998
- __decorateParam(0, inject("SharingRepository")),
999
- __decorateParam(1, inject("SharingDetailsRepository")),
1000
- __decorateParam(2, inject("dxRepository")),
1001
- __decorateParam(3, inject("dmRepository")),
1002
- __decorateParam(4, inject("UserRepository")),
1003
- __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
+ ])
1004
1700
  ], UpsertSharing);
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");
1723
+ this.sharingRepository = sharingRepository;
1724
+ this.detailsRepository = detailsRepository;
1725
+ this.adminRepository = adminRepository;
1726
+ }
1727
+ async execute({ assetId, assetType, orgId, sharedOrigin }) {
1728
+ const sharingRecord = await this.sharingRepository.getOne(assetId);
1729
+ let currentSharing;
1730
+ if (sharingRecord) {
1731
+ currentSharing = Sharing.parse(sharingRecord);
1732
+ } else {
1733
+ const createSharing = {
1734
+ assetId,
1735
+ assetType
1736
+ };
1737
+ currentSharing = Sharing.create(createSharing);
1738
+ await this.sharingRepository.create(currentSharing.toTable());
1739
+ }
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
+ ]);
1760
+ return currentSharing;
1761
+ }
1762
+ };
1763
+ __name(_SetDefaultSharing, "SetDefaultSharing");
1764
+ var SetDefaultSharing = _SetDefaultSharing;
1765
+ SetDefaultSharing = _ts_decorate11([
1766
+ injectable(),
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);
1005
1777
 
1006
1778
  // src/index.ts
1007
1779
  var api = {
1008
- upsert: (...args) => Context.resolve(UpsertSharing).execute(...args),
1009
- list: (...args) => Context.resolve(ListSharing).execute(...args),
1010
- 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")
1011
1783
  };
1012
- var checkUserAccessLevel = (...args) => Context.resolve(CheckUserAccessLevel).execute(...args);
1013
- var fromTokenToUser = (...args) => Context.resolve(FromTokenToUser).execute(...args);
1014
- var hasAdminRole = (...args) => Context.resolve(HasAdminRole).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");
1015
1792
 
1016
- export { ACCESS_LEVEL, ASSET_TYPE, ORGANIZATION_QRVEY, SHARED_ORIGIN, SHARE_TYPE, api, checkUserAccessLevel, fromTokenToUser, hasAdminRole };
1017
- //# sourceMappingURL=out.js.map
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 };
1794
+ //# sourceMappingURL=index.mjs.map
1018
1795
  //# sourceMappingURL=index.mjs.map