@frontegg/redux-store 7.87.0 → 7.88.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.
@@ -6,7 +6,6 @@ declare const _default: (store: FronteggState, api: RestApi, sharedActions: Shar
6
6
  resetSignUpState: () => void;
7
7
  resetSignUpStateSoft: () => void;
8
8
  signUpUser: (_payload: ISignUpUserPayload) => Promise<void>;
9
- signUpUserWithPhoneNumber: (_payload: ISignUpUserPayload) => Promise<void>;
10
9
  loadAllowSignUps: (payload?: WithCallback<WithRetryConfig<{}>, IVendorConfig>) => Promise<void>;
11
10
  loadSignUpStrategies: () => Promise<void>;
12
11
  };
@@ -1,7 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  const _excluded = ["events", "url"],
4
- _excluded2 = ["events", "url"];
4
+ _excluded2 = ["events", "url"],
5
+ _excluded3 = ["events", "url"];
5
6
  import { SignUpStage } from './interfaces';
6
7
  import { deepResetState, errorHandler, retryIfNeeded } from '../../helpers';
7
8
  import { initialState } from './state';
@@ -114,7 +115,7 @@ export default ((store, api, sharedActions) => {
114
115
  });
115
116
  }
116
117
  };
117
- const signUpUser = async _payload => {
118
+ const signUpUserWithUsername = async _payload => {
118
119
  const {
119
120
  events
120
121
  } = _payload,
@@ -122,10 +123,86 @@ export default ((store, api, sharedActions) => {
122
123
  setSignUpState({
123
124
  loading: true
124
125
  });
126
+ if (!payload.username) {
127
+ throw new Error('Username is required for username signup');
128
+ }
129
+ try {
130
+ const {
131
+ routes,
132
+ onRedirectTo
133
+ } = store.auth;
134
+ const {
135
+ shouldActivate,
136
+ user,
137
+ tenantId,
138
+ userId,
139
+ tenants = [],
140
+ activeTenant,
141
+ activationToken
142
+ } = await api.auth.signUpUserWithUsername(prepareIdentifiersForSignup(payload));
143
+ if (!payload.invitationToken) {
144
+ reportSignupCompletion(payload, userId, tenantId, activationToken, events, AuthenticationTypes.USERNAME);
145
+ }
146
+ if (!shouldActivate && user && isMfaRequired(user, store.root.appName)) {
147
+ const mfaRequiredState = await actions.getMfaRequiredState(user, DEFAULT_RETRY_CONFIG, true, payload.email);
148
+ actions.setAuthState(mfaRequiredState);
149
+ onRedirectTo(routes.loginUrl);
150
+ } else if (shouldActivate && activationToken) {
151
+ const searchParams = new URLSearchParams({
152
+ userId: userId || '',
153
+ token: activationToken || ''
154
+ });
155
+ const url = `${routes.activateWithOTCUrl}?${searchParams.toString()}`;
156
+ setSignUpState({
157
+ loading: false,
158
+ shouldActivate,
159
+ stage: SignUpStage.SignUpSuccess
160
+ });
161
+ onRedirectTo(url);
162
+ } else {
163
+ const tenantsState = store.auth.tenantsState;
164
+ setSignUpState({
165
+ loading: false,
166
+ shouldActivate,
167
+ stage: SignUpStage.SignUpSuccess
168
+ });
169
+ actions.setAuthState({
170
+ user,
171
+ isAuthenticated: !!(user != null && user.accessToken),
172
+ tenantsState: _extends({}, tenantsState, {
173
+ tenants,
174
+ activeTenant
175
+ })
176
+ });
177
+ }
178
+ } catch (e) {
179
+ contextHolder.setAccessToken(null);
180
+ contextHolder.setUser(null);
181
+ setSignUpState({
182
+ error: errorHandler(e)
183
+ });
184
+ } finally {
185
+ setSignUpState({
186
+ loading: false
187
+ });
188
+ }
189
+ };
190
+ const signUpUser = async _payload => {
191
+ const {
192
+ events
193
+ } = _payload,
194
+ payload = _objectWithoutPropertiesLoose(_payload, _excluded3);
195
+ setSignUpState({
196
+ loading: true
197
+ });
125
198
  const phoneNumberStrategy = store.auth.signUpState.strategies.phoneNumber;
126
199
  if (phoneNumberStrategy != null && phoneNumberStrategy.required && phoneNumberStrategy != null && phoneNumberStrategy.enabled && payload.phoneNumber) {
127
200
  return signUpUserWithPhoneNumber(_payload);
128
201
  }
202
+ const usernameStrategy = store.auth.signUpState.strategies.username;
203
+ if (usernameStrategy != null && usernameStrategy.required && usernameStrategy != null && usernameStrategy.enabled && payload.username) {
204
+ return signUpUserWithUsername(_payload);
205
+ }
129
206
  try {
130
207
  const {
131
208
  routes,
@@ -243,7 +320,6 @@ export default ((store, api, sharedActions) => {
243
320
  resetSignUpState,
244
321
  resetSignUpStateSoft,
245
322
  signUpUser,
246
- signUpUserWithPhoneNumber,
247
323
  loadAllowSignUps,
248
324
  loadSignUpStrategies
249
325
  };
@@ -15,6 +15,10 @@ export const initialState = {
15
15
  [SignUpStrategyEnum.PhoneNumber]: {
16
16
  enabled: false,
17
17
  required: false
18
+ },
19
+ [SignUpStrategyEnum.Username]: {
20
+ enabled: false,
21
+ required: false
18
22
  }
19
23
  }
20
24
  };
package/auth/helpers.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["phoneNumber", "email"],
3
+ const _excluded = ["phoneNumber", "email", "username"],
4
4
  _excluded2 = ["authenticatedUrl"];
5
5
  import { ContextHolder } from '@frontegg/rest-api';
6
6
  import { defaultFronteggRoutes } from './LoginState/consts';
@@ -56,7 +56,8 @@ export const getUri = urlStrategy => {
56
56
  export const prepareIdentifiersForSignup = payload => {
57
57
  const {
58
58
  phoneNumber,
59
- email
59
+ email,
60
+ username
60
61
  } = payload,
61
62
  finalDto = _objectWithoutPropertiesLoose(payload, _excluded);
62
63
  if (email != null && email.length) {
@@ -69,6 +70,11 @@ export const prepareIdentifiersForSignup = payload => {
69
70
  phoneNumber
70
71
  });
71
72
  }
73
+ if (username != null && username.length) {
74
+ Object.assign(finalDto, {
75
+ username
76
+ });
77
+ }
72
78
  return finalDto;
73
79
  };
74
80
  export const isAuthRoute = (path, routes) => {
@@ -262,7 +262,8 @@ export declare enum UserVerifiedOriginTypes {
262
262
  export declare enum AuthenticationTypes {
263
263
  SOCIAL_LOGIN = "SOCIAL_LOGIN",
264
264
  PASSWORD = "PASSWORD",
265
- PHONE_NUMBER = "PHONE_NUMBER"
265
+ PHONE_NUMBER = "PHONE_NUMBER",
266
+ USERNAME = "USERNAME"
266
267
  }
267
268
  export declare enum AdminPortalPagesForEvents {
268
269
  profile = "profile",
@@ -19,6 +19,7 @@ export let AuthenticationTypes;
19
19
  AuthenticationTypes["SOCIAL_LOGIN"] = "SOCIAL_LOGIN";
20
20
  AuthenticationTypes["PASSWORD"] = "PASSWORD";
21
21
  AuthenticationTypes["PHONE_NUMBER"] = "PHONE_NUMBER";
22
+ AuthenticationTypes["USERNAME"] = "USERNAME";
22
23
  })(AuthenticationTypes || (AuthenticationTypes = {}));
23
24
  export let AdminPortalPagesForEvents;
24
25
 
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v7.87.0
1
+ /** @license Frontegg v7.88.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.
@@ -4,7 +4,6 @@ declare const _default: (store: FronteggState, api: RestApi, actions: SharedActi
4
4
  resetSignUpState: () => void;
5
5
  resetSignUpStateSoft: () => void;
6
6
  signUpUser: (_payload: import("../..").ISignUpUserPayload) => Promise<void>;
7
- signUpUserWithPhoneNumber: (_payload: import("../..").ISignUpUserPayload) => Promise<void>;
8
7
  loadAllowSignUps: (payload?: import("../../interfaces").WithCallback<import("../../interfaces").WithRetryConfig<{}>, import("dist/@frontegg/rest-api").IVendorConfig>) => Promise<void>;
9
8
  loadSignUpStrategies: () => Promise<void>;
10
9
  };
@@ -17,7 +17,8 @@ var _gtm = require("../../helpers/gtm");
17
17
  var _constants = require("../../constants");
18
18
  var _toolkit = require("../../toolkit");
19
19
  const _excluded = ["events", "url"],
20
- _excluded2 = ["events", "url"];
20
+ _excluded2 = ["events", "url"],
21
+ _excluded3 = ["events", "url"];
21
22
  var _default = (store, api, sharedActions) => {
22
23
  const actions = sharedActions;
23
24
  const contextHolder = _restApi.ContextHolder.for(store.root.appName);
@@ -121,7 +122,7 @@ var _default = (store, api, sharedActions) => {
121
122
  });
122
123
  }
123
124
  };
124
- const signUpUser = async _payload => {
125
+ const signUpUserWithUsername = async _payload => {
125
126
  const {
126
127
  events
127
128
  } = _payload,
@@ -129,10 +130,86 @@ var _default = (store, api, sharedActions) => {
129
130
  setSignUpState({
130
131
  loading: true
131
132
  });
133
+ if (!payload.username) {
134
+ throw new Error('Username is required for username signup');
135
+ }
136
+ try {
137
+ const {
138
+ routes,
139
+ onRedirectTo
140
+ } = store.auth;
141
+ const {
142
+ shouldActivate,
143
+ user,
144
+ tenantId,
145
+ userId,
146
+ tenants = [],
147
+ activeTenant,
148
+ activationToken
149
+ } = await api.auth.signUpUserWithUsername((0, _helpers2.prepareIdentifiersForSignup)(payload));
150
+ if (!payload.invitationToken) {
151
+ reportSignupCompletion(payload, userId, tenantId, activationToken, events, _interfaces2.AuthenticationTypes.USERNAME);
152
+ }
153
+ if (!shouldActivate && user && (0, _helpers2.isMfaRequired)(user, store.root.appName)) {
154
+ const mfaRequiredState = await actions.getMfaRequiredState(user, _constants.DEFAULT_RETRY_CONFIG, true, payload.email);
155
+ actions.setAuthState(mfaRequiredState);
156
+ onRedirectTo(routes.loginUrl);
157
+ } else if (shouldActivate && activationToken) {
158
+ const searchParams = new URLSearchParams({
159
+ userId: userId || '',
160
+ token: activationToken || ''
161
+ });
162
+ const url = `${routes.activateWithOTCUrl}?${searchParams.toString()}`;
163
+ setSignUpState({
164
+ loading: false,
165
+ shouldActivate,
166
+ stage: _interfaces.SignUpStage.SignUpSuccess
167
+ });
168
+ onRedirectTo(url);
169
+ } else {
170
+ const tenantsState = store.auth.tenantsState;
171
+ setSignUpState({
172
+ loading: false,
173
+ shouldActivate,
174
+ stage: _interfaces.SignUpStage.SignUpSuccess
175
+ });
176
+ actions.setAuthState({
177
+ user,
178
+ isAuthenticated: !!(user != null && user.accessToken),
179
+ tenantsState: (0, _extends2.default)({}, tenantsState, {
180
+ tenants,
181
+ activeTenant
182
+ })
183
+ });
184
+ }
185
+ } catch (e) {
186
+ contextHolder.setAccessToken(null);
187
+ contextHolder.setUser(null);
188
+ setSignUpState({
189
+ error: (0, _helpers.errorHandler)(e)
190
+ });
191
+ } finally {
192
+ setSignUpState({
193
+ loading: false
194
+ });
195
+ }
196
+ };
197
+ const signUpUser = async _payload => {
198
+ const {
199
+ events
200
+ } = _payload,
201
+ payload = (0, _objectWithoutPropertiesLoose2.default)(_payload, _excluded3);
202
+ setSignUpState({
203
+ loading: true
204
+ });
132
205
  const phoneNumberStrategy = store.auth.signUpState.strategies.phoneNumber;
133
206
  if (phoneNumberStrategy != null && phoneNumberStrategy.required && phoneNumberStrategy != null && phoneNumberStrategy.enabled && payload.phoneNumber) {
134
207
  return signUpUserWithPhoneNumber(_payload);
135
208
  }
209
+ const usernameStrategy = store.auth.signUpState.strategies.username;
210
+ if (usernameStrategy != null && usernameStrategy.required && usernameStrategy != null && usernameStrategy.enabled && payload.username) {
211
+ return signUpUserWithUsername(_payload);
212
+ }
136
213
  try {
137
214
  const {
138
215
  routes,
@@ -250,7 +327,6 @@ var _default = (store, api, sharedActions) => {
250
327
  resetSignUpState,
251
328
  resetSignUpStateSoft,
252
329
  signUpUser,
253
- signUpUserWithPhoneNumber,
254
330
  loadAllowSignUps,
255
331
  loadSignUpStrategies
256
332
  };
@@ -21,6 +21,10 @@ const initialState = {
21
21
  [_restApi.SignUpStrategyEnum.PhoneNumber]: {
22
22
  enabled: false,
23
23
  required: false
24
+ },
25
+ [_restApi.SignUpStrategyEnum.Username]: {
26
+ enabled: false,
27
+ required: false
24
28
  }
25
29
  }
26
30
  };
@@ -53,7 +53,7 @@ Object.keys(_helpers3).forEach(function (key) {
53
53
  }
54
54
  });
55
55
  });
56
- const _excluded = ["phoneNumber", "email"],
56
+ const _excluded = ["phoneNumber", "email", "username"],
57
57
  _excluded2 = ["authenticatedUrl"];
58
58
  const isMfaRequired = (user, appName) => {
59
59
  const contextHolder = _restApi.ContextHolder.for(appName);
@@ -108,7 +108,8 @@ exports.getUri = getUri;
108
108
  const prepareIdentifiersForSignup = payload => {
109
109
  const {
110
110
  phoneNumber,
111
- email
111
+ email,
112
+ username
112
113
  } = payload,
113
114
  finalDto = (0, _objectWithoutPropertiesLoose2.default)(payload, _excluded);
114
115
  if (email != null && email.length) {
@@ -121,6 +122,11 @@ const prepareIdentifiersForSignup = payload => {
121
122
  phoneNumber
122
123
  });
123
124
  }
125
+ if (username != null && username.length) {
126
+ Object.assign(finalDto, {
127
+ username
128
+ });
129
+ }
124
130
  return finalDto;
125
131
  };
126
132
  exports.prepareIdentifiersForSignup = prepareIdentifiersForSignup;
@@ -28,6 +28,7 @@ exports.AuthenticationTypes = AuthenticationTypes;
28
28
  AuthenticationTypes["SOCIAL_LOGIN"] = "SOCIAL_LOGIN";
29
29
  AuthenticationTypes["PASSWORD"] = "PASSWORD";
30
30
  AuthenticationTypes["PHONE_NUMBER"] = "PHONE_NUMBER";
31
+ AuthenticationTypes["USERNAME"] = "USERNAME";
31
32
  })(AuthenticationTypes || (exports.AuthenticationTypes = AuthenticationTypes = {}));
32
33
  let AdminPortalPagesForEvents; // noinspection JSUnusedGlobalSymbols
33
34
  exports.AdminPortalPagesForEvents = AdminPortalPagesForEvents;
package/node/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license Frontegg v7.87.0
1
+ /** @license Frontegg v7.88.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.
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@frontegg/redux-store",
3
- "version": "7.87.0",
3
+ "version": "7.88.0-alpha.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.87.0",
10
+ "@frontegg/rest-api": "7.88.0-alpha.0",
11
11
  "fast-deep-equal": "3.1.3",
12
12
  "get-value": "^3.0.1",
13
13
  "proxy-compare": "^3.0.0",