@frontegg/redux-store 7.11.0-alpha.0 → 7.12.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.
- package/auth/ActivateAccountState/actions.js +1 -4
- package/auth/LoginState/actions/afterAuthNavigation.actions.js +12 -10
- package/auth/LoginState/actions/handleVerifyMFAResponse.actions.js +1 -2
- package/auth/LoginState/actions/hostedLoginAuthorize.actions.js +10 -10
- package/auth/LoginState/actions/index.js +24 -23
- package/auth/LoginState/actions/mfaRequiredState.actions.js +1 -2
- package/auth/LoginState/actions/mfaWithAuthenticator.actions.js +1 -2
- package/auth/LoginState/helpers.js +4 -5
- package/auth/PasskeysState/actions.js +2 -3
- package/auth/SocialLoginState/actions.js +3 -4
- package/auth/StepUpState/actions/generateStepUpSession.actions.js +1 -3
- package/auth/StepUpState/actions/stepUpHostedLogin.actions.js +2 -3
- package/auth/StepUpState/helpers.d.ts +2 -2
- package/auth/StepUpState/helpers.js +6 -7
- package/helpers/gtm.js +2 -4
- package/helpers/index.d.ts +1 -0
- package/helpers/index.js +2 -1
- package/helpers/random.js +1 -2
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/interfaces.d.ts +11 -0
- package/node/auth/ActivateAccountState/actions.js +1 -4
- package/node/auth/LoginState/actions/afterAuthNavigation.actions.js +12 -10
- package/node/auth/LoginState/actions/handleVerifyMFAResponse.actions.js +1 -2
- package/node/auth/LoginState/actions/hostedLoginAuthorize.actions.js +10 -10
- package/node/auth/LoginState/actions/index.js +22 -21
- package/node/auth/LoginState/actions/mfaRequiredState.actions.js +1 -2
- package/node/auth/LoginState/actions/mfaWithAuthenticator.actions.js +1 -2
- package/node/auth/LoginState/helpers.js +4 -5
- package/node/auth/PasskeysState/actions.js +2 -3
- package/node/auth/SocialLoginState/actions.js +3 -4
- package/node/auth/StepUpState/actions/generateStepUpSession.actions.js +1 -2
- package/node/auth/StepUpState/actions/stepUpHostedLogin.actions.js +2 -3
- package/node/auth/StepUpState/helpers.js +6 -7
- package/node/helpers/gtm.js +2 -4
- package/node/helpers/index.js +11 -0
- package/node/helpers/random.js +1 -2
- package/node/index.js +12 -1
- package/node/toolkit/FronteggNativeModule.js +4 -10
- package/node/toolkit/index.js +2 -26
- package/node/toolkit/store.js +3 -1
- package/node/valtio/utils/devtools.js +1 -1
- package/package.json +1 -1
- package/toolkit/FronteggNativeModule.js +4 -10
- package/toolkit/index.d.ts +0 -3
- package/toolkit/index.js +1 -4
- package/toolkit/store.js +3 -1
- package/valtio/utils/devtools.js +1 -1
- package/node/toolkit/LocalStorage.js +0 -84
- package/node/toolkit/SessionStorage.js +0 -84
- package/node/toolkit/WindowLocation.js +0 -291
- package/toolkit/LocalStorage.d.ts +0 -45
- package/toolkit/LocalStorage.js +0 -77
- package/toolkit/SessionStorage.d.ts +0 -45
- package/toolkit/SessionStorage.js +0 -77
- package/toolkit/WindowLocation.d.ts +0 -160
- package/toolkit/WindowLocation.js +0 -284
|
@@ -10,7 +10,6 @@ var _helpers = require("../helpers");
|
|
|
10
10
|
var _constants = require("../../../constants");
|
|
11
11
|
var _consts = require("../../StepUpState/consts");
|
|
12
12
|
var _helpers2 = require("../../../helpers");
|
|
13
|
-
var _toolkit = require("../../../toolkit");
|
|
14
13
|
var _helpers3 = require("../../StepUpState/helpers");
|
|
15
14
|
var _default = (store, api, sharedActions) => {
|
|
16
15
|
const actions = sharedActions;
|
|
@@ -23,10 +22,11 @@ var _default = (store, api, sharedActions) => {
|
|
|
23
22
|
* In case the url is equal to the window.location.origin, it will return an empty string
|
|
24
23
|
*/
|
|
25
24
|
function cleanUrlIfSameOrigin(url) {
|
|
26
|
-
|
|
25
|
+
var _window, _window2;
|
|
26
|
+
if (!url.startsWith((_window = window) == null ? void 0 : _window.location.origin)) {
|
|
27
27
|
return url;
|
|
28
28
|
}
|
|
29
|
-
return url.replace(
|
|
29
|
+
return url.replace((_window2 = window) == null ? void 0 : _window2.location.origin, '');
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
/**
|
|
@@ -77,11 +77,11 @@ var _default = (store, api, sharedActions) => {
|
|
|
77
77
|
socialLoginCallbackUrl,
|
|
78
78
|
activateUrl
|
|
79
79
|
} = routes;
|
|
80
|
-
let finalUrl =
|
|
80
|
+
let finalUrl = window.localStorage.getItem(_constants.FRONTEGG_AFTER_AUTH_REDIRECT_URL);
|
|
81
81
|
if (!finalUrl || [loginUrl, logoutUrl, socialLoginCallbackUrl, activateUrl].includes(finalUrl)) {
|
|
82
82
|
finalUrl = authenticatedUrl;
|
|
83
83
|
}
|
|
84
|
-
const redirectUrl =
|
|
84
|
+
const redirectUrl = (0, _helpers.getRedirectUrl)({
|
|
85
85
|
authenticatedUrl: finalUrl,
|
|
86
86
|
includeQueryParam,
|
|
87
87
|
enforceRedirectToSameSite,
|
|
@@ -115,10 +115,11 @@ var _default = (store, api, sharedActions) => {
|
|
|
115
115
|
// we don't want to remove the FRONTEGG_AFTER_AUTH_REDIRECT_URL when we are in the step up flow
|
|
116
116
|
redirectUrl = forceStepUpUrl;
|
|
117
117
|
} else {
|
|
118
|
+
var _window3;
|
|
118
119
|
if (shouldStepUpDuringLogin) {
|
|
119
120
|
// getUrlForAfterAuthNavigation give priority to the redirectUrl
|
|
120
121
|
// avoiding use of getUrlForAfterAuthNavigation because we don't want to use the redirectUrl for magic link for example
|
|
121
|
-
const localStorageRedirectUrl =
|
|
122
|
+
const localStorageRedirectUrl = window.localStorage.getItem(_constants.FRONTEGG_AFTER_AUTH_REDIRECT_URL);
|
|
122
123
|
if (localStorageRedirectUrl && !(0, _helpers.isAbsoluteUrl)(localStorageRedirectUrl)) {
|
|
123
124
|
redirectUrl = localStorageRedirectUrl;
|
|
124
125
|
}
|
|
@@ -129,7 +130,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
129
130
|
preventRedirectUrlOriginCleaning
|
|
130
131
|
});
|
|
131
132
|
}
|
|
132
|
-
|
|
133
|
+
(_window3 = window) == null ? void 0 : _window3.localStorage.removeItem(_constants.FRONTEGG_AFTER_AUTH_REDIRECT_URL);
|
|
133
134
|
}
|
|
134
135
|
await (0, _helpers2.delay)(200);
|
|
135
136
|
await resetStateAction();
|
|
@@ -143,17 +144,18 @@ var _default = (store, api, sharedActions) => {
|
|
|
143
144
|
* Handling also step up scenario when user silently logout to continue to step up
|
|
144
145
|
*/
|
|
145
146
|
const afterAuthNavigation = async payload => {
|
|
146
|
-
var _payload$preventRedir;
|
|
147
|
+
var _window4, _payload$preventRedir;
|
|
147
148
|
const {
|
|
148
149
|
customLoginAuthenticatedUrl,
|
|
149
150
|
stepUpUrl
|
|
150
151
|
} = store.auth.routes;
|
|
151
152
|
|
|
152
153
|
// login with magic code, try to step up, no other mfa, invalid max age, force_enroll -> logout, login with first factor, not-stepped up jwt -> navigate to step up
|
|
153
|
-
const shouldStepUp =
|
|
154
|
+
const shouldStepUp = (_window4 = window) == null ? void 0 : _window4.localStorage.getItem(_consts.SHOULD_STEP_UP_KEY);
|
|
154
155
|
const user = store.auth.user;
|
|
155
156
|
if (shouldStepUp) {
|
|
156
|
-
|
|
157
|
+
var _window5;
|
|
158
|
+
(_window5 = window) == null ? void 0 : _window5.localStorage.removeItem(_consts.SHOULD_STEP_UP_KEY);
|
|
157
159
|
}
|
|
158
160
|
if (stepUpUrl && shouldStepUp && !(0, _helpers3.isSteppedUp)(user)) {
|
|
159
161
|
return afterAuthNavigationUtil(actions.resetLoginState, {
|
|
@@ -7,7 +7,6 @@ exports.default = _default;
|
|
|
7
7
|
var _restApi = require("@frontegg/rest-api");
|
|
8
8
|
var _interfaces = require("../../MfaState/interfaces");
|
|
9
9
|
var _interfaces2 = require("../interfaces");
|
|
10
|
-
var _toolkit = require("../../../toolkit");
|
|
11
10
|
function _default(store, api, sharedActions) {
|
|
12
11
|
const actions = sharedActions;
|
|
13
12
|
|
|
@@ -79,7 +78,7 @@ function _default(store, api, sharedActions) {
|
|
|
79
78
|
loading: false
|
|
80
79
|
});
|
|
81
80
|
if (user.id) {
|
|
82
|
-
|
|
81
|
+
localStorage.setItem('userId', user.id);
|
|
83
82
|
}
|
|
84
83
|
const isAuthenticated = !!user.accessToken;
|
|
85
84
|
actions.setAuthState({
|
|
@@ -11,7 +11,6 @@ var _constants = require("../../../constants");
|
|
|
11
11
|
var _helpers2 = require("../helpers");
|
|
12
12
|
var _helpers3 = require("../../helpers");
|
|
13
13
|
var _consts = require("../../StepUpState/consts");
|
|
14
|
-
var _toolkit = require("../../../toolkit");
|
|
15
14
|
var _default = (store, api, sharedActions) => {
|
|
16
15
|
const actions = sharedActions;
|
|
17
16
|
|
|
@@ -53,9 +52,9 @@ var _default = (store, api, sharedActions) => {
|
|
|
53
52
|
const code_challenge = await (0, _helpers.generateCodeChallenge)(code_verifier);
|
|
54
53
|
|
|
55
54
|
// We are saving the verifier in session storage to be able to validate the response
|
|
56
|
-
|
|
55
|
+
localStorage.setItem(_constants.HOSTED_LOGIN_VERIFIER_KEY, code_verifier);
|
|
57
56
|
const basename = (0, _helpers2.getBaseNameWithoutSlashSuffix)(store);
|
|
58
|
-
let redirectUrl = `${
|
|
57
|
+
let redirectUrl = `${window.location.origin}${urlStrategy === 'path' ? '' : '#'}${basename != null ? basename : ''}${routes.hostedLoginRedirectUrl}`;
|
|
59
58
|
await actions.loadCustomLoginRoutes();
|
|
60
59
|
const customLoginSearchParam = (_store$auth$customLog = store.auth.customLoginState) == null ? void 0 : _store$auth$customLog.customLoginSearchParams;
|
|
61
60
|
if (customLoginSearchParam) {
|
|
@@ -94,8 +93,9 @@ var _default = (store, api, sharedActions) => {
|
|
|
94
93
|
});
|
|
95
94
|
};
|
|
96
95
|
const refreshOrRequestHostedLoginAuthorize = async additionalParams => {
|
|
96
|
+
var _localStorage;
|
|
97
97
|
// when the user pause the step up flow we may still have the key in the local storage in hosted - Remove it
|
|
98
|
-
|
|
98
|
+
(_localStorage = localStorage) == null ? void 0 : _localStorage.removeItem(_consts.SHOULD_STEP_UP_KEY);
|
|
99
99
|
const disableSilentRefresh = store.auth.disableSilentRefresh;
|
|
100
100
|
if ((additionalParams == null ? void 0 : additionalParams['prompt']) === 'login') {
|
|
101
101
|
return await requestHostedLoginAuthorize(additionalParams);
|
|
@@ -110,7 +110,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
110
110
|
}
|
|
111
111
|
};
|
|
112
112
|
const refreshOrRequestHostedLoginAuthorizeV2 = async payload => {
|
|
113
|
-
var _additionalParams;
|
|
113
|
+
var _localStorage2, _additionalParams;
|
|
114
114
|
const {
|
|
115
115
|
shouldRedirectToLogin,
|
|
116
116
|
firstTime,
|
|
@@ -120,7 +120,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
120
120
|
additionalParams
|
|
121
121
|
} = payload != null ? payload : {};
|
|
122
122
|
// when the user pause the step up flow we may still have the key in the local storage in hosted - Remove it
|
|
123
|
-
|
|
123
|
+
(_localStorage2 = localStorage) == null ? void 0 : _localStorage2.removeItem(_consts.SHOULD_STEP_UP_KEY);
|
|
124
124
|
if (firstTime) {
|
|
125
125
|
const urlStrategy = store.root.urlStrategy;
|
|
126
126
|
const activeUri = (0, _helpers3.getUri)(urlStrategy);
|
|
@@ -157,11 +157,11 @@ var _default = (store, api, sharedActions) => {
|
|
|
157
157
|
const handleHostedLoginCallback = async payload => {
|
|
158
158
|
var _store$auth$customLog2;
|
|
159
159
|
// Hard coded for now
|
|
160
|
-
const code_verifier =
|
|
160
|
+
const code_verifier = localStorage.getItem(_constants.HOSTED_LOGIN_VERIFIER_KEY) || 'INVALID-CODE-VERIFIER';
|
|
161
161
|
const routes = store.auth.routes;
|
|
162
162
|
const urlStrategy = store.root.urlStrategy;
|
|
163
163
|
const basename = (0, _helpers2.getBaseNameWithoutSlashSuffix)(store);
|
|
164
|
-
let redirectUrl = `${
|
|
164
|
+
let redirectUrl = `${window.location.origin}${urlStrategy === 'path' ? '' : '#'}${basename != null ? basename : ''}${routes.hostedLoginRedirectUrl}`;
|
|
165
165
|
await actions.loadCustomLoginRoutes();
|
|
166
166
|
const customLoginSearchParam = (_store$auth$customLog2 = store.auth.customLoginState) == null ? void 0 : _store$auth$customLog2.customLoginSearchParams;
|
|
167
167
|
if (customLoginSearchParam) {
|
|
@@ -189,8 +189,8 @@ var _default = (store, api, sharedActions) => {
|
|
|
189
189
|
console.error('Failed to exchangeOAuthTokens', e);
|
|
190
190
|
} finally {
|
|
191
191
|
const user = store.auth.user;
|
|
192
|
-
const isStepUpFlow =
|
|
193
|
-
|
|
192
|
+
const isStepUpFlow = window.localStorage.getItem(_consts.SHOULD_STEP_UP_KEY);
|
|
193
|
+
window.localStorage.removeItem(_consts.SHOULD_STEP_UP_KEY);
|
|
194
194
|
|
|
195
195
|
// when the user pause the step up flow we may still have the key in the local storage in hosted. Ignore it.
|
|
196
196
|
if (isStepUpFlow && (0, _helpers3.isSteppedUp)(user)) {
|
|
@@ -77,14 +77,14 @@ var _default = (store, api, sharedActions) => {
|
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
|
-
const __shouldNevigateToRegisterQuickLogin =
|
|
80
|
+
const __shouldNevigateToRegisterQuickLogin = user => {
|
|
81
81
|
var _ref;
|
|
82
82
|
const {
|
|
83
83
|
routes,
|
|
84
84
|
loginState
|
|
85
85
|
} = store.auth;
|
|
86
|
-
const quickLoginToRegister = (_ref =
|
|
87
|
-
return quickLoginToRegister &&
|
|
86
|
+
const quickLoginToRegister = (_ref = localStorage.getItem('register-quick-login')) != null ? _ref : loginState.quickLoginToRegister;
|
|
87
|
+
return quickLoginToRegister && localStorage.getItem(`${user.id}-${quickLoginToRegister}`) !== 'true' && !window.location.pathname.endsWith(routes.logoutUrl);
|
|
88
88
|
};
|
|
89
89
|
|
|
90
90
|
/** @private */
|
|
@@ -109,10 +109,10 @@ var _default = (store, api, sharedActions) => {
|
|
|
109
109
|
} else {
|
|
110
110
|
var _ref2;
|
|
111
111
|
if (user.id) {
|
|
112
|
-
|
|
112
|
+
localStorage.setItem('userId', user.id);
|
|
113
113
|
}
|
|
114
|
-
const quickLoginToRegister = (_ref2 =
|
|
115
|
-
const shouldNavigateToRegisterQuickLogin =
|
|
114
|
+
const quickLoginToRegister = (_ref2 = localStorage.getItem('register-quick-login')) != null ? _ref2 : loginState.quickLoginToRegister;
|
|
115
|
+
const shouldNavigateToRegisterQuickLogin = __shouldNevigateToRegisterQuickLogin(user);
|
|
116
116
|
const updatedUser = await __handleUnnecessaryEntitlementsUpdate(user);
|
|
117
117
|
actions.afterAuthenticationStateUpdate({
|
|
118
118
|
user: updatedUser,
|
|
@@ -171,7 +171,8 @@ var _default = (store, api, sharedActions) => {
|
|
|
171
171
|
|
|
172
172
|
/** @private */
|
|
173
173
|
const __handleRedirectRefreshToken = async shouldNavigateToRegisterQuickLogin => {
|
|
174
|
-
|
|
174
|
+
var _window;
|
|
175
|
+
const url = new URL((_window = window) == null ? void 0 : _window.location.href);
|
|
175
176
|
const {
|
|
176
177
|
routes,
|
|
177
178
|
loginState,
|
|
@@ -184,8 +185,8 @@ var _default = (store, api, sharedActions) => {
|
|
|
184
185
|
}
|
|
185
186
|
if (shouldNavigateToRegisterQuickLogin) {
|
|
186
187
|
onRedirectTo(routes.loginUrl);
|
|
187
|
-
} else if (redirectRoutes.some(url => url &&
|
|
188
|
-
if (loginState.isNewUser && routes.signUpSuccessUrl && routes.socialLoginCallbackUrl ===
|
|
188
|
+
} else if (redirectRoutes.some(url => url && window.location.pathname.endsWith(url))) {
|
|
189
|
+
if (loginState.isNewUser && routes.signUpSuccessUrl && routes.socialLoginCallbackUrl === window.location.pathname) {
|
|
189
190
|
onRedirectTo(routes.signUpSuccessUrl, {
|
|
190
191
|
refresh: routes.signUpSuccessUrl.startsWith('http')
|
|
191
192
|
});
|
|
@@ -354,7 +355,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
354
355
|
const {
|
|
355
356
|
oidcRedirectUrl
|
|
356
357
|
} = store.auth.routes;
|
|
357
|
-
ssoRedirectUrl += `&redirect_uri=${
|
|
358
|
+
ssoRedirectUrl += `&redirect_uri=${window.location.origin}${oidcRedirectUrl}`;
|
|
358
359
|
}
|
|
359
360
|
if (_toolkit.FronteggNativeModule.isLoginWithSSOAvailable()) {
|
|
360
361
|
_toolkit.FronteggNativeModule.loginWithSSO(email);
|
|
@@ -452,7 +453,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
452
453
|
const loginState = store.auth.loginState;
|
|
453
454
|
const isAuthenticated = !!user.accessToken;
|
|
454
455
|
if (user.id) {
|
|
455
|
-
|
|
456
|
+
localStorage.setItem('userId', user.id);
|
|
456
457
|
}
|
|
457
458
|
actions.afterAuthenticationStateUpdate({
|
|
458
459
|
user,
|
|
@@ -500,7 +501,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
500
501
|
}
|
|
501
502
|
|
|
502
503
|
// TODO: extract item name to constants
|
|
503
|
-
|
|
504
|
+
localStorage.removeItem('register-quick-login');
|
|
504
505
|
callback == null ? void 0 : callback(true);
|
|
505
506
|
} catch (e) {
|
|
506
507
|
contextHolder.setAccessToken(null);
|
|
@@ -528,7 +529,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
528
529
|
/* empty */
|
|
529
530
|
}
|
|
530
531
|
if (contextHolder.isSessionPerTenantEnabled()) {
|
|
531
|
-
|
|
532
|
+
(0, _restApi.removeTabTenantFromSessionStorage)();
|
|
532
533
|
}
|
|
533
534
|
actions.resetAuthState();
|
|
534
535
|
await actions.requestAuthorize(true);
|
|
@@ -542,7 +543,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
542
543
|
/* empty */
|
|
543
544
|
}
|
|
544
545
|
if (contextHolder.isSessionPerTenantEnabled()) {
|
|
545
|
-
|
|
546
|
+
(0, _restApi.removeTabTenantFromSessionStorage)();
|
|
546
547
|
}
|
|
547
548
|
setTimeout(() => {
|
|
548
549
|
var _payload$callback;
|
|
@@ -726,7 +727,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
726
727
|
(0, _helpers.reportGTMEvent)(_helpers.GTMEventAction.USER_VERIFIED, userVerifiedPayload);
|
|
727
728
|
}
|
|
728
729
|
if (user.id) {
|
|
729
|
-
|
|
730
|
+
localStorage.setItem('userId', user.id);
|
|
730
731
|
}
|
|
731
732
|
actions.afterAuthenticationStateUpdate({
|
|
732
733
|
user,
|
|
@@ -760,7 +761,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
760
761
|
preserveQueryParams: true
|
|
761
762
|
});
|
|
762
763
|
}
|
|
763
|
-
|
|
764
|
+
localStorage.removeItem('register-quick-login');
|
|
764
765
|
callback == null ? void 0 : callback(true);
|
|
765
766
|
}
|
|
766
767
|
} catch (e) {
|
|
@@ -874,7 +875,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
874
875
|
});
|
|
875
876
|
} else {
|
|
876
877
|
if (user.id) {
|
|
877
|
-
|
|
878
|
+
localStorage.setItem('userId', user.id);
|
|
878
879
|
}
|
|
879
880
|
actions.afterAuthenticationStateUpdate((0, _extends2.default)({
|
|
880
881
|
user
|
|
@@ -1132,7 +1133,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
1132
1133
|
loading: false
|
|
1133
1134
|
});
|
|
1134
1135
|
if (user.id) {
|
|
1135
|
-
|
|
1136
|
+
localStorage.setItem('userId', user.id);
|
|
1136
1137
|
}
|
|
1137
1138
|
};
|
|
1138
1139
|
const resetBreachedPassword = async payload => {
|
|
@@ -1232,10 +1233,10 @@ var _default = (store, api, sharedActions) => {
|
|
|
1232
1233
|
} else {
|
|
1233
1234
|
var _ref4;
|
|
1234
1235
|
if (user.id) {
|
|
1235
|
-
|
|
1236
|
+
localStorage.setItem('userId', user.id);
|
|
1236
1237
|
}
|
|
1237
|
-
const quickLoginToRegister = (_ref4 =
|
|
1238
|
-
const shouldNavigateToRegisterQuickLogin =
|
|
1238
|
+
const quickLoginToRegister = (_ref4 = localStorage.getItem('register-quick-login')) != null ? _ref4 : loginState.quickLoginToRegister;
|
|
1239
|
+
const shouldNavigateToRegisterQuickLogin = __shouldNevigateToRegisterQuickLogin(user);
|
|
1239
1240
|
actions.afterAuthenticationStateUpdate({
|
|
1240
1241
|
user: updatedUser,
|
|
1241
1242
|
tenants,
|
|
@@ -9,7 +9,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
9
9
|
var _helpers = require("../helpers");
|
|
10
10
|
var _interfaces = require("../interfaces");
|
|
11
11
|
var _interfaces2 = require("../../MfaState/interfaces");
|
|
12
|
-
var _toolkit = require("../../../toolkit");
|
|
13
12
|
var _default = (store, api, sharedActions) => {
|
|
14
13
|
const actions = sharedActions;
|
|
15
14
|
const getMfaRequiredState = async user => {
|
|
@@ -42,7 +41,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
42
41
|
step = _interfaces.LoginStep.forceTwoFactor;
|
|
43
42
|
}
|
|
44
43
|
let quickLoginState = {};
|
|
45
|
-
const quickLoginToRegister =
|
|
44
|
+
const quickLoginToRegister = localStorage.getItem('register-quick-login');
|
|
46
45
|
if (quickLoginToRegister) {
|
|
47
46
|
quickLoginState = {
|
|
48
47
|
quickLoginToRegister,
|
|
@@ -9,7 +9,6 @@ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runt
|
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _interfaces = require("../interfaces");
|
|
11
11
|
var _helpers = require("../../../helpers");
|
|
12
|
-
var _toolkit = require("../../../toolkit");
|
|
13
12
|
const _excluded = ["callback"];
|
|
14
13
|
var _default = (store, api, sharedActions) => {
|
|
15
14
|
const actions = sharedActions;
|
|
@@ -108,7 +107,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
108
107
|
activeTenant
|
|
109
108
|
}, additionalUpdate);
|
|
110
109
|
if (user.id) {
|
|
111
|
-
|
|
110
|
+
localStorage.setItem('userId', user.id);
|
|
112
111
|
}
|
|
113
112
|
setLoadingAction({
|
|
114
113
|
loading: false,
|
|
@@ -8,7 +8,6 @@ exports.isEmailPayload = isEmailPayload;
|
|
|
8
8
|
exports.isOauthCallbackRoute = void 0;
|
|
9
9
|
var _restApi = require("@frontegg/rest-api");
|
|
10
10
|
var _interfaces = require("../MfaState/interfaces");
|
|
11
|
-
var _toolkit = require("../../toolkit");
|
|
12
11
|
const isAbsoluteUrl = path => {
|
|
13
12
|
try {
|
|
14
13
|
new URL(path);
|
|
@@ -19,7 +18,7 @@ const isAbsoluteUrl = path => {
|
|
|
19
18
|
};
|
|
20
19
|
exports.isAbsoluteUrl = isAbsoluteUrl;
|
|
21
20
|
const isValidRedirectUrl = (redirectUrl, allowedRedirectOrigins) => {
|
|
22
|
-
const currentUrl = new URL(
|
|
21
|
+
const currentUrl = new URL(window.location.href);
|
|
23
22
|
const redirectURL = new URL(redirectUrl);
|
|
24
23
|
const isSameSite = redirectURL.origin === currentUrl.origin;
|
|
25
24
|
const isOriginInWhiteList = allowedRedirectOrigins.includes(redirectURL.origin);
|
|
@@ -31,7 +30,7 @@ const getRedirectUrl = ({
|
|
|
31
30
|
allowedRedirectOrigins,
|
|
32
31
|
includeQueryParam
|
|
33
32
|
}) => {
|
|
34
|
-
const currentUrl = new URL(
|
|
33
|
+
const currentUrl = new URL(window.location.href);
|
|
35
34
|
let redirectUrl = authenticatedUrl;
|
|
36
35
|
const redirectUrlQueryParam = currentUrl.searchParams.get('redirectUrl');
|
|
37
36
|
if (redirectUrlQueryParam) {
|
|
@@ -45,7 +44,7 @@ const getRedirectUrl = ({
|
|
|
45
44
|
}
|
|
46
45
|
}
|
|
47
46
|
} else if (includeQueryParam) {
|
|
48
|
-
redirectUrl +=
|
|
47
|
+
redirectUrl += window.location.search;
|
|
49
48
|
}
|
|
50
49
|
return redirectUrl;
|
|
51
50
|
};
|
|
@@ -79,7 +78,7 @@ const getPathAndSearchParamsFromUrl = url => {
|
|
|
79
78
|
*/
|
|
80
79
|
exports.getPathAndSearchParamsFromUrl = getPathAndSearchParamsFromUrl;
|
|
81
80
|
const getSearchParam = key => {
|
|
82
|
-
const params = new URLSearchParams(
|
|
81
|
+
const params = new URLSearchParams(window.location.search);
|
|
83
82
|
const param = params.get(key);
|
|
84
83
|
return param != null ? param : undefined;
|
|
85
84
|
};
|
|
@@ -7,7 +7,6 @@ exports.default = void 0;
|
|
|
7
7
|
var _helpers = require("../../helpers");
|
|
8
8
|
var _state = require("./state");
|
|
9
9
|
var _restApi = require("@frontegg/rest-api");
|
|
10
|
-
var _toolkit = require("../../toolkit");
|
|
11
10
|
var _default = (store, api, sharedActions) => {
|
|
12
11
|
const actions = sharedActions;
|
|
13
12
|
const setPasskeysState = payload => {
|
|
@@ -83,8 +82,8 @@ var _default = (store, api, sharedActions) => {
|
|
|
83
82
|
policy
|
|
84
83
|
} = publicAuthStrategyPolicy;
|
|
85
84
|
const isPasskeysEnabledByVendor = await getPasskeysVendorPolicy(policy);
|
|
86
|
-
const isLoggedInWithPasskeys =
|
|
87
|
-
const isMarkedDontShowAgainPrompt =
|
|
85
|
+
const isLoggedInWithPasskeys = localStorage.getItem('preferred-login-method') === 'Passkeys';
|
|
86
|
+
const isMarkedDontShowAgainPrompt = localStorage.getItem('dont-show-again-prompt-passkeys') === 'true';
|
|
88
87
|
const [showPasskeys] = await actions.getFeatureFlags(['show-passkeys-new']);
|
|
89
88
|
if (!showPasskeys || !isPasskeysEnabledByVendor || isLoggedInWithPasskeys || isMarkedDontShowAgainPrompt) {
|
|
90
89
|
return false;
|
|
@@ -11,7 +11,6 @@ var _helpers = require("../../helpers");
|
|
|
11
11
|
var _state = require("./state");
|
|
12
12
|
var _interfaces = require("../interfaces");
|
|
13
13
|
var _gtm = require("../../helpers/gtm");
|
|
14
|
-
var _toolkit = require("../../toolkit");
|
|
15
14
|
const _excluded = ["authorizationUrl"],
|
|
16
15
|
_excluded2 = ["events", "url"];
|
|
17
16
|
var _default = (store, api, sharedActions) => {
|
|
@@ -141,14 +140,14 @@ var _default = (store, api, sharedActions) => {
|
|
|
141
140
|
(0, _gtm.reportGTMEvent)(_gtm.GTMEventAction.USER_VERIFIED, userVerifiedPayload);
|
|
142
141
|
}
|
|
143
142
|
if (userId) {
|
|
144
|
-
|
|
143
|
+
localStorage.setItem('userId', userId);
|
|
145
144
|
}
|
|
146
145
|
actions.setLoginState({
|
|
147
146
|
email,
|
|
148
147
|
isNewUser
|
|
149
148
|
});
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
actions.refreshTokenForSocialLogins();
|
|
150
|
+
localStorage.removeItem('register-quick-login');
|
|
152
151
|
setSocialLoginsState({
|
|
153
152
|
loading: false
|
|
154
153
|
});
|
|
@@ -8,7 +8,6 @@ var _restApi = require("@frontegg/rest-api");
|
|
|
8
8
|
var _helpers = require("../../LoginState/helpers");
|
|
9
9
|
var _interfaces = require("../../MfaState/interfaces");
|
|
10
10
|
var _consts = require("../consts");
|
|
11
|
-
var _toolkit = require("../../../toolkit");
|
|
12
11
|
/**
|
|
13
12
|
* Error returned from the BE when the user is not enrolled to MFA and logged in with email magic code/link
|
|
14
13
|
*/
|
|
@@ -66,7 +65,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
66
65
|
});
|
|
67
66
|
return;
|
|
68
67
|
}
|
|
69
|
-
|
|
68
|
+
window.localStorage.setItem(_consts.SHOULD_STEP_UP_KEY, 'true');
|
|
70
69
|
const routes = store.auth.routes;
|
|
71
70
|
_restApi.ContextHolder.for(store.root.appName).onRedirectTo(routes.logoutUrl, {
|
|
72
71
|
preserveQueryParams: true
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _consts = require("../consts");
|
|
8
8
|
var _helpers = require("../helpers");
|
|
9
|
-
var _toolkit = require("../../../toolkit");
|
|
10
9
|
var _default = (store, api, sharedActions) => {
|
|
11
10
|
const actions = sharedActions;
|
|
12
11
|
|
|
@@ -29,8 +28,8 @@ var _default = (store, api, sharedActions) => {
|
|
|
29
28
|
if (alias) {
|
|
30
29
|
params['organization'] = alias;
|
|
31
30
|
}
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
(0, _helpers.setAfterAuthRedirectUrlForStepUp)();
|
|
32
|
+
window.localStorage.setItem(_consts.SHOULD_STEP_UP_KEY, 'true');
|
|
34
33
|
await actions.__requestHostedLoginAuthorize(params);
|
|
35
34
|
};
|
|
36
35
|
return {
|
|
@@ -7,7 +7,6 @@ exports.redirectByStepUpUrl = exports.isSteppedUp = void 0;
|
|
|
7
7
|
exports.setAfterAuthRedirectUrlForStepUp = setAfterAuthRedirectUrlForStepUp;
|
|
8
8
|
var _constants = require("../../constants");
|
|
9
9
|
var _consts = require("./consts");
|
|
10
|
-
var _toolkit = require("../../toolkit");
|
|
11
10
|
/**
|
|
12
11
|
* @param options.amr
|
|
13
12
|
* @param options.acr
|
|
@@ -39,9 +38,9 @@ const isSteppedUp = (user, {
|
|
|
39
38
|
* Set the url and query params in the local storage FRONTEGG_AFTER_AUTH_REDIRECT_URL value
|
|
40
39
|
*/
|
|
41
40
|
exports.isSteppedUp = isSteppedUp;
|
|
42
|
-
|
|
43
|
-
const encodedRedirectUrl =
|
|
44
|
-
|
|
41
|
+
function setAfterAuthRedirectUrlForStepUp() {
|
|
42
|
+
const encodedRedirectUrl = window.location.pathname + window.location.search;
|
|
43
|
+
window.localStorage.setItem(_constants.FRONTEGG_AFTER_AUTH_REDIRECT_URL, encodedRedirectUrl);
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
/**
|
|
@@ -51,9 +50,9 @@ async function setAfterAuthRedirectUrlForStepUp() {
|
|
|
51
50
|
* @param onRedirectTo - redirect to function
|
|
52
51
|
* @param maxAge - max age of step up
|
|
53
52
|
*/
|
|
54
|
-
const redirectByStepUpUrl =
|
|
55
|
-
|
|
56
|
-
const searchParams = new URLSearchParams(
|
|
53
|
+
const redirectByStepUpUrl = (stepUpUrl, onRedirectTo, maxAge) => {
|
|
54
|
+
setAfterAuthRedirectUrlForStepUp();
|
|
55
|
+
const searchParams = new URLSearchParams(window.location.search);
|
|
57
56
|
if (maxAge) {
|
|
58
57
|
searchParams.set(_consts.STEP_UP_MAX_AGE_PARAM_NAME, maxAge.toString());
|
|
59
58
|
}
|
package/node/helpers/gtm.js
CHANGED
|
@@ -26,8 +26,6 @@ exports.GTMEventAction = GTMEventAction;
|
|
|
26
26
|
* @param payload
|
|
27
27
|
*/
|
|
28
28
|
function reportGTMEvent(action, payload) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
(_window$onFronteggEve = (_window = window).onFronteggEvent) == null ? void 0 : _window$onFronteggEve.call(_window, action, payload);
|
|
32
|
-
}
|
|
29
|
+
var _window$onFronteggEve, _window;
|
|
30
|
+
(_window$onFronteggEve = (_window = window).onFronteggEvent) == null ? void 0 : _window$onFronteggEve.call(_window, action, payload);
|
|
33
31
|
}
|
package/node/helpers/index.js
CHANGED
|
@@ -68,4 +68,15 @@ Object.keys(_gtm).forEach(function (key) {
|
|
|
68
68
|
return _gtm[key];
|
|
69
69
|
}
|
|
70
70
|
});
|
|
71
|
+
});
|
|
72
|
+
var _sha = require("./sha256");
|
|
73
|
+
Object.keys(_sha).forEach(function (key) {
|
|
74
|
+
if (key === "default" || key === "__esModule") return;
|
|
75
|
+
if (key in exports && exports[key] === _sha[key]) return;
|
|
76
|
+
Object.defineProperty(exports, key, {
|
|
77
|
+
enumerable: true,
|
|
78
|
+
get: function () {
|
|
79
|
+
return _sha[key];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
71
82
|
});
|
package/node/helpers/random.js
CHANGED
|
@@ -8,7 +8,6 @@ exports.generateCodeChallenge = generateCodeChallenge;
|
|
|
8
8
|
exports.generateCodeChallengeNative = generateCodeChallengeNative;
|
|
9
9
|
exports.generateCodeChallengePureJs = generateCodeChallengePureJs;
|
|
10
10
|
var _sha = require("./sha256");
|
|
11
|
-
var _toolkit = require("../toolkit");
|
|
12
11
|
async function generateCodeChallengePureJs(codeVerifier) {
|
|
13
12
|
// noinspection TypeScriptValidateJSTypes pure sha256 recevie single params alg name
|
|
14
13
|
const digest = _sha.sha256.digest(new TextEncoder().encode(codeVerifier));
|
|
@@ -24,7 +23,7 @@ async function generateCodeChallenge(codeVerifier) {
|
|
|
24
23
|
if ((_window$crypto = window.crypto) != null && (_window$crypto$subtle = _window$crypto.subtle) != null && _window$crypto$subtle.digest) {
|
|
25
24
|
return generateCodeChallengeNative(codeVerifier);
|
|
26
25
|
} else {
|
|
27
|
-
console.warn('Generating CodeChallenge in non-secure domain:',
|
|
26
|
+
console.warn('Generating CodeChallenge in non-secure domain:', window.location.origin);
|
|
28
27
|
return generateCodeChallengePureJs(codeVerifier);
|
|
29
28
|
}
|
|
30
29
|
}
|
package/node/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license Frontegg v7.
|
|
1
|
+
/** @license Frontegg v7.12.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.
|
|
@@ -172,4 +172,15 @@ Object.keys(_interfaces6).forEach(function (key) {
|
|
|
172
172
|
return _interfaces6[key];
|
|
173
173
|
}
|
|
174
174
|
});
|
|
175
|
+
});
|
|
176
|
+
var _helpers3 = require("./helpers/");
|
|
177
|
+
Object.keys(_helpers3).forEach(function (key) {
|
|
178
|
+
if (key === "default" || key === "__esModule") return;
|
|
179
|
+
if (key in exports && exports[key] === _helpers3[key]) return;
|
|
180
|
+
Object.defineProperty(exports, key, {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
get: function () {
|
|
183
|
+
return _helpers3[key];
|
|
184
|
+
}
|
|
185
|
+
});
|
|
175
186
|
});
|
|
@@ -7,9 +7,6 @@ exports.default = void 0;
|
|
|
7
7
|
class FronteggNativeModule {
|
|
8
8
|
constructor() {
|
|
9
9
|
this.loginWithSSO = email => {
|
|
10
|
-
if (typeof window == 'undefined') {
|
|
11
|
-
throw new Error('FronteggNativeBridge is not available');
|
|
12
|
-
}
|
|
13
10
|
if (this.isWebkitAvailable()) {
|
|
14
11
|
var _window$webkit, _window$webkit$messag, _window$webkit$messag2;
|
|
15
12
|
(_window$webkit = window.webkit) == null ? void 0 : (_window$webkit$messag = _window$webkit.messageHandlers) == null ? void 0 : (_window$webkit$messag2 = _window$webkit$messag.FronteggNativeBridge) == null ? void 0 : _window$webkit$messag2.postMessage(JSON.stringify({
|
|
@@ -24,9 +21,6 @@ class FronteggNativeModule {
|
|
|
24
21
|
}
|
|
25
22
|
};
|
|
26
23
|
this.loginWithSocialLogin = url => {
|
|
27
|
-
if (typeof window == 'undefined') {
|
|
28
|
-
throw new Error('FronteggNativeBridge is not available');
|
|
29
|
-
}
|
|
30
24
|
if (this.isWebkitAvailable()) {
|
|
31
25
|
var _window$webkit2, _window$webkit2$messa, _window$webkit2$messa2;
|
|
32
26
|
(_window$webkit2 = window.webkit) == null ? void 0 : (_window$webkit2$messa = _window$webkit2.messageHandlers) == null ? void 0 : (_window$webkit2$messa2 = _window$webkit2$messa.FronteggNativeBridge) == null ? void 0 : _window$webkit2$messa2.postMessage(JSON.stringify({
|
|
@@ -42,15 +36,15 @@ class FronteggNativeModule {
|
|
|
42
36
|
};
|
|
43
37
|
this.promptSocialLoginConsent = () => {
|
|
44
38
|
var _window$FronteggNativ3, _window$FronteggNativ4;
|
|
45
|
-
return
|
|
39
|
+
return (_window$FronteggNativ3 = (_window$FronteggNativ4 = window.FronteggNativeBridgeFunctions) == null ? void 0 : _window$FronteggNativ4['shouldPromptSocialLoginConsent']) != null ? _window$FronteggNativ3 : false;
|
|
46
40
|
};
|
|
47
41
|
}
|
|
48
42
|
isWebkitAvailable() {
|
|
49
43
|
var _window$webkit3, _window$webkit3$messa;
|
|
50
|
-
return
|
|
44
|
+
return ((_window$webkit3 = window.webkit) == null ? void 0 : (_window$webkit3$messa = _window$webkit3.messageHandlers) == null ? void 0 : _window$webkit3$messa.FronteggNativeBridge) != null;
|
|
51
45
|
}
|
|
52
46
|
isJsInterfaceAvailable() {
|
|
53
|
-
return
|
|
47
|
+
return window.FronteggNativeBridge != null;
|
|
54
48
|
}
|
|
55
49
|
isSocialLoginAvailable() {
|
|
56
50
|
return this.isAvailable('loginWithSocialLogin');
|
|
@@ -59,7 +53,7 @@ class FronteggNativeModule {
|
|
|
59
53
|
return this.isAvailable('loginWithSSO');
|
|
60
54
|
}
|
|
61
55
|
isAvailable(method) {
|
|
62
|
-
if (
|
|
56
|
+
if (this.isWebkitAvailable() || this.isJsInterfaceAvailable()) {
|
|
63
57
|
var _window$FronteggNativ5, _window$FronteggNativ6;
|
|
64
58
|
return (_window$FronteggNativ5 = (_window$FronteggNativ6 = window.FronteggNativeBridgeFunctions) == null ? void 0 : _window$FronteggNativ6[method]) != null ? _window$FronteggNativ5 : false;
|
|
65
59
|
}
|