@frontegg/redux-store 7.69.0-alpha.0 → 7.69.0-alpha.1
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 -0
- package/auth/ForgotPasswordState/actions.d.ts +6 -3
- package/auth/ForgotPasswordState/actions.js +72 -9
- package/auth/ForgotPasswordState/interfaces.d.ts +5 -3
- package/auth/ForgotPasswordState/interfaces.js +2 -0
- package/auth/ForgotPasswordState/state.js +1 -1
- package/index.js +1 -1
- package/mocks/auth-mocks/forgotPasswordActions.mocks.d.ts +4 -1
- package/node/auth/ActivateAccountState/actions.js +1 -0
- package/node/auth/ForgotPasswordState/actions.js +72 -9
- package/node/auth/ForgotPasswordState/interfaces.js +2 -0
- package/node/auth/ForgotPasswordState/state.js +1 -1
- package/node/index.js +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { IGetUserPasswordConfig } from '@frontegg/rest-api';
|
|
2
2
|
import type { FronteggState, RestApi, SharedActions } from '../../interfaces';
|
|
3
|
-
import type { ForgotPasswordState,
|
|
3
|
+
import type { ForgotPasswordState, IResetPasswordPayload, IDeterminatePasswordRecoveryStrategyPayload } from './interfaces';
|
|
4
4
|
declare const _default: (store: FronteggState, api: RestApi, sharedActions: SharedActions) => {
|
|
5
5
|
setForgotPasswordState: (payload: Partial<ForgotPasswordState>) => void;
|
|
6
6
|
resetForgotPasswordState: () => void;
|
|
7
|
-
|
|
7
|
+
determinePasswordRecoveryStrategy: (payload: IDeterminatePasswordRecoveryStrategyPayload) => Promise<void>;
|
|
8
|
+
sendPasswordRecoveryEmail: (payload?: {
|
|
9
|
+
callback?: (success: boolean, error?: any) => void;
|
|
10
|
+
}) => Promise<void>;
|
|
8
11
|
resetPassword: (payload: IResetPasswordPayload) => Promise<void>;
|
|
9
12
|
loadPasswordConfig: (payload?: IGetUserPasswordConfig) => Promise<void>;
|
|
10
13
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
const _excluded = ["callback"];
|
|
3
|
+
import { PasswordRecoveryStrategyEnum } from '@frontegg/rest-api';
|
|
3
4
|
import { ForgotPasswordStep } from './interfaces';
|
|
4
5
|
import { initialState } from './state';
|
|
5
6
|
import { errorHandler, deepResetState } from '../../helpers';
|
|
@@ -11,26 +12,87 @@ export default ((store, api, sharedActions) => {
|
|
|
11
12
|
const resetForgotPasswordState = () => {
|
|
12
13
|
deepResetState(store, ['auth', 'forgotPasswordState'], initialState);
|
|
13
14
|
};
|
|
14
|
-
const
|
|
15
|
+
const sendPasswordRecoveryEmail = async payload => {
|
|
16
|
+
const {
|
|
17
|
+
identifier
|
|
18
|
+
} = store.auth.forgotPasswordState;
|
|
19
|
+
if (!identifier) {
|
|
20
|
+
var _payload$callback;
|
|
21
|
+
const error = 'Identifier not found in state for sending recovery email.';
|
|
22
|
+
setForgotPasswordState({
|
|
23
|
+
loading: false,
|
|
24
|
+
error
|
|
25
|
+
});
|
|
26
|
+
payload == null ? void 0 : (_payload$callback = payload.callback) == null ? void 0 : _payload$callback.call(payload, false, error);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
15
29
|
setForgotPasswordState({
|
|
16
|
-
loading: true
|
|
30
|
+
loading: true,
|
|
31
|
+
error: undefined
|
|
17
32
|
});
|
|
18
33
|
try {
|
|
19
|
-
var _payload$
|
|
20
|
-
await api.auth.forgotPassword(
|
|
34
|
+
var _payload$callback2;
|
|
35
|
+
await api.auth.forgotPassword({
|
|
36
|
+
email: identifier
|
|
37
|
+
});
|
|
21
38
|
setForgotPasswordState({
|
|
22
39
|
loading: false,
|
|
23
40
|
error: undefined,
|
|
24
41
|
step: ForgotPasswordStep.success
|
|
25
42
|
});
|
|
26
|
-
(_payload$
|
|
43
|
+
payload == null ? void 0 : (_payload$callback2 = payload.callback) == null ? void 0 : _payload$callback2.call(payload, true);
|
|
27
44
|
} catch (e) {
|
|
28
|
-
var _payload$
|
|
45
|
+
var _payload$callback3;
|
|
46
|
+
setForgotPasswordState({
|
|
47
|
+
loading: false,
|
|
48
|
+
error: errorHandler(e, 'An error occurred sending recovery email')
|
|
49
|
+
});
|
|
50
|
+
payload == null ? void 0 : (_payload$callback3 = payload.callback) == null ? void 0 : _payload$callback3.call(payload, false, e);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const determinePasswordRecoveryStrategy = async payload => {
|
|
54
|
+
setForgotPasswordState({
|
|
55
|
+
loading: true,
|
|
56
|
+
error: undefined
|
|
57
|
+
});
|
|
58
|
+
try {
|
|
59
|
+
const strategies = await api.auth.getPasswordRecoveryStrategies();
|
|
60
|
+
const isEmailActive = strategies.some(s => s.strategy === PasswordRecoveryStrategyEnum.EMAIL && s.isActive);
|
|
61
|
+
const isSmsActive = strategies.some(s => s.strategy === PasswordRecoveryStrategyEnum.SMS && s.isActive);
|
|
62
|
+
if (isEmailActive && isSmsActive) {
|
|
63
|
+
var _payload$callback4;
|
|
64
|
+
setForgotPasswordState({
|
|
65
|
+
loading: false,
|
|
66
|
+
step: ForgotPasswordStep.passwordRecovery
|
|
67
|
+
});
|
|
68
|
+
(_payload$callback4 = payload.callback) == null ? void 0 : _payload$callback4.call(payload, true);
|
|
69
|
+
} else if (isEmailActive) {
|
|
70
|
+
await sendPasswordRecoveryEmail({
|
|
71
|
+
callback: payload.callback
|
|
72
|
+
});
|
|
73
|
+
} else if (isSmsActive) {
|
|
74
|
+
var _payload$callback5;
|
|
75
|
+
setForgotPasswordState({
|
|
76
|
+
loading: false,
|
|
77
|
+
step: ForgotPasswordStep.forgotPasswordSms
|
|
78
|
+
});
|
|
79
|
+
(_payload$callback5 = payload.callback) == null ? void 0 : _payload$callback5.call(payload, true);
|
|
80
|
+
} else {
|
|
81
|
+
var _payload$callback6;
|
|
82
|
+
const error = 'No active password recovery methods found.';
|
|
83
|
+
setForgotPasswordState({
|
|
84
|
+
loading: false,
|
|
85
|
+
error
|
|
86
|
+
});
|
|
87
|
+
(_payload$callback6 = payload.callback) == null ? void 0 : _payload$callback6.call(payload, false, error);
|
|
88
|
+
}
|
|
89
|
+
} catch (e) {
|
|
90
|
+
var _payload$callback7;
|
|
29
91
|
setForgotPasswordState({
|
|
30
92
|
loading: false,
|
|
31
|
-
error: errorHandler(e, '
|
|
93
|
+
error: errorHandler(e, 'An error occurred determining recovery strategy')
|
|
32
94
|
});
|
|
33
|
-
(_payload$
|
|
95
|
+
(_payload$callback7 = payload.callback) == null ? void 0 : _payload$callback7.call(payload, false, e);
|
|
34
96
|
}
|
|
35
97
|
};
|
|
36
98
|
const resetPassword = async payload => {
|
|
@@ -77,7 +139,8 @@ export default ((store, api, sharedActions) => {
|
|
|
77
139
|
return {
|
|
78
140
|
setForgotPasswordState,
|
|
79
141
|
resetForgotPasswordState,
|
|
80
|
-
|
|
142
|
+
determinePasswordRecoveryStrategy,
|
|
143
|
+
sendPasswordRecoveryEmail,
|
|
81
144
|
resetPassword,
|
|
82
145
|
loadPasswordConfig
|
|
83
146
|
};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IDeterminatePasswordRecoveryStrategy, IResetPassword } from '@frontegg/rest-api';
|
|
2
2
|
import type { WithCallback } from '../../interfaces';
|
|
3
3
|
export declare enum ForgotPasswordStep {
|
|
4
4
|
'forgotPassword' = "forgotPassword",
|
|
5
|
+
'forgotPasswordSms' = "forgotPasswordSms",
|
|
6
|
+
'passwordRecovery' = "passwordRecovery",
|
|
5
7
|
'success' = "success"
|
|
6
8
|
}
|
|
7
9
|
export interface TestConfig {
|
|
@@ -14,11 +16,11 @@ export interface TestConfig {
|
|
|
14
16
|
export interface ForgotPasswordState {
|
|
15
17
|
step: ForgotPasswordStep;
|
|
16
18
|
passwordConfig: Partial<TestConfig> | null;
|
|
17
|
-
|
|
19
|
+
identifier: string;
|
|
18
20
|
loading: boolean;
|
|
19
21
|
error?: any;
|
|
20
22
|
}
|
|
21
|
-
export interface
|
|
23
|
+
export interface IDeterminatePasswordRecoveryStrategyPayload extends WithCallback<IDeterminatePasswordRecoveryStrategy> {
|
|
22
24
|
recaptchaToken?: string;
|
|
23
25
|
}
|
|
24
26
|
export interface IResetPasswordPayload extends WithCallback<IResetPassword> {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export let ForgotPasswordStep;
|
|
2
2
|
(function (ForgotPasswordStep) {
|
|
3
3
|
ForgotPasswordStep["forgotPassword"] = "forgotPassword";
|
|
4
|
+
ForgotPasswordStep["forgotPasswordSms"] = "forgotPasswordSms";
|
|
5
|
+
ForgotPasswordStep["passwordRecovery"] = "passwordRecovery";
|
|
4
6
|
ForgotPasswordStep["success"] = "success";
|
|
5
7
|
})(ForgotPasswordStep || (ForgotPasswordStep = {}));
|
|
@@ -3,7 +3,7 @@ import { createProxy } from '../../toolkit/proxy';
|
|
|
3
3
|
export const initialState = {
|
|
4
4
|
step: ForgotPasswordStep.forgotPassword,
|
|
5
5
|
loading: false,
|
|
6
|
-
|
|
6
|
+
identifier: '',
|
|
7
7
|
passwordConfig: null
|
|
8
8
|
};
|
|
9
9
|
export default (overrideState => createProxy(initialState, overrideState));
|
package/index.js
CHANGED
|
@@ -3,7 +3,10 @@ import type { IGetUserPasswordConfig } from '@frontegg/rest-api';
|
|
|
3
3
|
declare const _default: (store: FronteggState, api: RestApi, actions: SharedActions) => {
|
|
4
4
|
setForgotPasswordState: (payload: Partial<import("../..").ForgotPasswordState>) => void;
|
|
5
5
|
resetForgotPasswordState: () => void;
|
|
6
|
-
|
|
6
|
+
determinePasswordRecoveryStrategy: (payload: import("../..").IDeterminatePasswordRecoveryStrategyPayload) => Promise<void>;
|
|
7
|
+
sendPasswordRecoveryEmail: (payload?: {
|
|
8
|
+
callback?: (success: boolean, error?: any) => void;
|
|
9
|
+
}) => Promise<void>;
|
|
7
10
|
resetPassword: (payload: import("../..").IResetPasswordPayload) => Promise<void>;
|
|
8
11
|
loadPasswordConfig: (payload?: IGetUserPasswordConfig) => Promise<void>;
|
|
9
12
|
};
|
|
@@ -187,6 +187,7 @@ var _default = (store, api, sharedActions) => {
|
|
|
187
187
|
callback == null ? void 0 : callback(true);
|
|
188
188
|
} catch (e) {
|
|
189
189
|
setActivateState({
|
|
190
|
+
submitting: false,
|
|
190
191
|
loading: false,
|
|
191
192
|
error: (0, _helpers.errorHandler)(e),
|
|
192
193
|
step: _interfaces.ActivateAccountStep.activating
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
9
|
+
var _restApi = require("@frontegg/rest-api");
|
|
9
10
|
var _interfaces = require("./interfaces");
|
|
10
11
|
var _state = require("./state");
|
|
11
12
|
var _helpers = require("../../helpers");
|
|
@@ -18,26 +19,87 @@ var _default = (store, api, sharedActions) => {
|
|
|
18
19
|
const resetForgotPasswordState = () => {
|
|
19
20
|
(0, _helpers.deepResetState)(store, ['auth', 'forgotPasswordState'], _state.initialState);
|
|
20
21
|
};
|
|
21
|
-
const
|
|
22
|
+
const sendPasswordRecoveryEmail = async payload => {
|
|
23
|
+
const {
|
|
24
|
+
identifier
|
|
25
|
+
} = store.auth.forgotPasswordState;
|
|
26
|
+
if (!identifier) {
|
|
27
|
+
var _payload$callback;
|
|
28
|
+
const error = 'Identifier not found in state for sending recovery email.';
|
|
29
|
+
setForgotPasswordState({
|
|
30
|
+
loading: false,
|
|
31
|
+
error
|
|
32
|
+
});
|
|
33
|
+
payload == null ? void 0 : (_payload$callback = payload.callback) == null ? void 0 : _payload$callback.call(payload, false, error);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
22
36
|
setForgotPasswordState({
|
|
23
|
-
loading: true
|
|
37
|
+
loading: true,
|
|
38
|
+
error: undefined
|
|
24
39
|
});
|
|
25
40
|
try {
|
|
26
|
-
var _payload$
|
|
27
|
-
await api.auth.forgotPassword(
|
|
41
|
+
var _payload$callback2;
|
|
42
|
+
await api.auth.forgotPassword({
|
|
43
|
+
email: identifier
|
|
44
|
+
});
|
|
28
45
|
setForgotPasswordState({
|
|
29
46
|
loading: false,
|
|
30
47
|
error: undefined,
|
|
31
48
|
step: _interfaces.ForgotPasswordStep.success
|
|
32
49
|
});
|
|
33
|
-
(_payload$
|
|
50
|
+
payload == null ? void 0 : (_payload$callback2 = payload.callback) == null ? void 0 : _payload$callback2.call(payload, true);
|
|
34
51
|
} catch (e) {
|
|
35
|
-
var _payload$
|
|
52
|
+
var _payload$callback3;
|
|
53
|
+
setForgotPasswordState({
|
|
54
|
+
loading: false,
|
|
55
|
+
error: (0, _helpers.errorHandler)(e, 'An error occurred sending recovery email')
|
|
56
|
+
});
|
|
57
|
+
payload == null ? void 0 : (_payload$callback3 = payload.callback) == null ? void 0 : _payload$callback3.call(payload, false, e);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const determinePasswordRecoveryStrategy = async payload => {
|
|
61
|
+
setForgotPasswordState({
|
|
62
|
+
loading: true,
|
|
63
|
+
error: undefined
|
|
64
|
+
});
|
|
65
|
+
try {
|
|
66
|
+
const strategies = await api.auth.getPasswordRecoveryStrategies();
|
|
67
|
+
const isEmailActive = strategies.some(s => s.strategy === _restApi.PasswordRecoveryStrategyEnum.EMAIL && s.isActive);
|
|
68
|
+
const isSmsActive = strategies.some(s => s.strategy === _restApi.PasswordRecoveryStrategyEnum.SMS && s.isActive);
|
|
69
|
+
if (isEmailActive && isSmsActive) {
|
|
70
|
+
var _payload$callback4;
|
|
71
|
+
setForgotPasswordState({
|
|
72
|
+
loading: false,
|
|
73
|
+
step: _interfaces.ForgotPasswordStep.passwordRecovery
|
|
74
|
+
});
|
|
75
|
+
(_payload$callback4 = payload.callback) == null ? void 0 : _payload$callback4.call(payload, true);
|
|
76
|
+
} else if (isEmailActive) {
|
|
77
|
+
await sendPasswordRecoveryEmail({
|
|
78
|
+
callback: payload.callback
|
|
79
|
+
});
|
|
80
|
+
} else if (isSmsActive) {
|
|
81
|
+
var _payload$callback5;
|
|
82
|
+
setForgotPasswordState({
|
|
83
|
+
loading: false,
|
|
84
|
+
step: _interfaces.ForgotPasswordStep.forgotPasswordSms
|
|
85
|
+
});
|
|
86
|
+
(_payload$callback5 = payload.callback) == null ? void 0 : _payload$callback5.call(payload, true);
|
|
87
|
+
} else {
|
|
88
|
+
var _payload$callback6;
|
|
89
|
+
const error = 'No active password recovery methods found.';
|
|
90
|
+
setForgotPasswordState({
|
|
91
|
+
loading: false,
|
|
92
|
+
error
|
|
93
|
+
});
|
|
94
|
+
(_payload$callback6 = payload.callback) == null ? void 0 : _payload$callback6.call(payload, false, error);
|
|
95
|
+
}
|
|
96
|
+
} catch (e) {
|
|
97
|
+
var _payload$callback7;
|
|
36
98
|
setForgotPasswordState({
|
|
37
99
|
loading: false,
|
|
38
|
-
error: (0, _helpers.errorHandler)(e, '
|
|
100
|
+
error: (0, _helpers.errorHandler)(e, 'An error occurred determining recovery strategy')
|
|
39
101
|
});
|
|
40
|
-
(_payload$
|
|
102
|
+
(_payload$callback7 = payload.callback) == null ? void 0 : _payload$callback7.call(payload, false, e);
|
|
41
103
|
}
|
|
42
104
|
};
|
|
43
105
|
const resetPassword = async payload => {
|
|
@@ -84,7 +146,8 @@ var _default = (store, api, sharedActions) => {
|
|
|
84
146
|
return {
|
|
85
147
|
setForgotPasswordState,
|
|
86
148
|
resetForgotPasswordState,
|
|
87
|
-
|
|
149
|
+
determinePasswordRecoveryStrategy,
|
|
150
|
+
sendPasswordRecoveryEmail,
|
|
88
151
|
resetPassword,
|
|
89
152
|
loadPasswordConfig
|
|
90
153
|
};
|
|
@@ -8,5 +8,7 @@ let ForgotPasswordStep;
|
|
|
8
8
|
exports.ForgotPasswordStep = ForgotPasswordStep;
|
|
9
9
|
(function (ForgotPasswordStep) {
|
|
10
10
|
ForgotPasswordStep["forgotPassword"] = "forgotPassword";
|
|
11
|
+
ForgotPasswordStep["forgotPasswordSms"] = "forgotPasswordSms";
|
|
12
|
+
ForgotPasswordStep["passwordRecovery"] = "passwordRecovery";
|
|
11
13
|
ForgotPasswordStep["success"] = "success";
|
|
12
14
|
})(ForgotPasswordStep || (exports.ForgotPasswordStep = ForgotPasswordStep = {}));
|
package/node/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontegg/redux-store",
|
|
3
|
-
"version": "7.69.0-alpha.
|
|
3
|
+
"version": "7.69.0-alpha.1",
|
|
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.69.0-alpha.
|
|
10
|
+
"@frontegg/rest-api": "7.69.0-alpha.1",
|
|
11
11
|
"fast-deep-equal": "3.1.3",
|
|
12
12
|
"get-value": "^3.0.1",
|
|
13
13
|
"proxy-compare": "^3.0.0",
|