@frontegg/js 7.0.0-alpha.6 → 7.0.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FronteggApp/FronteggApp.d.ts +6 -4
- package/FronteggApp/FronteggApp.js +43 -54
- package/FronteggApp/index.d.ts +1 -0
- package/FronteggApp/index.js +2 -1
- package/FronteggApp/utils.d.ts +8 -0
- package/FronteggApp/utils.js +56 -1
- package/HostedLogin/index.js +5 -4
- package/index.js +1 -1
- package/node/FronteggApp/FronteggApp.js +38 -48
- package/node/FronteggApp/index.js +12 -1
- package/node/FronteggApp/utils.js +59 -2
- package/node/HostedLogin/index.js +5 -4
- package/node/index.js +1 -1
- package/node/version.js +1 -1
- package/package.json +2 -2
- package/umd/frontegg.development.js +3703 -2841
- package/umd/frontegg.production.min.js +1 -1
- package/umd/frontegg.production.min.js.LICENSE.txt +1 -1
- package/version.js +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { FronteggAppOptions, FronteggCheckoutDialogOptions,
|
|
3
|
-
import { IFeatureFlagsAttributes } from '@frontegg/rest-api';
|
|
1
|
+
import { EntitledToOptions, Entitlement, FronteggStore, IsSteppedUpOptions, StepUpOptions } from '@frontegg/redux-store';
|
|
2
|
+
import { FronteggAppOptions, FronteggCheckoutDialogOptions, LoadEntitlementsCallback, LocalizationsOverrides, ShowAdminPortalOptions, SwitchTenantOptions } from '@frontegg/types';
|
|
3
|
+
import { FetchClient, FronteggApiClient, IFeatureFlagsAttributes } from '@frontegg/rest-api';
|
|
4
4
|
import { CustomAttributes } from '@frontegg/entitlements-javascript-commons';
|
|
5
5
|
declare type FronteggAppContainers = {
|
|
6
6
|
adminPortalEl: HTMLElement;
|
|
@@ -28,6 +28,8 @@ export declare class FronteggApp {
|
|
|
28
28
|
loginBoxRenderer?: any;
|
|
29
29
|
store: FronteggStore;
|
|
30
30
|
loadingListeners: (() => void)[];
|
|
31
|
+
fetchClient: FetchClient;
|
|
32
|
+
apiClient: FronteggApiClient;
|
|
31
33
|
updateLocalizations?: (localizations: LocalizationsOverrides) => void;
|
|
32
34
|
constructor(_options: FronteggAppOptions, name: string, iframeRendering?: boolean, allowMultipleRenderers?: boolean);
|
|
33
35
|
/**
|
|
@@ -60,7 +62,7 @@ export declare class FronteggApp {
|
|
|
60
62
|
updateMetadata(metadata: FronteggAppOptions['metadata']): void;
|
|
61
63
|
addOnLoadedListener(listener: () => void): void;
|
|
62
64
|
ready(listener: () => void): void;
|
|
63
|
-
loginWithRedirect(): void;
|
|
65
|
+
loginWithRedirect(additionalParams?: Record<string, any>): void;
|
|
64
66
|
logout(): void;
|
|
65
67
|
loadScript(component: string): Promise<unknown>;
|
|
66
68
|
loadLoginBox(): Promise<void>;
|
|
@@ -3,20 +3,18 @@ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
|
3
3
|
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
4
4
|
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
5
5
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
|
-
import
|
|
6
|
+
import * as FronteggReduxStore from '@frontegg/redux-store';
|
|
7
|
+
import { createStore, getFeatureEntitlements as _getFeatureEntitlements, getPermissionEntitlements as _getPermissionEntitlements, isSteppedUp as _isSteppedUp, redirectByStepUpUrl } from '@frontegg/redux-store';
|
|
8
|
+
import * as FronteggTypes from '@frontegg/types';
|
|
7
9
|
import { Metadata } from '@frontegg/types';
|
|
8
10
|
import { formatName, restoreSearchParams } from '../utils';
|
|
9
11
|
import { AppHolder } from '../AppHolder';
|
|
10
|
-
import { fetch as FronteggFetch, ContextHolder } from '@frontegg/rest-api';
|
|
11
|
-
import { RequestSource } from '@frontegg/rest-api';
|
|
12
12
|
import * as FronteggRestApi from '@frontegg/rest-api';
|
|
13
|
-
import
|
|
14
|
-
import * as FronteggReduxStore from '@frontegg/redux-store';
|
|
13
|
+
import { ContextHolder, createApiClient, FetchClient, RequestSource } from '@frontegg/rest-api';
|
|
15
14
|
import versions from '../version';
|
|
16
15
|
import { mockFlagsList } from '../utils/mockFlagsList';
|
|
17
|
-
import { loadGTM } from './utils';
|
|
16
|
+
import { getOverriddenMetadata, loadGTM } from './utils';
|
|
18
17
|
import * as ValtioVanilla from 'valtio/vanilla';
|
|
19
|
-
import deepMerge from 'deepmerge';
|
|
20
18
|
export var FronteggApp = /*#__PURE__*/function () {
|
|
21
19
|
function FronteggApp(_options, name) {
|
|
22
20
|
var _this = this,
|
|
@@ -42,61 +40,43 @@ export var FronteggApp = /*#__PURE__*/function () {
|
|
|
42
40
|
this.loginBoxRenderer = void 0;
|
|
43
41
|
this.store = void 0;
|
|
44
42
|
this.loadingListeners = [];
|
|
43
|
+
this.fetchClient = void 0;
|
|
44
|
+
this.apiClient = void 0;
|
|
45
45
|
this.updateLocalizations = void 0;
|
|
46
46
|
this.loadAdminBoxMetadata = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
47
|
-
var
|
|
47
|
+
var _data$rows$0$configur, _data$rows, _data$rows$, data, metadata;
|
|
48
48
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
49
49
|
while (1) switch (_context.prev = _context.next) {
|
|
50
50
|
case 0:
|
|
51
|
-
Get = FronteggFetch.Get;
|
|
52
51
|
if (_this.options.metadata) {
|
|
53
|
-
_context.next =
|
|
52
|
+
_context.next = 14;
|
|
54
53
|
break;
|
|
55
54
|
}
|
|
56
|
-
_context.prev =
|
|
57
|
-
_context.next =
|
|
58
|
-
return
|
|
55
|
+
_context.prev = 1;
|
|
56
|
+
_context.next = 4;
|
|
57
|
+
return _this.fetchClient.get('/metadata', {
|
|
59
58
|
entityName: 'adminBox'
|
|
60
59
|
});
|
|
61
|
-
case
|
|
60
|
+
case 4:
|
|
62
61
|
data = _context.sent;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
_context.prev = 9;
|
|
70
|
-
_context.next = 12;
|
|
71
|
-
return Get(overrideUrl, {}, {
|
|
72
|
-
credentials: 'same-origin'
|
|
73
|
-
});
|
|
74
|
-
case 12:
|
|
75
|
-
overrideData = _context.sent;
|
|
76
|
-
if (overrideData) {
|
|
77
|
-
metadata = deepMerge(metadata, overrideData);
|
|
78
|
-
}
|
|
79
|
-
_context.next = 19;
|
|
62
|
+
metadata = (_data$rows$0$configur = data == null ? void 0 : (_data$rows = data.rows) == null ? void 0 : (_data$rows$ = _data$rows[0]) == null ? void 0 : _data$rows$.configuration) != null ? _data$rows$0$configur : {};
|
|
63
|
+
_context.next = 8;
|
|
64
|
+
return getOverriddenMetadata(metadata, _this.fetchClient);
|
|
65
|
+
case 8:
|
|
66
|
+
_this.options.metadata = _context.sent;
|
|
67
|
+
_context.next = 14;
|
|
80
68
|
break;
|
|
81
|
-
case
|
|
82
|
-
_context.prev =
|
|
83
|
-
_context.t0 = _context["catch"](
|
|
84
|
-
console.error('
|
|
85
|
-
case
|
|
86
|
-
_this.options.metadata = metadata;
|
|
87
|
-
_context.next = 25;
|
|
88
|
-
break;
|
|
89
|
-
case 22:
|
|
90
|
-
_context.prev = 22;
|
|
91
|
-
_context.t1 = _context["catch"](2);
|
|
92
|
-
console.error('failed to get admin portal metadata', _context.t1);
|
|
93
|
-
case 25:
|
|
69
|
+
case 11:
|
|
70
|
+
_context.prev = 11;
|
|
71
|
+
_context.t0 = _context["catch"](1);
|
|
72
|
+
console.error('failed to get admin portal metadata', _context.t0);
|
|
73
|
+
case 14:
|
|
94
74
|
Metadata.set(_this.options.metadata, _this.name);
|
|
95
|
-
case
|
|
75
|
+
case 15:
|
|
96
76
|
case "end":
|
|
97
77
|
return _context.stop();
|
|
98
78
|
}
|
|
99
|
-
}, _callee, null, [[
|
|
79
|
+
}, _callee, null, [[1, 11]]);
|
|
100
80
|
}));
|
|
101
81
|
this.requestAuthorize = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
102
82
|
var _this$options$authOpt, _this$options$authOpt2;
|
|
@@ -144,7 +124,7 @@ export var FronteggApp = /*#__PURE__*/function () {
|
|
|
144
124
|
case 4:
|
|
145
125
|
_context3.prev = 4;
|
|
146
126
|
_context3.next = 7;
|
|
147
|
-
return
|
|
127
|
+
return _this.apiClient.featureFlags.loadFeatureFlags();
|
|
148
128
|
case 7:
|
|
149
129
|
flags = _context3.sent;
|
|
150
130
|
if (_this.options.overrideFeatureFlags) {
|
|
@@ -200,6 +180,8 @@ export var FronteggApp = /*#__PURE__*/function () {
|
|
|
200
180
|
requestCredentials: 'include'
|
|
201
181
|
}, _options.contextOptions)
|
|
202
182
|
});
|
|
183
|
+
this.fetchClient = new FetchClient(this.name);
|
|
184
|
+
this.apiClient = createApiClient(this.name);
|
|
203
185
|
if (this.options.cdnUrl) {
|
|
204
186
|
this.cdnUrl = this.options.cdnUrl;
|
|
205
187
|
}
|
|
@@ -232,13 +214,18 @@ export var FronteggApp = /*#__PURE__*/function () {
|
|
|
232
214
|
});
|
|
233
215
|
}
|
|
234
216
|
AppHolder.setInstance(appName, this);
|
|
217
|
+
var contextHolder = ContextHolder["for"](appName);
|
|
218
|
+
contextHolder.setAppName(appName);
|
|
235
219
|
this.setEntitlementsOptions(_options.entitlementsOptions);
|
|
236
220
|
this.setSessionContext({
|
|
237
221
|
enableSessionPerTenant: (_options$authOptions = _options.authOptions) == null ? void 0 : _options$authOptions.enableSessionPerTenant
|
|
238
222
|
});
|
|
239
223
|
|
|
240
|
-
//
|
|
241
|
-
|
|
224
|
+
// pay attention: basename is used from the router base name, then if it's empty it will be the frontegg options basename
|
|
225
|
+
var basename = _options.basename;
|
|
226
|
+
if (basename) {
|
|
227
|
+
contextHolder.setBasename(basename);
|
|
228
|
+
}
|
|
242
229
|
}
|
|
243
230
|
|
|
244
231
|
/**
|
|
@@ -248,12 +235,12 @@ export var FronteggApp = /*#__PURE__*/function () {
|
|
|
248
235
|
_createClass(FronteggApp, [{
|
|
249
236
|
key: "setEntitlementsOptions",
|
|
250
237
|
value: function setEntitlementsOptions(entitlementsOptions) {
|
|
251
|
-
ContextHolder.setEntitlementsOptions(Object.assign({}, entitlementsOptions));
|
|
238
|
+
ContextHolder["for"](this.name).setEntitlementsOptions(Object.assign({}, entitlementsOptions));
|
|
252
239
|
}
|
|
253
240
|
}, {
|
|
254
241
|
key: "setSessionContext",
|
|
255
242
|
value: function setSessionContext(sessionContext) {
|
|
256
|
-
ContextHolder.setSessionContext(Object.assign({}, sessionContext));
|
|
243
|
+
ContextHolder["for"](this.name).setSessionContext(Object.assign({}, sessionContext));
|
|
257
244
|
}
|
|
258
245
|
}, {
|
|
259
246
|
key: "initContainers",
|
|
@@ -331,6 +318,7 @@ export var FronteggApp = /*#__PURE__*/function () {
|
|
|
331
318
|
}, {
|
|
332
319
|
key: "loginWithRedirect",
|
|
333
320
|
value: function loginWithRedirect() {
|
|
321
|
+
var additionalParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
334
322
|
this.store.dispatch({
|
|
335
323
|
type: 'auth/setState',
|
|
336
324
|
payload: {
|
|
@@ -338,7 +326,8 @@ export var FronteggApp = /*#__PURE__*/function () {
|
|
|
338
326
|
}
|
|
339
327
|
});
|
|
340
328
|
this.store.dispatch({
|
|
341
|
-
type: 'auth/requestHostedLoginAuthorize'
|
|
329
|
+
type: 'auth/requestHostedLoginAuthorize',
|
|
330
|
+
payload: additionalParams
|
|
342
331
|
});
|
|
343
332
|
}
|
|
344
333
|
}, {
|
|
@@ -443,7 +432,7 @@ export var FronteggApp = /*#__PURE__*/function () {
|
|
|
443
432
|
isMultiApp: false
|
|
444
433
|
}, isMultiApp = _ref4.isMultiApp;
|
|
445
434
|
_this$queryFeatureFla = this.queryFeatureFlags(['multi-apps-admin-portal']), _this$queryFeatureFla2 = _slicedToArray(_this$queryFeatureFla, 1), multiAppsFlag = _this$queryFeatureFla2[0];
|
|
446
|
-
|
|
435
|
+
ContextHolder["for"](this.name).setRequestSource(RequestSource.AdminPortal);
|
|
447
436
|
_context6.next = 5;
|
|
448
437
|
return this.loadScript('FronteggAdminPortal');
|
|
449
438
|
case 5:
|
|
@@ -491,7 +480,7 @@ export var FronteggApp = /*#__PURE__*/function () {
|
|
|
491
480
|
(_this$adminPortalRend = this.adminPortalRenderer) == null ? void 0 : _this$adminPortalRend.unmount();
|
|
492
481
|
// unmount is removing url search params, therefore we need to restore them after unmount
|
|
493
482
|
restoreSearchParams(searchParams);
|
|
494
|
-
|
|
483
|
+
ContextHolder["for"](this.name).setRequestSource(null);
|
|
495
484
|
} catch (e) {
|
|
496
485
|
console.error('Failed to unmount admin portal', e);
|
|
497
486
|
}
|
package/FronteggApp/index.d.ts
CHANGED
package/FronteggApp/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from './FronteggApp';
|
|
1
|
+
export * from './FronteggApp';
|
|
2
|
+
export { getOverriddenMetadata } from './utils';
|
package/FronteggApp/utils.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
import { FronteggMetadata } from '@frontegg/types';
|
|
2
|
+
import { FetchClient } from '@frontegg/rest-api';
|
|
1
3
|
/**
|
|
2
4
|
* load gtm scripts by using metadata gtm keys
|
|
3
5
|
* @param fronteggAppName
|
|
4
6
|
*/
|
|
5
7
|
export declare const loadGTM: (fronteggAppName: string) => void;
|
|
8
|
+
/**
|
|
9
|
+
* @param metadata {FronteggMetadata}
|
|
10
|
+
* this function will get metadata overrides from the metadataOverrides.url and will return a new object with override of old metadata
|
|
11
|
+
* @param fetchClient
|
|
12
|
+
*/
|
|
13
|
+
export declare const getOverriddenMetadata: (metadata: FronteggMetadata, fetchClient: FetchClient) => Promise<FronteggMetadata>;
|
package/FronteggApp/utils.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
1
3
|
import { Metadata } from '@frontegg/types';
|
|
4
|
+
import deepMerge from 'deepmerge';
|
|
2
5
|
|
|
3
6
|
/**
|
|
4
7
|
* To prevent XSS attack, this function check for gtm key validity
|
|
@@ -30,4 +33,56 @@ export var loadGTM = function loadGTM(fronteggAppName) {
|
|
|
30
33
|
script.innerHTML = "\n (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n })(window,document,'script','dataLayer','".concat(id, "');\n ");
|
|
31
34
|
document.body.appendChild(script);
|
|
32
35
|
});
|
|
33
|
-
};
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* @param metadata {FronteggMetadata}
|
|
40
|
+
* this function will get metadata overrides from the metadataOverrides.url and will return a new object with override of old metadata
|
|
41
|
+
* @param fetchClient
|
|
42
|
+
*/
|
|
43
|
+
export var getOverriddenMetadata = /*#__PURE__*/function () {
|
|
44
|
+
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(metadata, fetchClient) {
|
|
45
|
+
var _metadata$metadataOve;
|
|
46
|
+
var overrideUrl, overrideData, overriddenMetadata;
|
|
47
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
48
|
+
while (1) switch (_context.prev = _context.next) {
|
|
49
|
+
case 0:
|
|
50
|
+
overrideUrl = (_metadata$metadataOve = metadata.metadataOverrides) == null ? void 0 : _metadata$metadataOve.url;
|
|
51
|
+
if (overrideUrl) {
|
|
52
|
+
_context.next = 3;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
return _context.abrupt("return", metadata);
|
|
56
|
+
case 3:
|
|
57
|
+
_context.prev = 3;
|
|
58
|
+
_context.next = 6;
|
|
59
|
+
return fetchClient.get(overrideUrl, {}, {
|
|
60
|
+
credentials: 'same-origin'
|
|
61
|
+
});
|
|
62
|
+
case 6:
|
|
63
|
+
overrideData = _context.sent;
|
|
64
|
+
if (!overrideData) {
|
|
65
|
+
_context.next = 10;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
overriddenMetadata = deepMerge(metadata, overrideData);
|
|
69
|
+
return _context.abrupt("return", overriddenMetadata);
|
|
70
|
+
case 10:
|
|
71
|
+
_context.next = 15;
|
|
72
|
+
break;
|
|
73
|
+
case 12:
|
|
74
|
+
_context.prev = 12;
|
|
75
|
+
_context.t0 = _context["catch"](3);
|
|
76
|
+
console.error('Failed to get metadata overrides', _context.t0);
|
|
77
|
+
case 15:
|
|
78
|
+
return _context.abrupt("return", metadata);
|
|
79
|
+
case 16:
|
|
80
|
+
case "end":
|
|
81
|
+
return _context.stop();
|
|
82
|
+
}
|
|
83
|
+
}, _callee, null, [[3, 12]]);
|
|
84
|
+
}));
|
|
85
|
+
return function getOverriddenMetadata(_x, _x2) {
|
|
86
|
+
return _ref3.apply(this, arguments);
|
|
87
|
+
};
|
|
88
|
+
}();
|
package/HostedLogin/index.js
CHANGED
|
@@ -11,9 +11,10 @@ export var HostedLogin = /*#__PURE__*/function () {
|
|
|
11
11
|
value: function setAuthentication(isAuthenticated, accessToken, user) {
|
|
12
12
|
var appName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'default';
|
|
13
13
|
var app = AppHolder.getInstance(appName);
|
|
14
|
+
var contextHolder = ContextHolder["for"](appName);
|
|
14
15
|
if (isAuthenticated && accessToken) {
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
contextHolder.setAccessToken(accessToken);
|
|
17
|
+
contextHolder.setUser(Object.assign({}, user, {
|
|
17
18
|
accessToken: accessToken
|
|
18
19
|
}));
|
|
19
20
|
app.store.actions.setAuthState({
|
|
@@ -23,8 +24,8 @@ export var HostedLogin = /*#__PURE__*/function () {
|
|
|
23
24
|
});
|
|
24
25
|
app.store.actions.loadTenants();
|
|
25
26
|
} else {
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
contextHolder.setAccessToken(null);
|
|
28
|
+
contextHolder.setUser(null);
|
|
28
29
|
app.store.actions.setAuthState({
|
|
29
30
|
isLoading: false,
|
|
30
31
|
isAuthenticated: false,
|
package/index.js
CHANGED
|
@@ -20,7 +20,6 @@ var _version = _interopRequireDefault(require("../version"));
|
|
|
20
20
|
var _mockFlagsList = require("../utils/mockFlagsList");
|
|
21
21
|
var _utils2 = require("./utils");
|
|
22
22
|
var ValtioVanilla = _interopRequireWildcard(require("valtio/vanilla"));
|
|
23
|
-
var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|
24
23
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
24
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
25
|
var FronteggApp = /*#__PURE__*/function () {
|
|
@@ -48,61 +47,43 @@ var FronteggApp = /*#__PURE__*/function () {
|
|
|
48
47
|
this.loginBoxRenderer = void 0;
|
|
49
48
|
this.store = void 0;
|
|
50
49
|
this.loadingListeners = [];
|
|
50
|
+
this.fetchClient = void 0;
|
|
51
|
+
this.apiClient = void 0;
|
|
51
52
|
this.updateLocalizations = void 0;
|
|
52
53
|
this.loadAdminBoxMetadata = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
53
|
-
var
|
|
54
|
+
var _data$rows$0$configur, _data$rows, _data$rows$, data, metadata;
|
|
54
55
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
55
56
|
while (1) switch (_context.prev = _context.next) {
|
|
56
57
|
case 0:
|
|
57
|
-
Get = FronteggRestApi.fetch.Get;
|
|
58
58
|
if (_this.options.metadata) {
|
|
59
|
-
_context.next =
|
|
59
|
+
_context.next = 14;
|
|
60
60
|
break;
|
|
61
61
|
}
|
|
62
|
-
_context.prev =
|
|
63
|
-
_context.next =
|
|
64
|
-
return
|
|
62
|
+
_context.prev = 1;
|
|
63
|
+
_context.next = 4;
|
|
64
|
+
return _this.fetchClient.get('/metadata', {
|
|
65
65
|
entityName: 'adminBox'
|
|
66
66
|
});
|
|
67
|
-
case
|
|
67
|
+
case 4:
|
|
68
68
|
data = _context.sent;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
_context.prev = 9;
|
|
76
|
-
_context.next = 12;
|
|
77
|
-
return Get(overrideUrl, {}, {
|
|
78
|
-
credentials: 'same-origin'
|
|
79
|
-
});
|
|
80
|
-
case 12:
|
|
81
|
-
overrideData = _context.sent;
|
|
82
|
-
if (overrideData) {
|
|
83
|
-
metadata = (0, _deepmerge["default"])(metadata, overrideData);
|
|
84
|
-
}
|
|
85
|
-
_context.next = 19;
|
|
86
|
-
break;
|
|
87
|
-
case 16:
|
|
88
|
-
_context.prev = 16;
|
|
89
|
-
_context.t0 = _context["catch"](9);
|
|
90
|
-
console.error('Failed to get metadata overrides', _context.t0);
|
|
91
|
-
case 19:
|
|
92
|
-
_this.options.metadata = metadata;
|
|
93
|
-
_context.next = 25;
|
|
69
|
+
metadata = (_data$rows$0$configur = data == null ? void 0 : (_data$rows = data.rows) == null ? void 0 : (_data$rows$ = _data$rows[0]) == null ? void 0 : _data$rows$.configuration) != null ? _data$rows$0$configur : {};
|
|
70
|
+
_context.next = 8;
|
|
71
|
+
return (0, _utils2.getOverriddenMetadata)(metadata, _this.fetchClient);
|
|
72
|
+
case 8:
|
|
73
|
+
_this.options.metadata = _context.sent;
|
|
74
|
+
_context.next = 14;
|
|
94
75
|
break;
|
|
95
|
-
case
|
|
96
|
-
_context.prev =
|
|
97
|
-
_context.
|
|
98
|
-
console.error('failed to get admin portal metadata', _context.
|
|
99
|
-
case
|
|
76
|
+
case 11:
|
|
77
|
+
_context.prev = 11;
|
|
78
|
+
_context.t0 = _context["catch"](1);
|
|
79
|
+
console.error('failed to get admin portal metadata', _context.t0);
|
|
80
|
+
case 14:
|
|
100
81
|
FronteggTypes.Metadata.set(_this.options.metadata, _this.name);
|
|
101
|
-
case
|
|
82
|
+
case 15:
|
|
102
83
|
case "end":
|
|
103
84
|
return _context.stop();
|
|
104
85
|
}
|
|
105
|
-
}, _callee, null, [[
|
|
86
|
+
}, _callee, null, [[1, 11]]);
|
|
106
87
|
}));
|
|
107
88
|
this.requestAuthorize = /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
108
89
|
var _this$options$authOpt, _this$options$authOpt2;
|
|
@@ -150,7 +131,7 @@ var FronteggApp = /*#__PURE__*/function () {
|
|
|
150
131
|
case 4:
|
|
151
132
|
_context3.prev = 4;
|
|
152
133
|
_context3.next = 7;
|
|
153
|
-
return
|
|
134
|
+
return _this.apiClient.featureFlags.loadFeatureFlags();
|
|
154
135
|
case 7:
|
|
155
136
|
flags = _context3.sent;
|
|
156
137
|
if (_this.options.overrideFeatureFlags) {
|
|
@@ -206,6 +187,8 @@ var FronteggApp = /*#__PURE__*/function () {
|
|
|
206
187
|
requestCredentials: 'include'
|
|
207
188
|
}, _options.contextOptions)
|
|
208
189
|
});
|
|
190
|
+
this.fetchClient = new FronteggRestApi.FetchClient(this.name);
|
|
191
|
+
this.apiClient = (0, FronteggRestApi.createApiClient)(this.name);
|
|
209
192
|
if (this.options.cdnUrl) {
|
|
210
193
|
this.cdnUrl = this.options.cdnUrl;
|
|
211
194
|
}
|
|
@@ -238,13 +221,18 @@ var FronteggApp = /*#__PURE__*/function () {
|
|
|
238
221
|
});
|
|
239
222
|
}
|
|
240
223
|
_AppHolder.AppHolder.setInstance(appName, this);
|
|
224
|
+
var contextHolder = FronteggRestApi.ContextHolder["for"](appName);
|
|
225
|
+
contextHolder.setAppName(appName);
|
|
241
226
|
this.setEntitlementsOptions(_options.entitlementsOptions);
|
|
242
227
|
this.setSessionContext({
|
|
243
228
|
enableSessionPerTenant: (_options$authOptions = _options.authOptions) == null ? void 0 : _options$authOptions.enableSessionPerTenant
|
|
244
229
|
});
|
|
245
230
|
|
|
246
|
-
//
|
|
247
|
-
|
|
231
|
+
// pay attention: basename is used from the router base name, then if it's empty it will be the frontegg options basename
|
|
232
|
+
var basename = _options.basename;
|
|
233
|
+
if (basename) {
|
|
234
|
+
contextHolder.setBasename(basename);
|
|
235
|
+
}
|
|
248
236
|
}
|
|
249
237
|
|
|
250
238
|
/**
|
|
@@ -254,12 +242,12 @@ var FronteggApp = /*#__PURE__*/function () {
|
|
|
254
242
|
(0, _createClass2["default"])(FronteggApp, [{
|
|
255
243
|
key: "setEntitlementsOptions",
|
|
256
244
|
value: function setEntitlementsOptions(entitlementsOptions) {
|
|
257
|
-
FronteggRestApi.ContextHolder.setEntitlementsOptions(Object.assign({}, entitlementsOptions));
|
|
245
|
+
FronteggRestApi.ContextHolder["for"](this.name).setEntitlementsOptions(Object.assign({}, entitlementsOptions));
|
|
258
246
|
}
|
|
259
247
|
}, {
|
|
260
248
|
key: "setSessionContext",
|
|
261
249
|
value: function setSessionContext(sessionContext) {
|
|
262
|
-
FronteggRestApi.ContextHolder.setSessionContext(Object.assign({}, sessionContext));
|
|
250
|
+
FronteggRestApi.ContextHolder["for"](this.name).setSessionContext(Object.assign({}, sessionContext));
|
|
263
251
|
}
|
|
264
252
|
}, {
|
|
265
253
|
key: "initContainers",
|
|
@@ -337,6 +325,7 @@ var FronteggApp = /*#__PURE__*/function () {
|
|
|
337
325
|
}, {
|
|
338
326
|
key: "loginWithRedirect",
|
|
339
327
|
value: function loginWithRedirect() {
|
|
328
|
+
var additionalParams = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
340
329
|
this.store.dispatch({
|
|
341
330
|
type: 'auth/setState',
|
|
342
331
|
payload: {
|
|
@@ -344,7 +333,8 @@ var FronteggApp = /*#__PURE__*/function () {
|
|
|
344
333
|
}
|
|
345
334
|
});
|
|
346
335
|
this.store.dispatch({
|
|
347
|
-
type: 'auth/requestHostedLoginAuthorize'
|
|
336
|
+
type: 'auth/requestHostedLoginAuthorize',
|
|
337
|
+
payload: additionalParams
|
|
348
338
|
});
|
|
349
339
|
}
|
|
350
340
|
}, {
|
|
@@ -449,7 +439,7 @@ var FronteggApp = /*#__PURE__*/function () {
|
|
|
449
439
|
isMultiApp: false
|
|
450
440
|
}, isMultiApp = _ref4.isMultiApp;
|
|
451
441
|
_this$queryFeatureFla = this.queryFeatureFlags(['multi-apps-admin-portal']), _this$queryFeatureFla2 = (0, _slicedToArray2["default"])(_this$queryFeatureFla, 1), multiAppsFlag = _this$queryFeatureFla2[0];
|
|
452
|
-
FronteggRestApi.ContextHolder.setRequestSource(FronteggRestApi.RequestSource.AdminPortal);
|
|
442
|
+
FronteggRestApi.ContextHolder["for"](this.name).setRequestSource(FronteggRestApi.RequestSource.AdminPortal);
|
|
453
443
|
_context6.next = 5;
|
|
454
444
|
return this.loadScript('FronteggAdminPortal');
|
|
455
445
|
case 5:
|
|
@@ -497,7 +487,7 @@ var FronteggApp = /*#__PURE__*/function () {
|
|
|
497
487
|
(_this$adminPortalRend = this.adminPortalRenderer) == null ? void 0 : _this$adminPortalRend.unmount();
|
|
498
488
|
// unmount is removing url search params, therefore we need to restore them after unmount
|
|
499
489
|
(0, _utils.restoreSearchParams)(searchParams);
|
|
500
|
-
FronteggRestApi.ContextHolder.setRequestSource(null);
|
|
490
|
+
FronteggRestApi.ContextHolder["for"](this.name).setRequestSource(null);
|
|
501
491
|
} catch (e) {
|
|
502
492
|
console.error('Failed to unmount admin portal', e);
|
|
503
493
|
}
|
|
@@ -3,9 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
getOverriddenMetadata: true
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "getOverriddenMetadata", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function get() {
|
|
12
|
+
return _utils.getOverriddenMetadata;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
6
15
|
var _FronteggApp = require("./FronteggApp");
|
|
7
16
|
Object.keys(_FronteggApp).forEach(function (key) {
|
|
8
17
|
if (key === "default" || key === "__esModule") return;
|
|
18
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
9
19
|
if (key in exports && exports[key] === _FronteggApp[key]) return;
|
|
10
20
|
Object.defineProperty(exports, key, {
|
|
11
21
|
enumerable: true,
|
|
@@ -13,4 +23,5 @@ Object.keys(_FronteggApp).forEach(function (key) {
|
|
|
13
23
|
return _FronteggApp[key];
|
|
14
24
|
}
|
|
15
25
|
});
|
|
16
|
-
});
|
|
26
|
+
});
|
|
27
|
+
var _utils = require("./utils");
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
|
-
exports.loadGTM = void 0;
|
|
7
|
+
exports.loadGTM = exports.getOverriddenMetadata = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
7
10
|
var _types = require("@frontegg/types");
|
|
11
|
+
var _deepmerge = _interopRequireDefault(require("deepmerge"));
|
|
8
12
|
/**
|
|
9
13
|
* To prevent XSS attack, this function check for gtm key validity
|
|
10
14
|
* XSS attack may happen if values are injected by postman because we don't have validity check in the BE
|
|
@@ -36,4 +40,57 @@ var loadGTM = function loadGTM(fronteggAppName) {
|
|
|
36
40
|
document.body.appendChild(script);
|
|
37
41
|
});
|
|
38
42
|
};
|
|
39
|
-
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* @param metadata {FronteggMetadata}
|
|
46
|
+
* this function will get metadata overrides from the metadataOverrides.url and will return a new object with override of old metadata
|
|
47
|
+
* @param fetchClient
|
|
48
|
+
*/
|
|
49
|
+
exports.loadGTM = loadGTM;
|
|
50
|
+
var getOverriddenMetadata = /*#__PURE__*/function () {
|
|
51
|
+
var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(metadata, fetchClient) {
|
|
52
|
+
var _metadata$metadataOve;
|
|
53
|
+
var overrideUrl, overrideData, overriddenMetadata;
|
|
54
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
55
|
+
while (1) switch (_context.prev = _context.next) {
|
|
56
|
+
case 0:
|
|
57
|
+
overrideUrl = (_metadata$metadataOve = metadata.metadataOverrides) == null ? void 0 : _metadata$metadataOve.url;
|
|
58
|
+
if (overrideUrl) {
|
|
59
|
+
_context.next = 3;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
return _context.abrupt("return", metadata);
|
|
63
|
+
case 3:
|
|
64
|
+
_context.prev = 3;
|
|
65
|
+
_context.next = 6;
|
|
66
|
+
return fetchClient.get(overrideUrl, {}, {
|
|
67
|
+
credentials: 'same-origin'
|
|
68
|
+
});
|
|
69
|
+
case 6:
|
|
70
|
+
overrideData = _context.sent;
|
|
71
|
+
if (!overrideData) {
|
|
72
|
+
_context.next = 10;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
overriddenMetadata = (0, _deepmerge["default"])(metadata, overrideData);
|
|
76
|
+
return _context.abrupt("return", overriddenMetadata);
|
|
77
|
+
case 10:
|
|
78
|
+
_context.next = 15;
|
|
79
|
+
break;
|
|
80
|
+
case 12:
|
|
81
|
+
_context.prev = 12;
|
|
82
|
+
_context.t0 = _context["catch"](3);
|
|
83
|
+
console.error('Failed to get metadata overrides', _context.t0);
|
|
84
|
+
case 15:
|
|
85
|
+
return _context.abrupt("return", metadata);
|
|
86
|
+
case 16:
|
|
87
|
+
case "end":
|
|
88
|
+
return _context.stop();
|
|
89
|
+
}
|
|
90
|
+
}, _callee, null, [[3, 12]]);
|
|
91
|
+
}));
|
|
92
|
+
return function getOverriddenMetadata(_x, _x2) {
|
|
93
|
+
return _ref3.apply(this, arguments);
|
|
94
|
+
};
|
|
95
|
+
}();
|
|
96
|
+
exports.getOverriddenMetadata = getOverriddenMetadata;
|
|
@@ -18,9 +18,10 @@ var HostedLogin = /*#__PURE__*/function () {
|
|
|
18
18
|
value: function setAuthentication(isAuthenticated, accessToken, user) {
|
|
19
19
|
var appName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'default';
|
|
20
20
|
var app = _AppHolder.AppHolder.getInstance(appName);
|
|
21
|
+
var contextHolder = _restApi.ContextHolder["for"](appName);
|
|
21
22
|
if (isAuthenticated && accessToken) {
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
contextHolder.setAccessToken(accessToken);
|
|
24
|
+
contextHolder.setUser(Object.assign({}, user, {
|
|
24
25
|
accessToken: accessToken
|
|
25
26
|
}));
|
|
26
27
|
app.store.actions.setAuthState({
|
|
@@ -30,8 +31,8 @@ var HostedLogin = /*#__PURE__*/function () {
|
|
|
30
31
|
});
|
|
31
32
|
app.store.actions.loadTenants();
|
|
32
33
|
} else {
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
contextHolder.setAccessToken(null);
|
|
35
|
+
contextHolder.setUser(null);
|
|
35
36
|
app.store.actions.setAuthState({
|
|
36
37
|
isLoading: false,
|
|
37
38
|
isAuthenticated: false,
|