@frontegg/js 7.80.0-alpha.4 → 7.81.0-alpha.0

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.
@@ -1,5 +1,5 @@
1
1
  import { EntitledToOptions, Entitlement, FronteggStore, IsSteppedUpOptions, StepUpOptions } from '@frontegg/redux-store';
2
- import { FronteggAppOptions, FronteggCheckoutDialogOptions, LoadEntitlementsCallback, LocalizationsOverrides, ShowAdminPortalOptions, SwitchTenantOptions, UseInviteUserDialogStoreOptions, UseTableStoreOptions } from '@frontegg/types';
2
+ import { FronteggAppOptions, FronteggCheckoutDialogOptions, LoadEntitlementsCallback, LocalizationsOverrides, ShowAdminPortalOptions, SwitchTenantOptions, UseInviteUserDialogStoreOptions, UseTableStoreOptions, CMCComponentProps } from '@frontegg/types';
3
3
  import { FetchClient, FronteggApiClient, IFeatureFlagsAttributes } from '@frontegg/rest-api';
4
4
  import { CustomAttributes } from '@frontegg/entitlements-javascript-commons';
5
5
  type FronteggAppContainers = {
@@ -139,11 +139,12 @@ export declare class FronteggApp {
139
139
  */
140
140
  switchTenant(payload: SwitchTenantOptions): void;
141
141
  close(): void;
142
- renderUsersTable: (container: HTMLElement, props: any, options: any) => Promise<any>;
143
- renderInviteUserDialog: (container: HTMLElement, props: any, options: any) => Promise<any>;
144
- renderChangePasswordForm: (container: HTMLElement, props: any, options: any) => Promise<any>;
145
- renderProfilePage: (container: HTMLElement, props: any, options: any) => Promise<any>;
146
- renderEditEmailForm: (container: HTMLElement, props: any, options: any) => Promise<any>;
142
+ private createCMCRenderOptions;
143
+ renderUsersTable: (container: HTMLElement, props: any, options: Partial<CMCComponentProps>) => Promise<any>;
144
+ renderInviteUserDialog: (container: HTMLElement, props: any, options: Partial<CMCComponentProps>) => Promise<any>;
145
+ renderChangePasswordForm: (container: HTMLElement, props: any, options: Partial<CMCComponentProps>) => Promise<any>;
146
+ renderProfilePage: (container: HTMLElement, props: any, options: Partial<CMCComponentProps>) => Promise<any>;
147
+ renderEditEmailForm: (container: HTMLElement, props: any, options: Partial<CMCComponentProps>) => Promise<any>;
147
148
  getUsersTableStore: (options: UseTableStoreOptions) => Promise<any>;
148
149
  getInviteUserDialogStore: (options: UseInviteUserDialogStoreOptions) => Promise<any>;
149
150
  }
@@ -186,6 +186,16 @@ export var FronteggApp = /*#__PURE__*/function () {
186
186
  attributes: attributes
187
187
  };
188
188
  };
