@agnostack/next-shopify 1.13.4-beta.61 → 1.13.4-beta.63
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/CHANGELOG.md +14 -0
- package/dist/lib/handlers/api/proxy.d.ts.map +1 -1
- package/dist/lib/handlers/api/proxy.js +14 -48
- package/dist/lib/handlers/api/proxy.js.map +1 -1
- package/dist/lib/handlers/api/token.d.ts.map +1 -1
- package/dist/lib/handlers/api/token.js +2 -53
- package/dist/lib/handlers/api/token.js.map +1 -1
- package/dist/lib/utils/token.d.ts.map +1 -1
- package/dist/lib/utils/token.js +2 -8
- package/dist/lib/utils/token.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.13.4-beta.63](https://github.com/agnostack/next-shopify/compare/v1.13.4-beta.62...v1.13.4-beta.63) (2023-11-29)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* wip ([55ed6ad](https://github.com/agnostack/next-shopify/commit/55ed6adb42d906f2cae5fbe1a0fc30dab98625cd))
|
|
7
|
+
|
|
8
|
+
## [1.13.4-beta.62](https://github.com/agnostack/next-shopify/compare/v1.13.4-beta.61...v1.13.4-beta.62) (2023-11-29)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* wip ([d8a8f16](https://github.com/agnostack/next-shopify/commit/d8a8f16104d5beb1465467f93528e2458ebee08b))
|
|
14
|
+
|
|
1
15
|
## [1.13.4-beta.61](https://github.com/agnostack/next-shopify/compare/v1.13.4-beta.60...v1.13.4-beta.61) (2023-11-29)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/proxy.js"],"names":[],"mappings":"AAsCO,
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/proxy.js"],"names":[],"mappings":"AAsCO,sHAgPN"}
|
|
@@ -18,25 +18,26 @@ const handleProxy = (serverRuntimeConfig, config) => (req, res, params) => tslib
|
|
|
18
18
|
var _a, _b;
|
|
19
19
|
const { generateReplacements } = config !== null && config !== void 0 ? config : {};
|
|
20
20
|
const { keyPairs, API_PATHS, APP_CONFIG, APP_BASE_URL, TARGET_SAFELIST, ORIGIN_SAFELIST, } = serverRuntimeConfig;
|
|
21
|
-
const _c = (_a = req.headers) !== null && _a !== void 0 ? _a : {}, { origin, 'x-forwarded-for': _forwardFor, 'x-forwarded-proto': _forwardProto, 'x-forwarded-host': forwardHost, 'x-proxy-origin': proxyOrigin } = _c, _headers = tslib_1.__rest(_c, ["origin", 'x-forwarded-for', 'x-forwarded-proto', 'x-forwarded-host', 'x-proxy-origin']);
|
|
22
|
-
const {
|
|
23
|
-
'x-public-key': apiKey, // THIS
|
|
24
|
-
'x-ephemeral-key': ephemeralPublicKey, // THIS
|
|
25
|
-
'x-authorization-timestamp': authTimestamp, // THIS
|
|
26
|
-
'x-extension-session': sessionToken, 'x-extension-point': extensionPoint, 'x-shop-domain': shopDomainHeader, 'x-shopify-shop-domain': shopifyShopDomainHeader, 'x-shopify-shop': shopHeader = shopifyShopDomainHeader !== null && shopifyShopDomainHeader !== void 0 ? shopifyShopDomainHeader : shopDomainHeader, 'x-shopify-app-id': shopifyAppId, 'x-app-id': appId = shopifyAppId,
|
|
21
|
+
const _c = (_a = req.headers) !== null && _a !== void 0 ? _a : {}, { origin, 'x-public-key': apiKey, 'x-ephemeral-key': ephemeralPublicKey, 'x-authorization-timestamp': customAuthTimestamp, 'x-authorization': customAuth, 'x-forwarded-for': _forwardFor, 'x-forwarded-proto': _forwardProto, 'x-forwarded-host': forwardHost, 'x-proxy-origin': proxyOrigin } = _c, _headers = tslib_1.__rest(_c, ["origin", 'x-public-key', 'x-ephemeral-key', 'x-authorization-timestamp', 'x-authorization', 'x-forwarded-for', 'x-forwarded-proto', 'x-forwarded-host', 'x-proxy-origin']);
|
|
22
|
+
const { 'x-extension-session': sessionToken, 'x-extension-point': extensionPoint, 'x-shop-domain': shopDomainHeader, 'x-shopify-shop-domain': shopifyShopDomainHeader, 'x-shopify-shop': shopHeader = shopifyShopDomainHeader !== null && shopifyShopDomainHeader !== void 0 ? shopifyShopDomainHeader : shopDomainHeader, 'x-shopify-app-id': shopifyAppId, 'x-app-id': appId = shopifyAppId,
|
|
27
23
|
// 'x-shopify-app-installation-id': shopifyAppInstallationId,
|
|
28
24
|
// 'x-app-installation-id': appInstallationId = shopifyAppInstallationId, // TODO: pass along installationId??
|
|
29
25
|
// TODO: pass along providerSetId??
|
|
30
26
|
} = _headers;
|
|
31
27
|
let targetPath;
|
|
32
28
|
try {
|
|
33
|
-
const [authProtocol, authSignature] = (0, shared_1.ensureString)(
|
|
34
|
-
const isVerifiable = (apiKey &&
|
|
29
|
+
const [authProtocol, authSignature] = (0, shared_1.ensureString)(customAuth).split(' ');
|
|
30
|
+
const isVerifiable = (apiKey &&
|
|
31
|
+
ephemeralPublicKey &&
|
|
32
|
+
(keyPairs === null || keyPairs === void 0 ? void 0 : keyPairs.shared) &&
|
|
33
|
+
customAuthTimestamp &&
|
|
34
|
+
authSignature &&
|
|
35
|
+
(authProtocol === 'HMAC-SHA256'));
|
|
35
36
|
let verificationKeys;
|
|
36
37
|
// NOTE raw request body is required for shopify's validation
|
|
37
38
|
const _rawBody = yield (0, raw_body_1.default)(req);
|
|
38
39
|
const rawBody = _rawBody.toString();
|
|
39
|
-
const parsedBody = JSON.parse(rawBody || '{}'); // NOTE:
|
|
40
|
+
const parsedBody = JSON.parse(rawBody || '{}'); // NOTE: parsedBody should be encrypted when isVerifiable
|
|
40
41
|
let decryptedBody = parsedBody;
|
|
41
42
|
// NOTE: GET requests are not always sending along origin
|
|
42
43
|
if ((0, shared_1.stringEmpty)(origin)) {
|
|
@@ -65,7 +66,7 @@ const handleProxy = (serverRuntimeConfig, config) => (req, res, params) => tslib
|
|
|
65
66
|
const { origin: target, hostname, pathname, search } = (0, shared_1.stringNotEmpty)(_targetUrl) ? new URL(_targetUrl) : {};
|
|
66
67
|
targetPath = [pathname, search].filter(shared_1.stringNotEmpty).join('');
|
|
67
68
|
const safelistedTarget = (0, shared_1.matchHostname)(hostname, Object.assign({ [new URL(APP_BASE_URL).hostname]: {
|
|
68
|
-
// HMMM: can we generate our own session token so as to not have to tell handleGraph/Rest to behave as offline?
|
|
69
|
+
// HMMM: can we generate our own session token (or use the current one) so as to not have to tell handleGraph/Rest to behave as offline?
|
|
69
70
|
// headers: {
|
|
70
71
|
// Authorization: 'Bearer {{setting.zendesk.token}}',
|
|
71
72
|
// },
|
|
@@ -80,17 +81,9 @@ const handleProxy = (serverRuntimeConfig, config) => (req, res, params) => tslib
|
|
|
80
81
|
if (!shop || !host || !extensionPoint || !signature || !proxyEncoded) {
|
|
81
82
|
return res.status(400).json({ message: 'Invalid or missing headers', extensionPoint });
|
|
82
83
|
}
|
|
83
|
-
// TODO: handle encrypt/decrypy only if !isShopifyOriginOrRelative??
|
|
84
84
|
const isShopifyOriginOrRelative = (0, shared_1.stringNotEmpty)((0, shared_1.ensureString)(path_prefix).startsWith('http')
|
|
85
85
|
? (0, shared_1.sanitizeShop)(new URL(path_prefix).hostname)
|
|
86
86
|
: path_prefix);
|
|
87
|
-
console.log(`>>> > handleProxy > isShopifyOriginOrRelative: '${targetPath}'`, {
|
|
88
|
-
path_prefix,
|
|
89
|
-
hostname,
|
|
90
|
-
fooName: new URL(APP_BASE_URL).hostname,
|
|
91
|
-
targetParam,
|
|
92
|
-
isShopifyOriginOrRelative,
|
|
93
|
-
});
|
|
94
87
|
// TODO: once Shopify fixes CORS issue when origin is cdn.shopify.com, update this!
|
|
95
88
|
if (!verifyAppProxySignature(signature, verifiable, isShopifyOriginOrRelative ? APP_CONFIG.apiSecretKey : timestamp)) {
|
|
96
89
|
return res.status(403).json({ message: 'Invalid signature' });
|
|
@@ -113,7 +106,7 @@ const handleProxy = (serverRuntimeConfig, config) => (req, res, params) => tslib
|
|
|
113
106
|
}
|
|
114
107
|
// TEMP!!! remove isVerifiable check once webwidget moved to react
|
|
115
108
|
if (isVerifiable) {
|
|
116
|
-
if (!apiKey || !ephemeralPublicKey || !(keyPairs === null || keyPairs === void 0 ? void 0 : keyPairs.shared) || !
|
|
109
|
+
if (!apiKey || !ephemeralPublicKey || !(keyPairs === null || keyPairs === void 0 ? void 0 : keyPairs.shared) || !customAuthTimestamp || !authSignature || (authProtocol !== 'HMAC-SHA256')) {
|
|
117
110
|
return res.status(401).json({ message: 'Invalid or missing authorization' });
|
|
118
111
|
}
|
|
119
112
|
verificationKeys = yield shared_1.subtle.getVerificationKeys({
|
|
@@ -123,16 +116,14 @@ const handleProxy = (serverRuntimeConfig, config) => (req, res, params) => tslib
|
|
|
123
116
|
if (!verificationKeys) {
|
|
124
117
|
return res.status(412).json({ message: 'Invalid or missing verification' });
|
|
125
118
|
}
|
|
126
|
-
const verificationPayload = (0, shared_1.objectToSortedString)(Object.assign({ method: (0, shared_1.getRequestMethod)(rawBody, req.method), timestamp:
|
|
119
|
+
const verificationPayload = (0, shared_1.objectToSortedString)(Object.assign({ method: (0, shared_1.getRequestMethod)(rawBody, req.method), timestamp: customAuthTimestamp, body: parsedBody }, (0, shared_1.normalizeURIParts)(targetPath)));
|
|
127
120
|
const isValid = yield shared_1.subtle.verifyHMAC(verificationPayload, verificationKeys.derivedHMACKey, authSignature);
|
|
128
121
|
if (!isValid) {
|
|
129
122
|
return res.status(412).json({ message: 'Invalid or missing verification' });
|
|
130
123
|
}
|
|
131
124
|
if (rawBody) {
|
|
132
|
-
console.log(`>>> > handleProxy > rawBody: '${targetPath}'`, rawBody);
|
|
133
125
|
const decryptedMessage = yield shared_1.subtle.decryptMessage(parsedBody, verificationKeys.derivedSecretKey);
|
|
134
126
|
decryptedBody = JSON.parse(decryptedMessage !== null && decryptedMessage !== void 0 ? decryptedMessage : '{}');
|
|
135
|
-
console.log(`>>> > handleProxy > decryptedBody: '${targetPath}'`, decryptedBody);
|
|
136
127
|
}
|
|
137
128
|
}
|
|
138
129
|
const _prepareHeaders = (0, utils_1.prepareHeaders)(serverRuntimeConfig);
|
|
@@ -149,42 +140,18 @@ const handleProxy = (serverRuntimeConfig, config) => (req, res, params) => tslib
|
|
|
149
140
|
req.headers = headers;
|
|
150
141
|
}
|
|
151
142
|
proxy.on('proxyReq', (proxyReq, proxyReqRequest, proxyReqResponse, options) => {
|
|
152
|
-
console.log(`>>> > proxy.on > proxyReq:`, { decryptedBody, proxyReqRequestBody: proxyReqRequest.body, proxyReqRequest });
|
|
153
|
-
// Modify the request body before sending it to the target
|
|
154
143
|
if ((0, shared_1.objectNotEmpty)(decryptedBody)) {
|
|
155
144
|
const bodyData = JSON.stringify(decryptedBody);
|
|
156
|
-
console.log(`>>> > proxy.on > proxyReq > bodyData:`, bodyData);
|
|
157
145
|
proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));
|
|
158
146
|
proxyReq.write(bodyData);
|
|
159
|
-
console.log(`>>> > proxy.on > proxyReq > AFTER 1`);
|
|
160
147
|
}
|
|
161
|
-
console.log(`>>> > proxy.on > proxyReq > AFTER 2`);
|
|
162
148
|
});
|
|
163
|
-
// proxy.on('proxyRes', function (proxyRes, req, res) {
|
|
164
|
-
// console.log(`>>> > proxy.on > proxyRes`)
|
|
165
|
-
// var body = []
|
|
166
|
-
// proxyRes.on('data', function (chunk) {
|
|
167
|
-
// body.push(chunk)
|
|
168
|
-
// })
|
|
169
|
-
// proxyRes.on('end', function () {
|
|
170
|
-
// body = Buffer.concat(body).toString()
|
|
171
|
-
// console.log("res from proxied server:", body)
|
|
172
|
-
// res.end(JSON.stringify(decryptedBody))
|
|
173
|
-
// return resolve()
|
|
174
|
-
// })
|
|
175
|
-
// })
|
|
176
149
|
proxy.on('proxyRes', function (proxyRes, proxyResRequest, proxyResResponse) {
|
|
177
|
-
console.log(`>>> > proxy.on > proxyRes:`);
|
|
178
150
|
(0, node_http_proxy_json_1.default)(proxyResResponse, proxyRes, function (proxyResBody) {
|
|
179
|
-
console.log(`>>> > proxy.on > proxyRes > modifyJSONProxy > proxyResBody:`, proxyResBody);
|
|
180
151
|
if (!proxyResBody || !isVerifiable || !verificationKeys) {
|
|
181
152
|
return proxyResBody;
|
|
182
153
|
}
|
|
183
|
-
return shared_1.subtle.encryptMessage(JSON.stringify(proxyResBody), verificationKeys.derivedSecretKey)
|
|
184
|
-
.then((encrypedResBody) => {
|
|
185
|
-
console.log(`>>> > proxy.on > proxyRes.then > encrypedResBody:`, encrypedResBody);
|
|
186
|
-
return encrypedResBody;
|
|
187
|
-
});
|
|
154
|
+
return shared_1.subtle.encryptMessage(JSON.stringify(proxyResBody), verificationKeys.derivedSecretKey);
|
|
188
155
|
});
|
|
189
156
|
});
|
|
190
157
|
proxy.once('error', (error) => {
|
|
@@ -195,7 +162,6 @@ const handleProxy = (serverRuntimeConfig, config) => (req, res, params) => tslib
|
|
|
195
162
|
target,
|
|
196
163
|
timeout: PROXY_TIMEOUT,
|
|
197
164
|
proxyTimeout: PROXY_TIMEOUT,
|
|
198
|
-
// selfHandleResponse : true, // HERE
|
|
199
165
|
followRedirects: false,
|
|
200
166
|
changeOrigin: true,
|
|
201
167
|
secure: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/proxy.js"],"names":[],"mappings":";;;;AAAA,sDAAsD;AACtD,sEAAkC;AAClC,oEAAkC;AAClC,gEAAiC;AACjC,wFAAkD;AAElD,uCAKoB;AACpB,4CAgBwB;AAExB,MAAM,aAAa,GAAG,IAAI,CAAA,CAAC,kBAAkB;AAE7C,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE;IACpE,MAAM,IAAI,GAAG,IAAA,oBAAY,EAAC,IAAA,6BAAoB,EAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAA;IAEvE,OAAO,IAAA,qBAAa,EAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACvC,CAAC,CAAA;AAEM,MAAM,WAAW,GAAG,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAO,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;;IACrF,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAA;IAC7C,MAAM,EACJ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,GAAG,mBAAmB,CAAA;IACvB,MAAM,
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/proxy.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/token.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/api/token.js"],"names":[],"mappings":"AAcO,qHAuHN"}
|
|
@@ -14,13 +14,7 @@ const handleSessionToken = (serverRuntimeConfig, signingData) => {
|
|
|
14
14
|
return (req, res) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
15
15
|
var _a, _b;
|
|
16
16
|
const { host } = (_a = req.query) !== null && _a !== void 0 ? _a : {};
|
|
17
|
-
const _c = (_b = req.headers) !== null && _b !== void 0 ? _b : {}, {
|
|
18
|
-
// origin, // TODO: should we bring in next-cors??
|
|
19
|
-
// authorization,
|
|
20
|
-
// 'x-public-key': apiKey,
|
|
21
|
-
// 'x-ephemeral-key': ephemeralPublicKey,
|
|
22
|
-
// 'x-authorization-timestamp': authTimestamp,
|
|
23
|
-
'x-shopify-app-installation-id': shopifyAppInstallationId, 'x-shopify-app-id': shopifyAppId, 'x-app-installation-id': appInstallationId = shopifyAppInstallationId,
|
|
17
|
+
const _c = (_b = req.headers) !== null && _b !== void 0 ? _b : {}, { 'x-shopify-app-installation-id': shopifyAppInstallationId, 'x-shopify-app-id': shopifyAppId, 'x-app-installation-id': appInstallationId = shopifyAppInstallationId,
|
|
24
18
|
// TODO: pass along providerSetId??
|
|
25
19
|
'x-app-id': appId = shopifyAppId, 'x-key-id': keyId, // NOTE: this is the Client in ZD token for messenger auth // NOTE/TODO: keyPairs.messenger need to move to app metafields instead
|
|
26
20
|
'x-shop-domain': shopDomain, 'x-shopify-shop-domain': shopifyShopDomain, 'x-shopify-shop': shop = shopifyShopDomain !== null && shopifyShopDomain !== void 0 ? shopifyShopDomain : shopDomain } = _c, headers = tslib_1.__rest(_c, ['x-shopify-app-installation-id', 'x-shopify-app-id', 'x-app-installation-id', 'x-app-id', 'x-key-id', 'x-shop-domain', 'x-shopify-shop-domain', 'x-shopify-shop']);
|
|
@@ -31,47 +25,11 @@ const handleSessionToken = (serverRuntimeConfig, signingData) => {
|
|
|
31
25
|
}
|
|
32
26
|
// HMMMMMMM: not sure about this aud/kid
|
|
33
27
|
let aud = keyId; // NOTE: Client ID of the receiving app
|
|
34
|
-
console.log(`>>> > return > aud:`, { aud });
|
|
35
28
|
// NOTE raw request body is required for shopify's validation
|
|
36
29
|
const _rawBody = yield (0, raw_body_1.default)(req);
|
|
37
30
|
const rawBody = _rawBody.toString();
|
|
38
|
-
|
|
39
|
-
const parsedBody = JSON.parse(rawBody || '{}'); // NOTE: parsedody should be encrypted when isVerifiable
|
|
31
|
+
const parsedBody = JSON.parse(rawBody || '{}'); // NOTE: parsedBody should be encrypted when isVerifiable
|
|
40
32
|
let decryptedBody = parsedBody;
|
|
41
|
-
// const [authProtocol, authSignature] = ensureString(authorization).split(' ')
|
|
42
|
-
// const isVerifiable = (apiKey && ephemeralPublicKey && keyPairs?.shared && authTimestamp && authSignature && (authProtocol === 'HMAC-SHA256'))
|
|
43
|
-
// let verificationKeys
|
|
44
|
-
// TEMP!!! remove isVerifiable check once webwidget moved to react
|
|
45
|
-
// if (isVerifiable) {
|
|
46
|
-
// if (!apiKey || !ephemeralPublicKey || !keyPairs?.shared || !authTimestamp || !authSignature || (authProtocol !== 'HMAC-SHA256')) {
|
|
47
|
-
// return res.status(401).json({ message: 'Invalid or missing authorization' })
|
|
48
|
-
// }
|
|
49
|
-
// verificationKeys = await subtle.getVerificationKeys({
|
|
50
|
-
// publicKey: ephemeralPublicKey,
|
|
51
|
-
// privateKey: keyPairs.shared.privateKey,
|
|
52
|
-
// })
|
|
53
|
-
// if (!verificationKeys) {
|
|
54
|
-
// return res.status(412).json({ message: 'Invalid or missing verification' })
|
|
55
|
-
// }
|
|
56
|
-
// const verificationPayload = objectToSortedString({
|
|
57
|
-
// method: getRequestMethod(parsedBody, req.method),
|
|
58
|
-
// timestamp: authTimestamp,
|
|
59
|
-
// body: parsedBody,
|
|
60
|
-
// ...normalizeURIParts(req.url),
|
|
61
|
-
// })
|
|
62
|
-
// const isValid = await subtle.verifyHMAC(
|
|
63
|
-
// verificationPayload,
|
|
64
|
-
// verificationKeys.derivedHMACKey,
|
|
65
|
-
// authSignature
|
|
66
|
-
// )
|
|
67
|
-
// if (!isValid) {
|
|
68
|
-
// return res.status(412).json({ message: 'Invalid or missing verification' })
|
|
69
|
-
// }
|
|
70
|
-
// if (parsedBody) {
|
|
71
|
-
// const decryptedMessage = await subtle.decryptMessage(parsedBody, verificationKeys.derivedSecretKey)
|
|
72
|
-
// decryptedBody = JSON.parse(decryptedMessage ?? '{}')
|
|
73
|
-
// }
|
|
74
|
-
// }
|
|
75
33
|
// NOTE/TODO: keyPairs.messenger need to move to app metafields instead
|
|
76
34
|
let signingSecret;
|
|
77
35
|
if (keyId && (keyPairs === null || keyPairs === void 0 ? void 0 : keyPairs.messenger) && (keyId == keyPairs.messenger)) {
|
|
@@ -83,10 +41,8 @@ const handleSessionToken = (serverRuntimeConfig, signingData) => {
|
|
|
83
41
|
const appClaims = Object.entries(headers).reduce((_appClaims, [headerKey, headerValue]) => (Object.assign(Object.assign({}, _appClaims), headerKey.startsWith('x-shopify-app-metafield-') && {
|
|
84
42
|
[(0, shared_1.snakecase)(headerKey.replace('x-shopify-app-metafield-', ''))]: headerValue,
|
|
85
43
|
})), Object.assign(Object.assign({}, appId && { app_id: (0, shared_1.normalizeShopifyId)(appId).id }), appInstallationId && { installation_id: (0, shared_1.normalizeShopifyId)(appInstallationId).id }));
|
|
86
|
-
console.log(`>>> > token.js > decryptedBody:`, decryptedBody);
|
|
87
44
|
const _d = decryptedBody !== null && decryptedBody !== void 0 ? decryptedBody : {}, { sub, aud: _aud } = _d, body = tslib_1.__rest(_d, ["sub", "aud"]);
|
|
88
45
|
let { dest, iss, sid, jti } = body, tokenBody = tslib_1.__rest(body, ["dest", "iss", "sid", "jti"]);
|
|
89
|
-
console.log(`>>> > next-shopify.tokenBody:`, { tokenBody, sub });
|
|
90
46
|
if ((0, shared_1.stringEmpty)(dest)) {
|
|
91
47
|
dest = shop;
|
|
92
48
|
}
|
|
@@ -114,16 +70,9 @@ const handleSessionToken = (serverRuntimeConfig, signingData) => {
|
|
|
114
70
|
signingSecret = (0, utils_1.generateHMAC)((0, shared_1.objectToSortedString)(payload), APP_CONFIG.apiSecretKey);
|
|
115
71
|
}
|
|
116
72
|
const token = (0, jsonwebtoken_1.sign)(payload, signingSecret, signingData);
|
|
117
|
-
console.log(`>>> > token.js > token:`, token);
|
|
118
73
|
if ((0, shared_1.stringEmpty)(token)) {
|
|
119
74
|
throw new Error('Error signing token');
|
|
120
75
|
}
|
|
121
|
-
// console.log(`>>> > return > isVerifiable:`, {isVerifiable, verificationKeys})
|
|
122
|
-
// if (isVerifiable && verificationKeys) {
|
|
123
|
-
// const recrypted = await subtle.encryptMessage(JSON.stringify({ token }), verificationKeys.derivedSecretKey)
|
|
124
|
-
// console.log(`>>> > return > recrypted:`, recrypted)
|
|
125
|
-
// return res.status(200).json(recrypted)
|
|
126
|
-
// }
|
|
127
76
|
return res.status(200).json({ token });
|
|
128
77
|
}
|
|
129
78
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/token.js"],"names":[],"mappings":";;;;AAAA,gEAAiC;AACjC,yCAAkC;AAClC,+CAAmC;AACnC,+BAAmC;AAEnC,uCAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../../src/lib/handlers/api/token.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/token.js"],"names":[],"mappings":"AAUO;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/token.js"],"names":[],"mappings":"AAUO;;;;;;;;;;;;;;;GA6BN"}
|
package/dist/lib/utils/token.js
CHANGED
|
@@ -19,17 +19,11 @@ const getVerifiedSessionData = (serverRuntimeConfig) => (sessionToken, { shop, h
|
|
|
19
19
|
throw new shared_1.ShopifySessionInvalidError('Unauthorized shop or host');
|
|
20
20
|
}
|
|
21
21
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
22
|
-
const { iat, nbf, exp } = decoded, verifiable = tslib_1.__rest(decoded
|
|
23
|
-
// HMMM: explore update for HMAC secret?
|
|
24
|
-
// const hmac = generateHMAC(objectToSortedString(verifiable), secret?? APP_CONFIG.apiSecretKey)
|
|
25
|
-
, ["iat", "nbf", "exp"]);
|
|
26
|
-
// HMMM: explore update for HMAC secret?
|
|
27
|
-
// const hmac = generateHMAC(objectToSortedString(verifiable), secret?? APP_CONFIG.apiSecretKey)
|
|
22
|
+
const { iat, nbf, exp } = decoded, verifiable = tslib_1.__rest(decoded, ["iat", "nbf", "exp"]);
|
|
28
23
|
const hmac = (0, crypto_1.generateHMAC)((0, shared_1.objectToSortedString)(verifiable), APP_CONFIG.apiSecretKey);
|
|
29
24
|
const verified = (0, jsonwebtoken_1.verify)(sessionToken, hmac);
|
|
30
|
-
console.log(`>>> > getVerifiedSessionData > verified:`, verified);
|
|
31
25
|
if (verified == undefined) {
|
|
32
|
-
throw new shared_1.ShopifySessionInvalidError('
|
|
26
|
+
throw new shared_1.ShopifySessionInvalidError('Verified Undefined');
|
|
33
27
|
}
|
|
34
28
|
}
|
|
35
29
|
catch (_error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/lib/utils/token.js"],"names":[],"mappings":";;;;AAAA,+CAAqC;AAErC,yCAIqB;AACrB,qCAAuC;AAEvC,mHAAmH;AAC5G,MAAM,sBAAsB,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAO,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;IACpG,MAAM,EAAC,UAAU,EAAE,GAAG,mBAAmB,CAAA;IAEzC,IAAI,IAAI,CAAA;IACR,IAAI;QACF,kFAAkF;QAClF,6DAA6D;QAC7D,MAAM,KAA+B,IAAA,uBAAc,EAAC,YAAY,CAAC,EAA3D,EAAE,OAAO,EAAE,KAAK,OAA2C,EAAtC,KAAK,sBAA1B,oBAA4B,CAA+B,CAAA;QACjE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;QACtD,IAAI,GAAG,KAAK,CAAA;QAEZ,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,EAAE;YACpD,MAAM,IAAI,mCAA0B,CAAC,2BAA2B,CAAC,CAAA;SAClE;QAED,6DAA6D;QAC7D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAoB,OAAO,EAAtB,UAAU,kBAAK,OAAO
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/lib/utils/token.js"],"names":[],"mappings":";;;;AAAA,+CAAqC;AAErC,yCAIqB;AACrB,qCAAuC;AAEvC,mHAAmH;AAC5G,MAAM,sBAAsB,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAO,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;IACpG,MAAM,EAAC,UAAU,EAAE,GAAG,mBAAmB,CAAA;IAEzC,IAAI,IAAI,CAAA;IACR,IAAI;QACF,kFAAkF;QAClF,6DAA6D;QAC7D,MAAM,KAA+B,IAAA,uBAAc,EAAC,YAAY,CAAC,EAA3D,EAAE,OAAO,EAAE,KAAK,OAA2C,EAAtC,KAAK,sBAA1B,oBAA4B,CAA+B,CAAA;QACjE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;QACtD,IAAI,GAAG,KAAK,CAAA;QAEZ,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,EAAE;YACpD,MAAM,IAAI,mCAA0B,CAAC,2BAA2B,CAAC,CAAA;SAClE;QAED,6DAA6D;QAC7D,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAoB,OAAO,EAAtB,UAAU,kBAAK,OAAO,EAA1C,qBAAgC,CAAU,CAAA;QAEhD,MAAM,IAAI,GAAG,IAAA,qBAAY,EAAC,IAAA,6BAAoB,EAAC,UAAU,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAA;QACpF,MAAM,QAAQ,GAAG,IAAA,qBAAM,EAAC,YAAY,EAAE,IAAI,CAAC,CAAA;QAC3C,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,MAAM,IAAI,mCAA0B,CAAC,oBAAoB,CAAC,CAAA;SAC3D;KACF;IAAC,OAAO,MAAM,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAA;QACtD,MAAM,IAAI,mCAA0B,CAAC,+BAA+B,CAAC,CAAA;KACtE;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA,CAAA;AA7BY,QAAA,sBAAsB,0BA6BlC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agnostack/next-shopify",
|
|
3
|
-
"version": "1.13.4-beta.
|
|
3
|
+
"version": "1.13.4-beta.63",
|
|
4
4
|
"author": "agnoStack Dev <developers@agnostack.com> (https://agnostack.com)",
|
|
5
5
|
"owner": "agnoStack",
|
|
6
6
|
"description": "Please contact agnoStack via info@agnostack.com for any questions",
|