@frontegg/redux-store 7.68.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.
@@ -180,6 +180,7 @@ export default ((store, api, sharedActions) => {
180
180
  callback == null ? void 0 : callback(true);
181
181
  } catch (e) {
182
182
  setActivateState({
183
+ submitting: false,
183
184
  loading: false,
184
185
  error: errorHandler(e),
185
186
  step: ActivateAccountStep.activating
@@ -1,10 +1,13 @@
1
- import type { IGetUserPasswordConfig } from '@frontegg/rest-api';
1
+ import { IGetUserPasswordConfig } from '@frontegg/rest-api';
2
2
  import type { FronteggState, RestApi, SharedActions } from '../../interfaces';
3
- import type { ForgotPasswordState, IForgotPasswordPayload, IResetPasswordPayload } from './interfaces';
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
- forgotPassword: (payload: IForgotPasswordPayload) => Promise<void>;
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 forgotPassword = async payload => {
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$callback;
20
- await api.auth.forgotPassword(payload);
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$callback = payload.callback) == null ? void 0 : _payload$callback.call(payload, true);
43
+ payload == null ? void 0 : (_payload$callback2 = payload.callback) == null ? void 0 : _payload$callback2.call(payload, true);
27
44
  } catch (e) {
28
- var _payload$callback2;
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, 'Unknown error occurred')
93
+ error: errorHandler(e, 'An error occurred determining recovery strategy')
32
94
  });
33
- (_payload$callback2 = payload.callback) == null ? void 0 : _payload$callback2.call(payload, false, e);
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
- forgotPassword,
142
+ determinePasswordRecoveryStrategy,
143
+ sendPasswordRecoveryEmail,
81
144
  resetPassword,
82
145
  loadPasswordConfig
83
146
  };
@@ -1,7 +1,9 @@
1
- import type { IForgotPassword, IResetPassword } from '@frontegg/rest-api';
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
- email: string;
19
+ identifier: string;
18
20
  loading: boolean;
19
21
  error?: any;
20
22
  }
21
- export interface IForgotPasswordPayload extends WithCallback<IForgotPassword> {
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
- email: '',
6
+ identifier: '',
7
7
  passwordConfig: null
8
8
  };
9
9
  export default (overrideState => createProxy(initialState, overrideState));
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v7.68.0
1
+ /** @license Frontegg v7.69.0-alpha.1
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.
@@ -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
- forgotPassword: (payload: import("../..").IForgotPasswordPayload) => Promise<void>;
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 forgotPassword = async payload => {
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$callback;
27
- await api.auth.forgotPassword(payload);
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$callback = payload.callback) == null ? void 0 : _payload$callback.call(payload, true);
50
+ payload == null ? void 0 : (_payload$callback2 = payload.callback) == null ? void 0 : _payload$callback2.call(payload, true);
34
51
  } catch (e) {
35
- var _payload$callback2;
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, 'Unknown error occurred')
100
+ error: (0, _helpers.errorHandler)(e, 'An error occurred determining recovery strategy')
39
101
  });
40
- (_payload$callback2 = payload.callback) == null ? void 0 : _payload$callback2.call(payload, false, e);
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
- forgotPassword,
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 = {}));
@@ -9,7 +9,7 @@ var _proxy = require("../../toolkit/proxy");
9
9
  const initialState = {
10
10
  step: _interfaces.ForgotPasswordStep.forgotPassword,
11
11
  loading: false,
12
- email: '',
12
+ identifier: '',
13
13
  passwordConfig: null
14
14
  };
15
15
  exports.initialState = initialState;
package/node/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v7.68.0
1
+ /** @license Frontegg v7.69.0-alpha.1
2
2
  *
3
3
  * This source code is licensed under the MIT license found in the
4
4
  * LICENSE file in the root directory of this source tree.
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@frontegg/redux-store",
3
- "version": "7.68.0",
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.68.0",
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",