@shopgate/pwa-common 7.33.2 → 7.33.3-beta.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.
|
@@ -19,16 +19,24 @@ export const requestLogin = (user, password, strategy = DEFAULT_LOGIN_STRATEGY)
|
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Creates the dispatched RECEIVE_LOGIN action object.
|
|
22
|
-
* @param {
|
|
22
|
+
* @param {Object|boolean} [redirect] The redirect params. When set to `false` the user stays on
|
|
23
|
+
* the current page.
|
|
23
24
|
* @param {string} strategy The login strategy.
|
|
24
25
|
* @param {number} [sessionLifetimeInSeconds] The session lifetime in seconds
|
|
26
|
+
* @param {Object} [options] Further details of the login.
|
|
27
|
+
* @param {string} [options.source] What the login came from when it wasn't the login form, e.g.
|
|
28
|
+
* `LOGIN_SOURCE_BIOMETRIC` of `@shopgate/engage/login/constants`. Subscriptions can use it to
|
|
29
|
+
* react differently, e.g. to skip a confirmation.
|
|
25
30
|
* @returns {Object} The dispatched action object.
|
|
26
31
|
*/
|
|
27
|
-
export const successLogin = (redirect, strategy = DEFAULT_LOGIN_STRATEGY, sessionLifetimeInSeconds
|
|
32
|
+
export const successLogin = (redirect, strategy = DEFAULT_LOGIN_STRATEGY, sessionLifetimeInSeconds = undefined, {
|
|
33
|
+
source
|
|
34
|
+
} = {}) => ({
|
|
28
35
|
type: SUCCESS_LOGIN,
|
|
29
36
|
redirect,
|
|
30
37
|
strategy,
|
|
31
|
-
sessionLifetimeInSeconds
|
|
38
|
+
sessionLifetimeInSeconds,
|
|
39
|
+
source
|
|
32
40
|
});
|
|
33
41
|
|
|
34
42
|
/**
|
package/actions/user/login.js
CHANGED
|
@@ -1,38 +1,26 @@
|
|
|
1
1
|
import { PipelineRequest, EINVALIDCALL, ELEGACYSGCONNECT, EINCOMPLETELOGIN } from '@shopgate/pwa-core';
|
|
2
|
+
import { getRecaptchaToken } from '@shopgate/engage/core/helpers/recaptcha';
|
|
2
3
|
import { requestLogin, successLogin, errorLogin, errorLegacyConnectRegister } from "../../action-creators/user";
|
|
3
4
|
import { SHOPGATE_USER_LOGIN_USER } from "../../constants/Pipelines";
|
|
4
5
|
import { DEFAULT_LOGIN_STRATEGY } from "../../constants/user";
|
|
5
6
|
import { mutable } from "../../helpers/redux";
|
|
6
|
-
import appConfig from "../../helpers/config";
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Login the current user.
|
|
10
10
|
* @param {Object} parameters The login credentials.
|
|
11
11
|
* @param {string} parameters.login The username to login.
|
|
12
12
|
* @param {string} parameters.password The password to login.
|
|
13
|
-
* @param {
|
|
14
|
-
*
|
|
13
|
+
* @param {Object|boolean} [redirect] The redirect params, e.g. `{ location }` of the page to open
|
|
14
|
+
* when logged in. When set to `false` the user stays on the current page.
|
|
15
|
+
* @param {string} [strategy] basic or facebook, amazon, etc
|
|
15
16
|
* @return {Function} A redux thunk.
|
|
16
17
|
*/
|
|
17
18
|
function login(parameters, redirect, strategy = DEFAULT_LOGIN_STRATEGY) {
|
|
18
19
|
return async dispatch => {
|
|
19
|
-
const {
|
|
20
|
-
enabled: recaptchaEnabled,
|
|
21
|
-
googleCloudSiteKey
|
|
22
|
-
} = appConfig?.recaptcha || {};
|
|
23
20
|
dispatch(requestLogin(parameters.login, parameters.password, strategy));
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// Add a reCAPTCHA token to the login request when feature is configured
|
|
28
|
-
await new Promise(resolve => window.grecaptcha.enterprise.ready(resolve));
|
|
29
|
-
recaptchaToken = await window.grecaptcha.enterprise.execute(googleCloudSiteKey, {
|
|
30
|
-
action: 'login'
|
|
31
|
-
});
|
|
32
|
-
} catch (e) {
|
|
33
|
-
// noting to do here - just for protection
|
|
34
|
-
}
|
|
35
|
-
}
|
|
21
|
+
|
|
22
|
+
// Add a reCAPTCHA token to the login request when feature is configured
|
|
23
|
+
const recaptchaToken = await getRecaptchaToken('login', 0);
|
|
36
24
|
const request = new PipelineRequest(SHOPGATE_USER_LOGIN_USER).setTrusted().setErrorBlacklist([EINVALIDCALL, ELEGACYSGCONNECT, EINCOMPLETELOGIN]).setInput({
|
|
37
25
|
strategy,
|
|
38
26
|
parameters: {
|
package/constants/Portals.d.ts
CHANGED
|
@@ -18,6 +18,9 @@ export const PAGE_LOGIN_AFTER: "page.login.after";
|
|
|
18
18
|
export const PAGE_LOGIN_FORM_BEFORE: "page.login.form.before";
|
|
19
19
|
export const PAGE_LOGIN_FORM: "page.login.form";
|
|
20
20
|
export const PAGE_LOGIN_FORM_AFTER: "page.login.form.after";
|
|
21
|
+
export const PAGE_LOGIN_FORM_SUBMIT_BEFORE: "page.login.form.submit.before";
|
|
22
|
+
export const PAGE_LOGIN_FORM_SUBMIT: "page.login.form.submit";
|
|
23
|
+
export const PAGE_LOGIN_FORM_SUBMIT_AFTER: "page.login.form.submit.after";
|
|
21
24
|
export const PAGE_LOGIN_REGISTER_LINK_BEFORE: "page.login.register-link.before";
|
|
22
25
|
export const PAGE_LOGIN_REGISTER_LINK: "page.login.register-link";
|
|
23
26
|
export const PAGE_LOGIN_REGISTER_LINK_AFTER: "page.login.register-link.after";
|
|
@@ -68,6 +71,9 @@ export const NO_RESULTS_CONTENT_AFTER: "no-results.content.after";
|
|
|
68
71
|
export const USER_MENU_CONTAINER_BEFORE: "user-menu.container.before";
|
|
69
72
|
export const USER_MENU_CONTAINER: "user-menu.container";
|
|
70
73
|
export const USER_MENU_CONTAINER_AFTER: "user-menu.container.after";
|
|
74
|
+
export const USER_MENU_LOGIN_BEFORE: "user-menu.login.before";
|
|
75
|
+
export const USER_MENU_LOGIN: "user-menu.login";
|
|
76
|
+
export const USER_MENU_LOGIN_AFTER: "user-menu.login.after";
|
|
71
77
|
export const APP_BAR_DEFAULT_BEFORE: "app-bar.default.before";
|
|
72
78
|
export const APP_BAR_DEFAULT: "app-bar.default";
|
|
73
79
|
export const APP_BAR_DEFAULT_AFTER: "app-bar.default.after";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Portals.d.ts","sourceRoot":"","sources":["../../constants/Portals.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Portals.d.ts","sourceRoot":"","sources":["../../constants/Portals.js"],"names":[],"mappings":"AAsCA,qBAAsB,QAAQ,CAAC;AAC/B,oBAAqB,OAAO,CAAC;AAC7B,mBAAoB,MAAM,CAAC;AAC3B,qBAAsB,QAAQ,CAAC;AAC/B,oBAAqB,OAAO,CAAC;AAC7B,oBAAqB,OAAO,CAAC;AAE7B,wCAA+C;AAC/C,sCAA6C;AAE7C,wDAAkE;AAClE,0CAAiD;AACjD,sDAAgE;AAEhE,wDAAkE;AAClE,0CAAiD;AACjD,sDAAgE;AAEhE,oDAA8D;AAC9D,sCAA6C;AAC7C,kDAA4D;AAE5D,8DAA2E;AAC3E,gDAA0D;AAC1D,4DAAyE;AAEzE,4EAA4F;AAC5F,8DAA2E;AAC3E,0EAA0F;AAE1F,gFAA6F;AAC7F,kEAA4E;AAC5E,8EAA2F;AAE3F,gEAA0E;AAC1E,8DAAwE;AAExE,0DAAiE;AACjE,wEAAkF;AAClF,sEAAgF;AAEhF,sEAAgF;AAChF,oFAAiG;AACjG,kFAA+F;AAE/F,0DAAoE;AACpE,4CAAmD;AACnD,wDAAkE;AAElE,gEAA0E;AAC1E,kDAAyD;AACzD,8DAAwE;AAExE,4DAAsE;AACtE,8CAAqD;AACrD,0DAAoE;AAEpE,gEAA0E;AAC1E,kDAAyD;AACzD,8DAAwE;AAExE,kFAA4F;AAC5F,oEAA2E;AAC3E,gFAA0F;AAE1F,gEAA0E;AAC1E,kDAAyD;AACzD,8DAAwE;AAExE,oFAA8F;AAC9F,sEAA6E;AAC7E,kFAA4F;AAE5F,8FAAwG;AACxG,gFAAuF;AACvF,4FAAsG;AAEtG,gGAA0G;AAC1G,kFAAyF;AACzF,8FAAwG;AAExG,sEAAgF;AAChF,wDAA+D;AAC/D,oEAA8E;AAE9E,8DAAwE;AACxE,gDAAuD;AACvD,4DAAsE;AAEtE,oEAA8E;AAC9E,sDAA6D;AAC7D,kEAA4E;AAE5E,sEAAgF;AAChF,wDAA+D;AAC/D,oEAA8E;AAE9E,8DAAwE;AACxE,gDAAuD;AACvD,4DAAsE;AAEtE,8DAAwE;AACxE,gDAAuD;AACvD,4DAAsE;AAEtE,wDAAkE;AAClE,0CAAiD;AACjD,sDAAgE;AAEhE,0DAAoE;AACpE,4CAAmD;AACnD,wDAAkE;AAElE,4DAAsE;AACtE,8CAAqD;AACrD,0DAAoE;AAEpE,0CAAiD;AACjD,wDAAkE;AAClE,sDAAgE;AAEhE,8CAAqD;AACrD,4DAAsE;AACtE,0DAAoE;AAEpE,4CAAmD;AACnD,0DAAoE;AACpE,wDAAkE;AAElE,4CAAmD;AACnD,0DAAoE;AACpE,wDAAkE;AAElE,wDAA+D;AAC/D,sEAAgF;AAChF,oEAA8E;AAE9E,gDAAuD;AACvD,8DAAqE;AACrE,4DAAmE"}
|
package/constants/Portals.js
CHANGED
|
@@ -33,6 +33,7 @@ const CLOSE = 'close';
|
|
|
33
33
|
const SIMPLE = 'simple';
|
|
34
34
|
const CART_BUTTON = 'cart-button';
|
|
35
35
|
const ITEMS = 'items';
|
|
36
|
+
const SUBMIT = 'submit';
|
|
36
37
|
|
|
37
38
|
// POSITIONS
|
|
38
39
|
export const BEFORE = 'before';
|
|
@@ -55,6 +56,9 @@ export const PAGE_LOGIN_AFTER = `${PAGE}.${LOGIN}.${AFTER}`;
|
|
|
55
56
|
export const PAGE_LOGIN_FORM_BEFORE = `${PAGE}.${LOGIN}.${FORM}.${BEFORE}`;
|
|
56
57
|
export const PAGE_LOGIN_FORM = `${PAGE}.${LOGIN}.${FORM}`;
|
|
57
58
|
export const PAGE_LOGIN_FORM_AFTER = `${PAGE}.${LOGIN}.${FORM}.${AFTER}`;
|
|
59
|
+
export const PAGE_LOGIN_FORM_SUBMIT_BEFORE = `${PAGE}.${LOGIN}.${FORM}.${SUBMIT}.${BEFORE}`;
|
|
60
|
+
export const PAGE_LOGIN_FORM_SUBMIT = `${PAGE}.${LOGIN}.${FORM}.${SUBMIT}`;
|
|
61
|
+
export const PAGE_LOGIN_FORM_SUBMIT_AFTER = `${PAGE}.${LOGIN}.${FORM}.${SUBMIT}.${AFTER}`;
|
|
58
62
|
export const PAGE_LOGIN_REGISTER_LINK_BEFORE = `${PAGE}.${LOGIN}.${REGISTER_LINK}.${BEFORE}`;
|
|
59
63
|
export const PAGE_LOGIN_REGISTER_LINK = `${PAGE}.${LOGIN}.${REGISTER_LINK}`;
|
|
60
64
|
export const PAGE_LOGIN_REGISTER_LINK_AFTER = `${PAGE}.${LOGIN}.${REGISTER_LINK}.${AFTER}`;
|
|
@@ -105,6 +109,9 @@ export const NO_RESULTS_CONTENT_AFTER = `${NO_RESULTS}.${CONTENT}.${AFTER}`;
|
|
|
105
109
|
export const USER_MENU_CONTAINER_BEFORE = `${USER_MENU}.${CONTAINER}.${BEFORE}`;
|
|
106
110
|
export const USER_MENU_CONTAINER = `${USER_MENU}.${CONTAINER}`;
|
|
107
111
|
export const USER_MENU_CONTAINER_AFTER = `${USER_MENU}.${CONTAINER}.${AFTER}`;
|
|
112
|
+
export const USER_MENU_LOGIN_BEFORE = `${USER_MENU}.${LOGIN}.${BEFORE}`;
|
|
113
|
+
export const USER_MENU_LOGIN = `${USER_MENU}.${LOGIN}`;
|
|
114
|
+
export const USER_MENU_LOGIN_AFTER = `${USER_MENU}.${LOGIN}.${AFTER}`;
|
|
108
115
|
export const APP_BAR_DEFAULT_BEFORE = `${APP_BAR}.${DEFAULT}.${BEFORE}`;
|
|
109
116
|
export const APP_BAR_DEFAULT = `${APP_BAR}.${DEFAULT}`;
|
|
110
117
|
export const APP_BAR_DEFAULT_AFTER = `${APP_BAR}.${DEFAULT}.${AFTER}`;
|
package/helpers/redux/mutable.js
CHANGED
|
@@ -84,7 +84,7 @@ export const mutable = func => {
|
|
|
84
84
|
|
|
85
85
|
// Execute pre-processing steps, if any available.
|
|
86
86
|
if (steps.length > 0) {
|
|
87
|
-
mutatedArgs = steps.reduce((acc, step, i, arr) => {
|
|
87
|
+
mutatedArgs = steps.slice().reduce((acc, step, i, arr) => {
|
|
88
88
|
// Call next step func in the pipeline with mutated args
|
|
89
89
|
let res = step.apply(void 0, acc);
|
|
90
90
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shopgate/pwa-common",
|
|
3
|
-
"version": "7.33.
|
|
3
|
+
"version": "7.33.3-beta.1",
|
|
4
4
|
"description": "Common library for the Shopgate Connect PWA.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Shopgate <support@shopgate.com>",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@redux-devtools/extension": "^3.3.0",
|
|
23
23
|
"@sentry/browser": "^7.120.4",
|
|
24
|
+
"@shopgate/native-modules": "1.1.0-alpha.3",
|
|
24
25
|
"@virtuous/conductor": "~2.5.0",
|
|
25
26
|
"@virtuous/react-conductor": "~2.5.0",
|
|
26
27
|
"@virtuous/redux-persister": "1.1.0-beta.7",
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
"swiper": "12.2.0"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
|
-
"@shopgate/pwa-core": "7.33.
|
|
47
|
+
"@shopgate/pwa-core": "7.33.3-beta.1",
|
|
47
48
|
"@types/lodash": "^4.17.25",
|
|
48
49
|
"@types/react-portal": "^3.0.9",
|
|
49
50
|
"lodash": "^4.18.1",
|
package/subscriptions/router.js
CHANGED
|
@@ -325,7 +325,7 @@ export default function routerSubscriptions(subscribe) {
|
|
|
325
325
|
action,
|
|
326
326
|
dispatch
|
|
327
327
|
}) => {
|
|
328
|
-
if (appConfig.webCheckoutShopify === null) {
|
|
328
|
+
if (appConfig.webCheckoutShopify === null && action.redirect !== false) {
|
|
329
329
|
dispatch(historyRedirect(action.redirect));
|
|
330
330
|
}
|
|
331
331
|
});
|