189
+ this.createCMCRenderOptions = function (props, options) {
190
+ return {
191
+ injector: _this,
192
+ options: _this.options,
193
+ props: props,
194
+ themeOptions: options.themeOptions,
195
+ localizations: options.localizations,
196
+ containerStyle: options.containerStyle
197
+ };
198
+ };
189
199
  this.renderUsersTable = /*#__PURE__*/function () {
190
200
  var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(container, props, options) {
191
201
  var FronteggAdminPortal;
@@ -196,13 +206,7 @@ export var FronteggApp = /*#__PURE__*/function () {
196
206
  return _this.loadScript('FronteggAdminPortal');
197
207
  case 2:
198
208
  FronteggAdminPortal = _context4.sent;
199
- return _context4.abrupt("return", FronteggAdminPortal.renderUsersTable(container, {
200
- injector: _this,
201
- options: _this.options,
202
- container: container,
203
- props: props,
204
- themeOptions: options.themeOptions
205
- }));
209
+ return _context4.abrupt("return", FronteggAdminPortal.renderUsersTable(container, _this.createCMCRenderOptions(props, options)));
206
210
  case 4:
207
211
  case "end":
208
212
  return _context4.stop();
@@ -223,13 +227,7 @@ export var FronteggApp = /*#__PURE__*/function () {
223
227
  return _this.loadScript('FronteggAdminPortal');
224
228
  case 2:
225
229
  FronteggAdminPortal = _context5.sent;
226
- return _context5.abrupt("return", FronteggAdminPortal.renderInviteUserDialog(container, {
227
- injector: _this,
228
- options: _this.options,
229
- container: container,
230
- props: props,
231
- themeOptions: options.themeOptions
232
- }));
230
+ return _context5.abrupt("return", FronteggAdminPortal.renderInviteUserDialog(container, _this.createCMCRenderOptions(props, options)));
233
231
  case 4:
234
232
  case "end":
235
233
  return _context5.stop();
@@ -250,12 +248,7 @@ export var FronteggApp = /*#__PURE__*/function () {
250
248
  return _this.loadScript('FronteggAdminPortal');
251
249
  case 2:
252
250
  FronteggAdminPortal = _context6.sent;
253
- return _context6.abrupt("return", FronteggAdminPortal.renderChangePasswordForm(container, {
254
- injector: _this,
255
- options: _this.options,
256
- props: props,
257
- themeOptions: options.themeOptions
258
- }));
251
+ return _context6.abrupt("return", FronteggAdminPortal.renderChangePasswordForm(container, _this.createCMCRenderOptions(props, options)));
259
252
  case 4:
260
253
  case "end":
261
254
  return _context6.stop();
@@ -276,13 +269,7 @@ export var FronteggApp = /*#__PURE__*/function () {
276
269
  return _this.loadScript('FronteggAdminPortal');
277
270
  case 2:
278
271
  FronteggAdminPortal = _context7.sent;
279
- return _context7.abrupt("return", FronteggAdminPortal.renderProfilePage(container, {
280
- injector: _this,
281
- options: _this.options,
282
- props: props,
283
- themeOptions: options.themeOptions,
284
- localizations: options.localizations
285
- }));
272
+ return _context7.abrupt("return", FronteggAdminPortal.renderProfilePage(container, _this.createCMCRenderOptions(props, options)));
286
273
  case 4:
287
274
  case "end":
288
275
  return _context7.stop();
@@ -303,13 +290,7 @@ export var FronteggApp = /*#__PURE__*/function () {
303
290
  return _this.loadScript('FronteggAdminPortal');
304
291
  case 2:
305
292
  FronteggAdminPortal = _context8.sent;
306
- return _context8.abrupt("return", FronteggAdminPortal.renderEditEmailForm(container, {
307
- injector: _this,
308
- options: _this.options,
309
- props: props,
310
- themeOptions: options.themeOptions,
311
- localizations: options.localizations
312
- }));
293
+ return _context8.abrupt("return", FronteggAdminPortal.renderEditEmailForm(container, _this.createCMCRenderOptions(props, options)));
313
294
  case 4:
314
295
  case "end":
315
296
  return _context8.stop();
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v7.80.0-alpha.4
1
+ /** @license Frontegg v7.81.0-alpha.0
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
@@ -193,6 +193,16 @@ var FronteggApp = /*#__PURE__*/function () {
193
193
  attributes: attributes
194
194
  };
195
195
  };
196
+ this.createCMCRenderOptions = function (props, options) {
197
+ return {
198
+ injector: _this,
199
+ options: _this.options,
200
+ props: props,
201
+ themeOptions: options.themeOptions,
202
+ localizations: options.localizations,
203
+ containerStyle: options.containerStyle
204
+ };
205
+ };
196
206
  this.renderUsersTable = /*#__PURE__*/function () {
197
207
  var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(container, props, options) {
198
208
  var FronteggAdminPortal;
@@ -203,13 +213,7 @@ var FronteggApp = /*#__PURE__*/function () {
203
213
  return _this.loadScript('FronteggAdminPortal');
204
214
  case 2:
205
215
  FronteggAdminPortal = _context4.sent;
206
- return _context4.abrupt("return", FronteggAdminPortal.renderUsersTable(container, {
207
- injector: _this,
208
- options: _this.options,
209
- container: container,
210
- props: props,
211
- themeOptions: options.themeOptions
212
- }));
216
+ return _context4.abrupt("return", FronteggAdminPortal.renderUsersTable(container, _this.createCMCRenderOptions(props, options)));
213
217
  case 4:
214
218
  case "end":
215
219
  return _context4.stop();
@@ -230,13 +234,7 @@ var FronteggApp = /*#__PURE__*/function () {
230
234
  return _this.loadScript('FronteggAdminPortal');
231
235
  case 2:
232
236
  FronteggAdminPortal = _context5.sent;
233
- return _context5.abrupt("return", FronteggAdminPortal.renderInviteUserDialog(container, {
234
- injector: _this,
235
- options: _this.options,
236
- container: container,
237
- props: props,
238
- themeOptions: options.themeOptions
239
- }));
237
+ return _context5.abrupt("return", FronteggAdminPortal.renderInviteUserDialog(container, _this.createCMCRenderOptions(props, options)));
240
238
  case 4:
241
239
  case "end":
242
240
  return _context5.stop();
@@ -257,12 +255,7 @@ var FronteggApp = /*#__PURE__*/function () {
257
255
  return _this.loadScript('FronteggAdminPortal');
258
256
  case 2:
259
257
  FronteggAdminPortal = _context6.sent;
260
- return _context6.abrupt("return", FronteggAdminPortal.renderChangePasswordForm(container, {
261
- injector: _this,
262
- options: _this.options,
263
- props: props,
264
- themeOptions: options.themeOptions
265
- }));
258
+ return _context6.abrupt("return", FronteggAdminPortal.renderChangePasswordForm(container, _this.createCMCRenderOptions(props, options)));
266
259
  case 4:
267
260
  case "end":
268
261
  return _context6.stop();
@@ -283,13 +276,7 @@ var FronteggApp = /*#__PURE__*/function () {
283
276
  return _this.loadScript('FronteggAdminPortal');
284
277
  case 2:
285
278
  FronteggAdminPortal = _context7.sent;
286
- return _context7.abrupt("return", FronteggAdminPortal.renderProfilePage(container, {
287
- injector: _this,
288
- options: _this.options,
289
- props: props,
290
- themeOptions: options.themeOptions,
291
- localizations: options.localizations
292
- }));
279
+ return _context7.abrupt("return", FronteggAdminPortal.renderProfilePage(container, _this.createCMCRenderOptions(props, options)));
293
280
  case 4:
294
281
  case "end":
295
282
  return _context7.stop();
@@ -310,13 +297,7 @@ var FronteggApp = /*#__PURE__*/function () {
310
297
  return _this.loadScript('FronteggAdminPortal');
311
298
  case 2:
312
299
  FronteggAdminPortal = _context8.sent;
313
- return _context8.abrupt("return", FronteggAdminPortal.renderEditEmailForm(container, {
314
- injector: _this,
315
- options: _this.options,
316
- props: props,
317
- themeOptions: options.themeOptions,
318
- localizations: options.localizations
319
- }));
300
+ return _context8.abrupt("return", FronteggAdminPortal.renderEditEmailForm(container, _this.createCMCRenderOptions(props, options)));
320
301
  case 4:
321
302
  case "end":
322
303
  return _context8.stop();
package/node/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v7.80.0-alpha.4
1
+ /** @license Frontegg v7.81.0-alpha.0
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
package/node/version.js CHANGED
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
  var _default = {
8
- cdnVersion: '7.80.0-alpha.4'
8
+ cdnVersion: '7.81.0-alpha.0'
9
9
  };
10
10
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@frontegg/js",
3
- "version": "7.80.0-alpha.4",
3
+ "version": "7.81.0-alpha.0",
4
4
  "main": "./node/index.js",
5
5
  "license": "MIT",
6
6
  "author": "Frontegg LTD",
7
7
  "dependencies": {
8
8
  "@babel/runtime": "^7.18.6",
9
- "@frontegg/types": "7.80.0-alpha.4"
9
+ "@frontegg/types": "7.81.0-alpha.0"
10
10
  },
11
11
  "browserslist": {
12
12
  "production": [
@@ -527,6 +527,16 @@ var FronteggApp = /*#__PURE__*/function () {
527
527
  attributes: attributes
528
528
  };
529
529
  };
530
+ this.createCMCRenderOptions = function (props, options) {
531
+ return {
532
+ injector: _this,
533
+ options: _this.options,
534
+ props: props,
535
+ themeOptions: options.themeOptions,
536
+ localizations: options.localizations,
537
+ containerStyle: options.containerStyle
538
+ };
539
+ };
530
540
  this.renderUsersTable = /*#__PURE__*/function () {
531
541
  var _ref4 = (0,_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_4___default().mark(function _callee4(container, props, options) {
532
542
  var FronteggAdminPortal;
@@ -537,13 +547,7 @@ var FronteggApp = /*#__PURE__*/function () {
537
547
  return _this.loadScript('FronteggAdminPortal');
538
548
  case 2:
539
549
  FronteggAdminPortal = _context4.sent;
540
- return _context4.abrupt("return", FronteggAdminPortal.renderUsersTable(container, {
541
- injector: _this,
542
- options: _this.options,
543
- container: container,
544
- props: props,
545
- themeOptions: options.themeOptions
546
- }));
550
+ return _context4.abrupt("return", FronteggAdminPortal.renderUsersTable(container, _this.createCMCRenderOptions(props, options)));
547
551
  case 4:
548
552
  case "end":
549
553
  return _context4.stop();
@@ -564,13 +568,7 @@ var FronteggApp = /*#__PURE__*/function () {
564
568
  return _this.loadScript('FronteggAdminPortal');
565
569
  case 2:
566
570
  FronteggAdminPortal = _context5.sent;
567
- return _context5.abrupt("return", FronteggAdminPortal.renderInviteUserDialog(container, {
568
- injector: _this,
569
- options: _this.options,
570
- container: container,
571
- props: props,
572
- themeOptions: options.themeOptions
573
- }));
571
+ return _context5.abrupt("return", FronteggAdminPortal.renderInviteUserDialog(container, _this.createCMCRenderOptions(props, options)));
574
572
  case 4:
575
573
  case "end":
576
574
  return _context5.stop();
@@ -591,12 +589,7 @@ var FronteggApp = /*#__PURE__*/function () {
591
589
  return _this.loadScript('FronteggAdminPortal');
592
590
  case 2:
593
591
  FronteggAdminPortal = _context6.sent;
594
- return _context6.abrupt("return", FronteggAdminPortal.renderChangePasswordForm(container, {
595
- injector: _this,
596
- options: _this.options,
597
- props: props,
598
- themeOptions: options.themeOptions
599
- }));
592
+ return _context6.abrupt("return", FronteggAdminPortal.renderChangePasswordForm(container, _this.createCMCRenderOptions(props, options)));
600
593
  case 4:
601
594
  case "end":
602
595
  return _context6.stop();
@@ -617,13 +610,7 @@ var FronteggApp = /*#__PURE__*/function () {
617
610
  return _this.loadScript('FronteggAdminPortal');
618
611
  case 2:
619
612
  FronteggAdminPortal = _context7.sent;
620
- return _context7.abrupt("return", FronteggAdminPortal.renderProfilePage(container, {
621
- injector: _this,
622
- options: _this.options,
623
- props: props,
624
- themeOptions: options.themeOptions,
625
- localizations: options.localizations
626
- }));
613
+ return _context7.abrupt("return", FronteggAdminPortal.renderProfilePage(container, _this.createCMCRenderOptions(props, options)));
627
614
  case 4:
628
615
  case "end":
629
616
  return _context7.stop();
@@ -644,13 +631,7 @@ var FronteggApp = /*#__PURE__*/function () {
644
631
  return _this.loadScript('FronteggAdminPortal');
645
632
  case 2:
646
633
  FronteggAdminPortal = _context8.sent;
647
- return _context8.abrupt("return", FronteggAdminPortal.renderEditEmailForm(container, {
648
- injector: _this,
649
- options: _this.options,
650
- props: props,
651
- themeOptions: options.themeOptions,
652
- localizations: options.localizations
653
- }));
634
+ return _context8.abrupt("return", FronteggAdminPortal.renderEditEmailForm(container, _this.createCMCRenderOptions(props, options)));
654
635
  case 4:
655
636
  case "end":
656
637
  return _context8.stop();
@@ -1807,7 +1788,7 @@ __webpack_require__.r(__webpack_exports__);
1807
1788
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
1808
1789
  /* harmony export */ });
1809
1790
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
1810
- cdnVersion: '7.80.0-alpha.4'
1791
+ cdnVersion: '7.81.0-alpha.0'
1811
1792
  });
1812
1793
 
1813
1794
  /***/ }),
@@ -3490,18 +3471,30 @@ __webpack_require__.r(__webpack_exports__);
3490
3471
  fetching: true
3491
3472
  });
3492
3473
  try {
3493
- const tenantAppIds = await (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.retryIfNeeded)(() => api.applications.getTenantsApplications(), retryConfig);
3494
- const appIds = (0,_helpers__WEBPACK_IMPORTED_MODULE_4__.getFlattenAppIds)(tenantAppIds);
3474
+ const tenantAppAssignments = await (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.retryIfNeeded)(() => api.applications.getTenantsApplicationsV2(), retryConfig);
3475
+
3476
+ // Extract appIds from the new assignments structure
3477
+ const appIds = [...new Set(tenantAppAssignments.flatMap(tenant => tenant.assignments.map(assignment => assignment.appId)))];
3495
3478
  const accountApplications = await (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.retryIfNeeded)(() => api.applications.getApplicationsData({
3496
3479
  appIds
3497
3480
  }), retryConfig);
3498
3481
  const usersOfApplications = await (0,_helpers__WEBPACK_IMPORTED_MODULE_1__.retryIfNeeded)(() => api.applications.getUsersOfApplications({
3499
3482
  appIds
3500
3483
  }), retryConfig);
3484
+
3485
+ // Create a map of appId to accessType from tenant assignments (once)
3486
+ const appAccessTypeMap = new Map();
3487
+ tenantAppAssignments.forEach(tenant => {
3488
+ tenant.assignments.forEach(assignment => {
3489
+ appAccessTypeMap.set(assignment.appId, assignment.accessType);
3490
+ });
3491
+ });
3501
3492
  const accountApplicationsWithUsers = accountApplications.map(app => {
3502
3493
  var _usersOfApplications$;
3503
3494
  return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, app, {
3504
- userIds: (_usersOfApplications$ = usersOfApplications.find(u => u.appId === app.id)) == null ? void 0 : _usersOfApplications$.userIds
3495
+ userIds: (_usersOfApplications$ = usersOfApplications.find(u => u.appId === app.id)) == null ? void 0 : _usersOfApplications$.userIds,
3496
+ // Add tenant-specific access type as a separate attribute
3497
+ tenantApplicationAccessType: appAccessTypeMap.get(app.id)
3505
3498
  });
3506
3499
  });
3507
3500
  setApplicationsState({
@@ -15688,7 +15681,7 @@ const _excluded = ["callback", "appIds"],
15688
15681
  });
15689
15682
  }
15690
15683
  };
15691
- /*** @deprecated loadUsers is deprecated, use loadUsersV2 instead */
15684
+ /*** @deprecated loadUsers is deprecated, use loadUsersV3 instead */
15692
15685
  const loadUsers = async payload => {
15693
15686
  var _payload$pageSize, _payload$pageOffset, _payload$filter, _payload$sort;
15694
15687
  const {
@@ -15744,6 +15737,8 @@ const _excluded = ["callback", "appIds"],
15744
15737
  value: false
15745
15738
  });
15746
15739
  };
15740
+
15741
+ /*** @deprecated loadUsersV2 is deprecated, use loadUsersV3 instead */
15747
15742
  const loadUsersV2 = async payload => {
15748
15743
  var _payload$pageSize2, _payload$pageOffset2, _payload$filter2, _payload$sort2, _payload$shouldShowSu;
15749
15744
  const {
@@ -15790,11 +15785,7 @@ const _excluded = ["callback", "appIds"],
15790
15785
  _offset: pageOffset,
15791
15786
  _limit: pageSize,
15792
15787
  _includeSubTenants: shouldIncludeSubTenants
15793
- })), retryConfig), (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.retryIfNeeded)(() => api.teams.loadAvailableRoles(), retryConfig),
15794
- // TODO: check rest-api types
15795
- (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.retryIfNeeded)(() => api.teams.loadAvailablePermissions(), retryConfig),
15796
- // TODO: check rest-api types
15797
- __getGroupsForUsers(retryConfig), shouldLoadRoles ? loadRoles({
15788
+ })), retryConfig), (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.retryIfNeeded)(() => api.teams.loadAvailableRoles(), retryConfig), (0,_helpers__WEBPACK_IMPORTED_MODULE_2__.retryIfNeeded)(() => api.teams.loadAvailablePermissions(), retryConfig), __getGroupsForUsers(retryConfig), shouldLoadRoles ? loadRoles({
15798
15789
  retryConfig
15799
15790
  }) : undefined]);
15800
15791
 
@@ -15839,6 +15830,129 @@ const _excluded = ["callback", "appIds"],
15839
15830
  value: false
15840
15831
  });
15841
15832
  };
15833
+ const loadUsersV3 = async payload => {
15834
+ var _payload$pageSize3, _payload$pageOffset3, _payload$sort3, _payload$shouldShowSu2;
15835
+ const {
15836
+ silentLoading,
15837
+ callback,
15838
+ shouldLoadRoles = true,
15839
+ shouldLoadApps,
15840
+ retryConfig
15841
+ } = payload;
15842
+ const teamState = store.auth.teamState;
15843
+ const pageSize = (_payload$pageSize3 = payload.pageSize) != null ? _payload$pageSize3 : teamState.pageSize;
15844
+ const pageOffset = (_payload$pageOffset3 = payload.pageOffset) != null ? _payload$pageOffset3 : teamState.pageOffset;
15845
+ const sort = (_payload$sort3 = payload.sort) != null ? _payload$sort3 : teamState.sortV2;
15846
+ const shouldIncludeSubTenants = (_payload$shouldShowSu2 = payload == null ? void 0 : payload.shouldShowSubTenantUsersIfReseller) != null ? _payload$shouldShowSu2 : teamState == null ? void 0 : teamState.shouldShowSubTenantUsersIfReseller;
15847
+ actions.setTeamLoader({
15848
+ key: _interfaces__WEBPACK_IMPORTED_MODULE_4__.TeamStateKeys.USERS,
15849
+ value: !silentLoading
15850
+ });
15851
+ actions.setTeamState({
15852
+ pageSize,
15853
+ pageOffset
15854
+ });
15855
+ try {
15856
+ // First fetch users with v3 API
15857
+ const {
15858
+ items: users,
15859
+ _metadata: {
15860
+ totalPages,
15861
+ totalItems
15862
+ }
15863
+ } = await api.users.getUsersV3((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({}, sort && {
15864
+ _sortBy: sort
15865
+ }, payload.order && {
15866
+ _order: payload.order
15867
+ }, {
15868
+ _offset: pageOffset,
15869
+ _limit: pageSize,
15870
+ _includeSubTenants: shouldIncludeSubTenants
15871
+ }, getIdentifierFilterForUsersV3(payload)));
15872
+
15873
+ // Get user IDs for fetching roles and groups
15874
+ const userIds = users.map(user => user.id);
15875
+
15876
+ // Fetch roles, permissions, user roles, user groups, and all groups in parallel
15877
+ const [{
15878
+ items: roles
15879
+ }, permissions, userRoles, userGroups, groups] = await Promise.all([api.teams.loadAvailableRoles(), api.teams.loadAvailablePermissions(), userIds.length > 0 ? api.users.getUsersRoles({
15880
+ ids: userIds
15881
+ }) : [], userIds.length > 0 ? api.users.getUsersGroups({
15882
+ ids: userIds
15883
+ }) : [], __getGroupsForUsers(retryConfig), shouldLoadRoles ? loadRoles({
15884
+ retryConfig
15885
+ }) : undefined]);
15886
+
15887
+ // Map user roles and groups to users
15888
+ const usersWithRolesAndGroups = users.map(user => {
15889
+ // Find user's role IDs
15890
+ const userRoleData = userRoles.find(ur => ur.userId === user.id);
15891
+ const userRoleIds = (userRoleData == null ? void 0 : userRoleData.roleIds) || [];
15892
+ const userRolesFull = roles.filter(role => userRoleIds.includes(role.id));
15893
+
15894
+ // Find user's group IDs
15895
+ const userGroupData = userGroups.find(ug => ug.userId === user.id);
15896
+ const userGroupIds = (userGroupData == null ? void 0 : userGroupData.groupIds) || [];
15897
+ const userGroupsFull = groups.filter(g => userGroupIds.includes(g.id));
15898
+
15899
+ //@ts-ignore
15900
+ return (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({}, user, {
15901
+ roles: userRolesFull,
15902
+ roleIds: userRoleIds,
15903
+ groups: userGroupsFull,
15904
+ permissions: userRolesFull.flatMap(role => role.permissions)
15905
+ });
15906
+ });
15907
+ const mappedUsers = await sharedActions.mapUsersWithApplicationData({
15908
+ shouldLoadApps,
15909
+ users: usersWithRolesAndGroups,
15910
+ retryConfig
15911
+ });
15912
+ sharedActions.setTeamState({
15913
+ users: mappedUsers,
15914
+ totalPages,
15915
+ totalItems,
15916
+ roles,
15917
+ permissions
15918
+ });
15919
+ callback == null ? void 0 : callback(usersWithRolesAndGroups);
15920
+ } catch (e) {
15921
+ console.error('Failed to load users v3', e);
15922
+ actions.setTeamError({
15923
+ key: _interfaces__WEBPACK_IMPORTED_MODULE_4__.TeamStateKeys.USERS,
15924
+ value: (0,_helpers__WEBPACK_IMPORTED_MODULE_5__.errorHandler)(e)
15925
+ });
15926
+ actions.setTeamState({
15927
+ totalPages: 0,
15928
+ users: []
15929
+ });
15930
+ callback == null ? void 0 : callback(null, e);
15931
+ }
15932
+ actions.setTeamLoader({
15933
+ key: _interfaces__WEBPACK_IMPORTED_MODULE_4__.TeamStateKeys.USERS,
15934
+ value: false
15935
+ });
15936
+ };
15937
+ const getIdentifierFilterForUsersV3 = payload => {
15938
+ const {
15939
+ identifier,
15940
+ identifierType,
15941
+ email
15942
+ } = payload;
15943
+ if (identifierType === 'username' && identifier != null && identifier.length) {
15944
+ return {
15945
+ _identifier: identifier,
15946
+ _identifierType: 'username'
15947
+ };
15948
+ }
15949
+ if (email != null && email.length) {
15950
+ return {
15951
+ _email: email
15952
+ };
15953
+ }
15954
+ return {};
15955
+ };
15842
15956
  const addUser = async payload => {
15843
15957
  const {
15844
15958
  callback,
@@ -15860,7 +15974,9 @@ const _excluded = ["callback", "appIds"],
15860
15974
  userWithoutRoleIds = (0,_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(res, _excluded2);
15861
15975
  const roleIds = (_roles$map = roles == null ? void 0 : roles.map(role => role.id)) != null ? _roles$map : [];
15862
15976
  const newUser = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__["default"])({}, userWithoutRoleIds, {
15863
- roleIds
15977
+ roleIds,
15978
+ roles: roles || [],
15979
+ groups: []
15864
15980
  });
15865
15981
  const apps = await sharedActions.assignNewUserToApps({
15866
15982
  appIds,
@@ -16196,6 +16312,7 @@ const _excluded = ["callback", "appIds"],
16196
16312
  loadRoles,
16197
16313
  loadUsers,
16198
16314
  loadUsersV2,
16315
+ loadUsersV3,
16199
16316
  addUser,
16200
16317
  addUsersBulk,
16201
16318
  updateUser,
@@ -19070,7 +19187,7 @@ __webpack_require__.r(__webpack_exports__);
19070
19187
  /* harmony import */ var _subscriptions_interfaces__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./subscriptions/interfaces */ "../../dist/@frontegg/redux-store/subscriptions/interfaces.js");
19071
19188
  /* harmony import */ var _vendor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./vendor */ "../../dist/@frontegg/redux-store/vendor/index.js");
19072
19189
  /* harmony import */ var _audits__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./audits */ "../../dist/@frontegg/redux-store/audits/index.js");
19073
- /** @license Frontegg v7.80.0-alpha.4
19190
+ /** @license Frontegg v7.81.0-alpha.0
19074
19191
  *
19075
19192
  * This source code is licensed under the MIT license found in the
19076
19193
  * LICENSE file in the root directory of this source tree.
@@ -21888,7 +22005,7 @@ const _excluded = ["callback"],
21888
22005
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((store, api, actions) => {
21889
22006
  const originalActions = (0,_auth_TeamState__WEBPACK_IMPORTED_MODULE_2__["default"])(store, api, actions);
21890
22007
  const mockedActions = (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.mockActionsExpect)(originalActions, ['setTeamState', 'resetTeamState', 'setTeamLoader', 'setTeamError', 'openAddUserDialog', 'closeAddUserDialog', 'openDeleteUserDialog', 'closeDeleteUserDialog']);
21891
- mockedActions.loadUsersV2 = async payload => {
22008
+ mockedActions.loadUsersV3 = async payload => {
21892
22009
  var _payload$pageSize, _payload$pageOffset, _payload$filter, _payload$sort;
21893
22010
  const {
21894
22011
  silentLoading,
@@ -27070,6 +27187,9 @@ class ApplicationsApi extends _BaseApiClient__WEBPACK_IMPORTED_MODULE_0__.BaseAp
27070
27187
  this.getTenantsApplications = async () => {
27071
27188
  return this.get(_constants__WEBPACK_IMPORTED_MODULE_1__.urls.applications.tenant.v1);
27072
27189
  };
27190
+ this.getTenantsApplicationsV2 = async () => {
27191
+ return this.get(_constants__WEBPACK_IMPORTED_MODULE_1__.urls.applications.tenant.v2);
27192
+ };
27073
27193
  this.getApplicationsData = async ({
27074
27194
  appIds,
27075
27195
  includeFreeAccess = true
@@ -28853,7 +28973,8 @@ const urls = {
28853
28973
  applications: {
28854
28974
  v1: '/applications/resources/applications/v1',
28855
28975
  tenant: {
28856
- v1: '/applications/resources/applications/tenant-assignments/v1'
28976
+ v1: '/applications/resources/applications/tenant-assignments/v1',
28977
+ v2: '/applications/resources/applications/tenant-assignments/v2'
28857
28978
  }
28858
28979
  },
28859
28980
  velo: {
@@ -29362,7 +29483,7 @@ __webpack_require__.r(__webpack_exports__);
29362
29483
  /* harmony import */ var _security_center_interfaces__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./security-center/interfaces */ "../../dist/@frontegg/rest-api/security-center/interfaces.js");
29363
29484
  /* harmony import */ var _applications_interfaces__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./applications/interfaces */ "../../dist/@frontegg/rest-api/applications/interfaces.js");
29364
29485
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./constants */ "../../dist/@frontegg/rest-api/constants.js");
29365
- /** @license Frontegg v7.80.0-alpha.4
29486
+ /** @license Frontegg v7.81.0-alpha.0
29366
29487
  *
29367
29488
  * This source code is licensed under the MIT license found in the
29368
29489
  * LICENSE file in the root directory of this source tree.
@@ -32100,7 +32221,7 @@ __webpack_require__.r(__webpack_exports__);
32100
32221
  /* harmony export */ });
32101
32222
  /* harmony import */ var _ThemeOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ThemeOptions */ "../../dist/@frontegg/types/ThemeOptions/index.js");
32102
32223
  /* harmony import */ var _Metadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Metadata */ "../../dist/@frontegg/types/Metadata/index.js");
32103
- /** @license Frontegg v7.80.0-alpha.4
32224
+ /** @license Frontegg v7.81.0-alpha.0
32104
32225
  *
32105
32226
  * This source code is licensed under the MIT license found in the
32106
32227
  * LICENSE file in the root directory of this source tree.