@frontegg/redux-store 7.74.0-alpha.0 → 7.74.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/LoginState/actions/index.js +13 -32
- package/auth/LoginState/helpers.d.ts +1 -2
- package/auth/LoginState/helpers.js +0 -3
- package/index.js +1 -1
- package/node/auth/LoginState/actions/index.js +12 -31
- package/node/auth/LoginState/helpers.js +1 -6
- package/node/index.js +1 -1
- package/node/toolkit/FronteggNativeModule.js +3 -3
- package/package.json +2 -2
- package/toolkit/FronteggNativeModule.d.ts +1 -1
- package/toolkit/FronteggNativeModule.js +3 -3
|
@@ -25,7 +25,7 @@ import mfaWithWebAuthnActions from './mfaWithWebAuthn.actions';
|
|
|
25
25
|
import { LoginFlow, LoginStep } from '../interfaces';
|
|
26
26
|
import { base64urlDecode, deepResetState, delay, errorHandler, errorTraceId, GTMEventAction, publicKeyCredentialToJSON, reportGTMEvent, retryIfNeeded, withRetryConfig } from '../../../helpers';
|
|
27
27
|
import { initialState } from '../state';
|
|
28
|
-
import { getSearchParam, isEmailPayload,
|
|
28
|
+
import { getSearchParam, isEmailPayload, shouldShowPasswordRotationPromptFunc, TENANT_ID_PARAM_KEY } from '../helpers';
|
|
29
29
|
import { AuthStrategyEnum, ContextHolder, removeTabTenantFromSessionStorage, WebAuthnDeviceType } from '@frontegg/rest-api';
|
|
30
30
|
import hostedLoginAuthorizeActions from './hostedLoginAuthorize.actions';
|
|
31
31
|
import { FronteggNativeModule, isEntitlementsDeeplyEqual } from '../../../toolkit';
|
|
@@ -347,7 +347,6 @@ export default ((store, api, sharedActions) => {
|
|
|
347
347
|
const preLogin = async payload => {
|
|
348
348
|
const {
|
|
349
349
|
email,
|
|
350
|
-
username,
|
|
351
350
|
recaptchaToken,
|
|
352
351
|
invitationToken,
|
|
353
352
|
callback
|
|
@@ -358,13 +357,10 @@ export default ((store, api, sharedActions) => {
|
|
|
358
357
|
try {
|
|
359
358
|
const onRedirectTo = store.auth.onRedirectTo;
|
|
360
359
|
const tenantId = getSearchParam(TENANT_ID_PARAM_KEY);
|
|
361
|
-
const preLoginResult = await api.auth.preLoginV2(
|
|
362
|
-
email
|
|
363
|
-
} : {}, username ? {
|
|
364
|
-
username
|
|
365
|
-
} : {}, {
|
|
360
|
+
const preLoginResult = await api.auth.preLoginV2({
|
|
361
|
+
email,
|
|
366
362
|
tenantId
|
|
367
|
-
})
|
|
363
|
+
});
|
|
368
364
|
const {
|
|
369
365
|
address,
|
|
370
366
|
idpType
|
|
@@ -378,8 +374,7 @@ export default ((store, api, sharedActions) => {
|
|
|
378
374
|
ssoRedirectUrl += `&redirect_uri=${window.location.origin}${oidcRedirectUrl}`;
|
|
379
375
|
}
|
|
380
376
|
if (FronteggNativeModule.isLoginWithSSOAvailable()) {
|
|
381
|
-
|
|
382
|
-
FronteggNativeModule.loginWithSSO((_ref4 = email != null ? email : username) != null ? _ref4 : '');
|
|
377
|
+
FronteggNativeModule.loginWithSSO(email);
|
|
383
378
|
setLoginState({
|
|
384
379
|
loading: false
|
|
385
380
|
});
|
|
@@ -397,18 +392,16 @@ export default ((store, api, sharedActions) => {
|
|
|
397
392
|
}, 2000);
|
|
398
393
|
}
|
|
399
394
|
} else {
|
|
400
|
-
var _ref5;
|
|
401
395
|
await ssoPreloginFailed({
|
|
402
|
-
email
|
|
396
|
+
email,
|
|
403
397
|
recaptchaToken,
|
|
404
398
|
callback,
|
|
405
399
|
invitationToken
|
|
406
400
|
});
|
|
407
401
|
}
|
|
408
402
|
} catch (e) {
|
|
409
|
-
var _ref6;
|
|
410
403
|
await ssoPreloginFailed({
|
|
411
|
-
email
|
|
404
|
+
email,
|
|
412
405
|
recaptchaToken,
|
|
413
406
|
callback,
|
|
414
407
|
invitationToken,
|
|
@@ -444,7 +437,6 @@ export default ((store, api, sharedActions) => {
|
|
|
444
437
|
const login = async payload => {
|
|
445
438
|
const {
|
|
446
439
|
email,
|
|
447
|
-
username,
|
|
448
440
|
password,
|
|
449
441
|
recaptchaToken,
|
|
450
442
|
invitationToken,
|
|
@@ -458,15 +450,12 @@ export default ((store, api, sharedActions) => {
|
|
|
458
450
|
user,
|
|
459
451
|
tenants = [],
|
|
460
452
|
activeTenant
|
|
461
|
-
} = await api.auth.loginv2(
|
|
462
|
-
email
|
|
463
|
-
} : {}, username ? {
|
|
464
|
-
username
|
|
465
|
-
} : {}, {
|
|
453
|
+
} = await api.auth.loginv2({
|
|
454
|
+
email,
|
|
466
455
|
password,
|
|
467
456
|
recaptchaToken,
|
|
468
457
|
invitationToken
|
|
469
|
-
})
|
|
458
|
+
});
|
|
470
459
|
const {
|
|
471
460
|
onRedirectTo,
|
|
472
461
|
routes
|
|
@@ -706,7 +695,6 @@ export default ((store, api, sharedActions) => {
|
|
|
706
695
|
} = _payload,
|
|
707
696
|
payload = _objectWithoutPropertiesLoose(_payload, _excluded5);
|
|
708
697
|
try {
|
|
709
|
-
var _username;
|
|
710
698
|
setLoginState({
|
|
711
699
|
loading: true
|
|
712
700
|
});
|
|
@@ -714,16 +702,9 @@ export default ((store, api, sharedActions) => {
|
|
|
714
702
|
if (isEmailPayload(payload)) {
|
|
715
703
|
email = payload.email;
|
|
716
704
|
}
|
|
717
|
-
let username;
|
|
718
|
-
if (isUsernamePayload(payload)) {
|
|
719
|
-
username = payload.username;
|
|
720
|
-
}
|
|
721
705
|
// TODO: [Typescript 4.8] fix @frontegg/rest-api return value
|
|
722
706
|
// @ts-ignore
|
|
723
|
-
const preloginRes = await api.auth.passwordlessPreLogin(
|
|
724
|
-
email,
|
|
725
|
-
username: (_username = username) != null ? _username : ''
|
|
726
|
-
}));
|
|
707
|
+
const preloginRes = await api.auth.passwordlessPreLogin(payload);
|
|
727
708
|
// @ts-ignore
|
|
728
709
|
const step = authStrategyLoginStepMap[payload.type];
|
|
729
710
|
setLoginState({
|
|
@@ -1315,11 +1296,11 @@ export default ((store, api, sharedActions) => {
|
|
|
1315
1296
|
preserveQueryParams: true
|
|
1316
1297
|
});
|
|
1317
1298
|
} else {
|
|
1318
|
-
var
|
|
1299
|
+
var _ref4;
|
|
1319
1300
|
if (user.id) {
|
|
1320
1301
|
localStorage.setItem('userId', user.id);
|
|
1321
1302
|
}
|
|
1322
|
-
const quickLoginToRegister = (
|
|
1303
|
+
const quickLoginToRegister = (_ref4 = localStorage.getItem('register-quick-login')) != null ? _ref4 : loginState.quickLoginToRegister;
|
|
1323
1304
|
const shouldNavigateToRegisterQuickLogin = __shouldNavigateToRegisterQuickLogin(user);
|
|
1324
1305
|
actions.afterAuthenticationStateUpdate({
|
|
1325
1306
|
user: updatedUser,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IEmailPasswordlessPreLogin, ILoginResponse, IPasswordlessPreLogin,
|
|
1
|
+
import { IEmailPasswordlessPreLogin, ILoginResponse, IPasswordlessPreLogin, MFAStrategyEnum, UserMFADevicesResponse } from '@frontegg/rest-api';
|
|
2
2
|
import { FronteggState } from '../../interfaces';
|
|
3
3
|
import { User } from '../interfaces';
|
|
4
4
|
import { MFAStep } from '../MfaState/interfaces';
|
|
@@ -29,6 +29,5 @@ export declare const getMfaStepForEnrolledUsers: (mfaDevices: UserMFADevicesResp
|
|
|
29
29
|
export declare const getMfaStepForNotEnrolledUsers: (mfaStrategies: MFAStrategyEnum[]) => MFAStep.verify | MFAStep.authenticatorApp | MFAStep.smsSetPhoneNumber | MFAStep.emailVerifyCode;
|
|
30
30
|
export declare const isOauthCallbackRoute: (activeUri: string) => boolean;
|
|
31
31
|
export declare function isEmailPayload(payload: IPasswordlessPreLogin): payload is IEmailPasswordlessPreLogin;
|
|
32
|
-
export declare function isUsernamePayload(payload: IPasswordlessPreLogin): payload is IUsernamePasswordlessPreLogin;
|
|
33
32
|
export declare const getBaseNameWithoutSlashSuffix: (state: FronteggState) => string | null;
|
|
34
33
|
export declare const shouldShowPasswordRotationPromptFunc: (user: ILoginResponse | User) => boolean;
|
|
@@ -126,9 +126,6 @@ export const isOauthCallbackRoute = activeUri => {
|
|
|
126
126
|
export function isEmailPayload(payload) {
|
|
127
127
|
return 'email' in payload;
|
|
128
128
|
}
|
|
129
|
-
export function isUsernamePayload(payload) {
|
|
130
|
-
return 'username' in payload;
|
|
131
|
-
}
|
|
132
129
|
export const getBaseNameWithoutSlashSuffix = state => {
|
|
133
130
|
const basename = ContextHolder.for(state.root.appName).getBasename();
|
|
134
131
|
if (basename != null && basename.endsWith('/')) {
|
package/index.js
CHANGED
|
@@ -354,7 +354,6 @@ var _default = (store, api, sharedActions) => {
|
|
|
354
354
|
const preLogin = async payload => {
|
|
355
355
|
const {
|
|
356
356
|
email,
|
|
357
|
-
username,
|
|
358
357
|
recaptchaToken,
|
|
359
358
|
invitationToken,
|
|
360
359
|
callback
|
|
@@ -365,13 +364,10 @@ var _default = (store, api, sharedActions) => {
|
|
|
365
364
|
try {
|
|
366
365
|
const onRedirectTo = store.auth.onRedirectTo;
|
|
367
366
|
const tenantId = (0, _helpers2.getSearchParam)(_helpers2.TENANT_ID_PARAM_KEY);
|
|
368
|
-
const preLoginResult = await api.auth.preLoginV2(
|
|
369
|
-
email
|
|
370
|
-
} : {}, username ? {
|
|
371
|
-
username
|
|
372
|
-
} : {}, {
|
|
367
|
+
const preLoginResult = await api.auth.preLoginV2({
|
|
368
|
+
email,
|
|
373
369
|
tenantId
|
|
374
|
-
})
|
|
370
|
+
});
|
|
375
371
|
const {
|
|
376
372
|
address,
|
|
377
373
|
idpType
|
|
@@ -385,8 +381,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
385
381
|
ssoRedirectUrl += `&redirect_uri=${window.location.origin}${oidcRedirectUrl}`;
|
|
386
382
|
}
|
|
387
383
|
if (_toolkit.FronteggNativeModule.isLoginWithSSOAvailable()) {
|
|
388
|
-
|
|
389
|
-
_toolkit.FronteggNativeModule.loginWithSSO((_ref4 = email != null ? email : username) != null ? _ref4 : '');
|
|
384
|
+
_toolkit.FronteggNativeModule.loginWithSSO(email);
|
|
390
385
|
setLoginState({
|
|
391
386
|
loading: false
|
|
392
387
|
});
|
|
@@ -404,18 +399,16 @@ var _default = (store, api, sharedActions) => {
|
|
|
404
399
|
}, 2000);
|
|
405
400
|
}
|
|
406
401
|
} else {
|
|
407
|
-
var _ref5;
|
|
408
402
|
await ssoPreloginFailed({
|
|
409
|
-
email
|
|
403
|
+
email,
|
|
410
404
|
recaptchaToken,
|
|
411
405
|
callback,
|
|
412
406
|
invitationToken
|
|
413
407
|
});
|
|
414
408
|
}
|
|
415
409
|
} catch (e) {
|
|
416
|
-
var _ref6;
|
|
417
410
|
await ssoPreloginFailed({
|
|
418
|
-
email
|
|
411
|
+
email,
|
|
419
412
|
recaptchaToken,
|
|
420
413
|
callback,
|
|
421
414
|
invitationToken,
|
|
@@ -451,7 +444,6 @@ var _default = (store, api, sharedActions) => {
|
|
|
451
444
|
const login = async payload => {
|
|
452
445
|
const {
|
|
453
446
|
email,
|
|
454
|
-
username,
|
|
455
447
|
password,
|
|
456
448
|
recaptchaToken,
|
|
457
449
|
invitationToken,
|
|
@@ -465,15 +457,12 @@ var _default = (store, api, sharedActions) => {
|
|
|
465
457
|
user,
|
|
466
458
|
tenants = [],
|
|
467
459
|
activeTenant
|
|
468
|
-
} = await api.auth.loginv2(
|
|
469
|
-
email
|
|
470
|
-
} : {}, username ? {
|
|
471
|
-
username
|
|
472
|
-
} : {}, {
|
|
460
|
+
} = await api.auth.loginv2({
|
|
461
|
+
email,
|
|
473
462
|
password,
|
|
474
463
|
recaptchaToken,
|
|
475
464
|
invitationToken
|
|
476
|
-
})
|
|
465
|
+
});
|
|
477
466
|
const {
|
|
478
467
|
onRedirectTo,
|
|
479
468
|
routes
|
|
@@ -713,7 +702,6 @@ var _default = (store, api, sharedActions) => {
|
|
|
713
702
|
} = _payload,
|
|
714
703
|
payload = (0, _objectWithoutPropertiesLoose2.default)(_payload, _excluded5);
|
|
715
704
|
try {
|
|
716
|
-
var _username;
|
|
717
705
|
setLoginState({
|
|
718
706
|
loading: true
|
|
719
707
|
});
|
|
@@ -721,16 +709,9 @@ var _default = (store, api, sharedActions) => {
|
|
|
721
709
|
if ((0, _helpers2.isEmailPayload)(payload)) {
|
|
722
710
|
email = payload.email;
|
|
723
711
|
}
|
|
724
|
-
let username;
|
|
725
|
-
if ((0, _helpers2.isUsernamePayload)(payload)) {
|
|
726
|
-
username = payload.username;
|
|
727
|
-
}
|
|
728
712
|
// TODO: [Typescript 4.8] fix @frontegg/rest-api return value
|
|
729
713
|
// @ts-ignore
|
|
730
|
-
const preloginRes = await api.auth.passwordlessPreLogin(
|
|
731
|
-
email,
|
|
732
|
-
username: (_username = username) != null ? _username : ''
|
|
733
|
-
}));
|
|
714
|
+
const preloginRes = await api.auth.passwordlessPreLogin(payload);
|
|
734
715
|
// @ts-ignore
|
|
735
716
|
const step = _consts.authStrategyLoginStepMap[payload.type];
|
|
736
717
|
setLoginState({
|
|
@@ -1322,11 +1303,11 @@ var _default = (store, api, sharedActions) => {
|
|
|
1322
1303
|
preserveQueryParams: true
|
|
1323
1304
|
});
|
|
1324
1305
|
} else {
|
|
1325
|
-
var
|
|
1306
|
+
var _ref4;
|
|
1326
1307
|
if (user.id) {
|
|
1327
1308
|
localStorage.setItem('userId', user.id);
|
|
1328
1309
|
}
|
|
1329
|
-
const quickLoginToRegister = (
|
|
1310
|
+
const quickLoginToRegister = (_ref4 = localStorage.getItem('register-quick-login')) != null ? _ref4 : loginState.quickLoginToRegister;
|
|
1330
1311
|
const shouldNavigateToRegisterQuickLogin = __shouldNavigateToRegisterQuickLogin(user);
|
|
1331
1312
|
actions.afterAuthenticationStateUpdate({
|
|
1332
1313
|
user: updatedUser,
|
|
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.isAbsoluteUrl = exports.getSearchParamsFromUrl = exports.getSearchParam = exports.getRedirectUrl = exports.getPathAndSearchParamsFromUrl = exports.getNumberOfMfaDevices = exports.getMfaStepForNotEnrolledUsers = exports.getMfaStepForEnrolledUsers = exports.getBaseNameWithoutSlashSuffix = exports.TENANT_ID_PARAM_KEY = void 0;
|
|
7
7
|
exports.isEmailPayload = isEmailPayload;
|
|
8
|
-
exports.isOauthCallbackRoute = void 0;
|
|
9
|
-
exports.isUsernamePayload = isUsernamePayload;
|
|
10
|
-
exports.shouldShowPasswordRotationPromptFunc = void 0;
|
|
8
|
+
exports.shouldShowPasswordRotationPromptFunc = exports.isOauthCallbackRoute = void 0;
|
|
11
9
|
var _restApi = require("@frontegg/rest-api");
|
|
12
10
|
var _interfaces = require("../MfaState/interfaces");
|
|
13
11
|
const isAbsoluteUrl = path => {
|
|
@@ -146,9 +144,6 @@ exports.isOauthCallbackRoute = isOauthCallbackRoute;
|
|
|
146
144
|
function isEmailPayload(payload) {
|
|
147
145
|
return 'email' in payload;
|
|
148
146
|
}
|
|
149
|
-
function isUsernamePayload(payload) {
|
|
150
|
-
return 'username' in payload;
|
|
151
|
-
}
|
|
152
147
|
const getBaseNameWithoutSlashSuffix = state => {
|
|
153
148
|
const basename = _restApi.ContextHolder.for(state.root.appName).getBasename();
|
|
154
149
|
if (basename != null && basename.endsWith('/')) {
|
package/node/index.js
CHANGED
|
@@ -6,16 +6,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
class FronteggNativeModule {
|
|
8
8
|
constructor() {
|
|
9
|
-
this.loginWithSSO =
|
|
9
|
+
this.loginWithSSO = email => {
|
|
10
10
|
if (this.isIOSNativeBridgeAvailable()) {
|
|
11
11
|
var _window$webkit, _window$webkit$messag, _window$webkit$messag2;
|
|
12
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({
|
|
13
13
|
action: 'loginWithSSO',
|
|
14
|
-
payload:
|
|
14
|
+
payload: email
|
|
15
15
|
}));
|
|
16
16
|
} else if (this.isAndroidNativeBridgeAvailable()) {
|
|
17
17
|
var _window$FronteggNativ;
|
|
18
|
-
(_window$FronteggNativ = window.FronteggNativeBridge) == null ? void 0 : _window$FronteggNativ.loginWithSSO(
|
|
18
|
+
(_window$FronteggNativ = window.FronteggNativeBridge) == null ? void 0 : _window$FronteggNativ.loginWithSSO(email);
|
|
19
19
|
} else {
|
|
20
20
|
throw new Error('FronteggNativeBridge is not available');
|
|
21
21
|
}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontegg/redux-store",
|
|
3
|
-
"version": "7.74.0
|
|
3
|
+
"version": "7.74.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
9
|
"@frontegg/entitlements-javascript-commons": "1.1.2",
|
|
10
|
-
"@frontegg/rest-api": "7.74.0
|
|
10
|
+
"@frontegg/rest-api": "7.74.0",
|
|
11
11
|
"fast-deep-equal": "3.1.3",
|
|
12
12
|
"get-value": "^3.0.1",
|
|
13
13
|
"proxy-compare": "^3.0.0",
|
|
@@ -30,7 +30,7 @@ declare class FronteggNativeModule {
|
|
|
30
30
|
isLoginWithSSOAvailable(): boolean;
|
|
31
31
|
isSuggestSavePasswordAvailable(): boolean;
|
|
32
32
|
isAvailable(method: string): boolean;
|
|
33
|
-
loginWithSSO: (
|
|
33
|
+
loginWithSSO: (email: string) => void;
|
|
34
34
|
/**
|
|
35
35
|
*
|
|
36
36
|
* @deprecated use loginWithSocialLoginProvider instead for pkce flow in mobile
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
class FronteggNativeModule {
|
|
2
2
|
constructor() {
|
|
3
|
-
this.loginWithSSO =
|
|
3
|
+
this.loginWithSSO = email => {
|
|
4
4
|
if (this.isIOSNativeBridgeAvailable()) {
|
|
5
5
|
var _window$webkit, _window$webkit$messag, _window$webkit$messag2;
|
|
6
6
|
(_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({
|
|
7
7
|
action: 'loginWithSSO',
|
|
8
|
-
payload:
|
|
8
|
+
payload: email
|
|
9
9
|
}));
|
|
10
10
|
} else if (this.isAndroidNativeBridgeAvailable()) {
|
|
11
11
|
var _window$FronteggNativ;
|
|
12
|
-
(_window$FronteggNativ = window.FronteggNativeBridge) == null ? void 0 : _window$FronteggNativ.loginWithSSO(
|
|
12
|
+
(_window$FronteggNativ = window.FronteggNativeBridge) == null ? void 0 : _window$FronteggNativ.loginWithSSO(email);
|
|
13
13
|
} else {
|
|
14
14
|
throw new Error('FronteggNativeBridge is not available');
|
|
15
15
|
}
|