@thirdweb-dev/service-utils 0.2.0-nightly-ddb3dabe-20230714192407 → 0.2.0-nightly-42d9ab68-20230714223422
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/cf-worker/dist/thirdweb-dev-service-utils-cf-worker.cjs.dev.js +3 -2
- package/cf-worker/dist/thirdweb-dev-service-utils-cf-worker.cjs.prod.js +3 -2
- package/cf-worker/dist/thirdweb-dev-service-utils-cf-worker.esm.js +3 -2
- package/dist/declarations/src/cf-worker/index.d.ts.map +1 -1
- package/dist/declarations/src/core/api.d.ts.map +1 -1
- package/dist/declarations/src/core/authorize/index.d.ts +1 -0
- package/dist/declarations/src/core/authorize/index.d.ts.map +1 -1
- package/dist/declarations/src/core/authorize/types.d.ts +1 -1
- package/dist/declarations/src/core/authorize/types.d.ts.map +1 -1
- package/dist/declarations/src/core/types.d.ts +1 -0
- package/dist/declarations/src/core/types.d.ts.map +1 -1
- package/dist/declarations/src/node/index.d.ts.map +1 -1
- package/dist/{index-175beb0e.cjs.prod.js → index-03e2bf97.cjs.dev.js} +23 -9
- package/dist/{index-c32e136a.cjs.dev.js → index-2facafef.cjs.prod.js} +23 -9
- package/dist/{index-5476722b.esm.js → index-e7c3b3be.esm.js} +23 -9
- package/node/dist/thirdweb-dev-service-utils-node.cjs.dev.js +9 -5
- package/node/dist/thirdweb-dev-service-utils-node.cjs.prod.js +9 -5
- package/node/dist/thirdweb-dev-service-utils-node.esm.js +9 -5
- package/package.json +1 -1
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
|
-
var index = require('../../dist/index-
|
5
|
+
var index = require('../../dist/index-03e2bf97.cjs.dev.js');
|
6
6
|
var services = require('../../dist/services-a3f36057.cjs.dev.js');
|
7
7
|
|
8
8
|
const DEFAULT_CACHE_TTL_SECONDS = 60;
|
@@ -94,7 +94,8 @@ async function extractAuthorizationData(authInput) {
|
|
94
94
|
origin,
|
95
95
|
bundleId,
|
96
96
|
secretKeyHash,
|
97
|
-
targetAddress: authInput.targetAddress
|
97
|
+
targetAddress: authInput.targetAddress,
|
98
|
+
enforceAuth: authInput.enforcedAuth
|
98
99
|
};
|
99
100
|
}
|
100
101
|
async function hashSecretKey(secretKey) {
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
|
-
var index = require('../../dist/index-
|
5
|
+
var index = require('../../dist/index-2facafef.cjs.prod.js');
|
6
6
|
var services = require('../../dist/services-9e185105.cjs.prod.js');
|
7
7
|
|
8
8
|
const DEFAULT_CACHE_TTL_SECONDS = 60;
|
@@ -94,7 +94,8 @@ async function extractAuthorizationData(authInput) {
|
|
94
94
|
origin,
|
95
95
|
bundleId,
|
96
96
|
secretKeyHash,
|
97
|
-
targetAddress: authInput.targetAddress
|
97
|
+
targetAddress: authInput.targetAddress,
|
98
|
+
enforceAuth: authInput.enforcedAuth
|
98
99
|
};
|
99
100
|
}
|
100
101
|
async function hashSecretKey(secretKey) {
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { a as authorize } from '../../dist/index-
|
1
|
+
import { a as authorize } from '../../dist/index-e7c3b3be.esm.js';
|
2
2
|
export { b as SERVICES, S as SERVICE_DEFINITIONS, a as SERVICE_NAMES, g as getServiceByName } from '../../dist/services-86283509.esm.js';
|
3
3
|
|
4
4
|
const DEFAULT_CACHE_TTL_SECONDS = 60;
|
@@ -90,7 +90,8 @@ async function extractAuthorizationData(authInput) {
|
|
90
90
|
origin,
|
91
91
|
bundleId,
|
92
92
|
secretKeyHash,
|
93
|
-
targetAddress: authInput.targetAddress
|
93
|
+
targetAddress: authInput.targetAddress,
|
94
|
+
enforceAuth: authInput.enforcedAuth
|
94
95
|
};
|
95
96
|
}
|
96
97
|
async function hashSecretKey(secretKey) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"../../../../src/cf-worker","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EAAkB,iBAAiB,EAAE,uBAAoB;AAGrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mCAAgC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAsB;AAEnD,oCAAiC;AAEjC,KAAK,mBAAmB,GAAG,iBAAiB,GAAG;IAC7C,OAAO,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,gBAAgB,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAIF,KAAK,SAAS,GAAG,aAAa,GAAG;IAC/B,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,wBAAsB,eAAe,CACnC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,mBAAmB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CA0C9B;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"../../../../src/cf-worker","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,KAAK,EAAkB,iBAAiB,EAAE,uBAAoB;AAGrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mCAAgC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAsB;AAEnD,oCAAiC;AAEjC,KAAK,mBAAmB,GAAG,iBAAiB,GAAG;IAC7C,OAAO,EAAE,WAAW,CAAC;IACrB,GAAG,EAAE,gBAAgB,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAIF,KAAK,SAAS,GAAG,aAAa,GAAG;IAC/B,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAEF,wBAAsB,eAAe,CACnC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,mBAAmB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CA0C9B;AAqED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,mBAIpD;AAED,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,UAEpE"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"../../../../src/core","sources":["api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAmB;AAE9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,WAAW,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,WAAW,CAAC,
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"../../../../src/core","sources":["api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAmB;AAE9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,WAAW,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,WAAW,CAAC,CAgBtB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"../../../../../src/core/authorize","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EAElB,kBAAe;AAGhB,OAAO,EAAE,mBAAmB,EAAE,mBAAgB;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"../../../../../src/core/authorize","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,EAElB,kBAAe;AAGhB,OAAO,EAAE,mBAAmB,EAAE,mBAAgB;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,KAAK,YAAY,GAAG;IAClB,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtE,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AASF,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,kBAAkB,EAC5B,aAAa,EAAE,iBAAiB,EAChC,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CA+H9B"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"../../../../../src/core/authorize","sources":["types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAe;AAExC,MAAM,MAAM,mBAAmB,GAC3B;IACE,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,cAAc,CAAC;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"../../../../../src/core/authorize","sources":["types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,kBAAe;AAExC,MAAM,MAAM,mBAAmB,GAC3B;IACE,UAAU,EAAE,IAAI,CAAC;IACjB,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC,GACD;IACE,UAAU,EAAE,KAAK,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"../../../../src/core","sources":["types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAE1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"../../../../src/core","sources":["types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAE1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAElC,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"../../../../src/node","sources":["index.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,mCAA0B;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAoB;AAErD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mCAAgC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAsB;AAEnD,oCAAiC;AAEjC,KAAK,iBAAiB,GAAG,iBAAiB,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG;IACtC,GAAG,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,wBAAsB,aAAa,CACjC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,iBAAiB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAsB9B;AAaD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,GACnB,kBAAkB,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"../../../../src/node","sources":["index.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,mCAA0B;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAoB;AAErD,OAAO,KAAK,EAAE,mBAAmB,EAAE,mCAAgC;AACnE,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAsB;AAEnD,oCAAiC;AAEjC,KAAK,iBAAiB,GAAG,iBAAiB,CAAC;AAE3C,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG;IACtC,GAAG,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,wBAAsB,aAAa,CACjC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,iBAAiB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAsB9B;AAaD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAyEpB;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,UAE9C;AAED,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,UAEpE"}
|
@@ -6,10 +6,8 @@ async function fetchKeyMetadataFromApi(clientId, config) {
|
|
6
6
|
serviceScope,
|
7
7
|
serviceApiKey
|
8
8
|
} = config;
|
9
|
-
const url =
|
10
|
-
url
|
11
|
-
url.searchParams.set("scope", serviceScope);
|
12
|
-
const response = await fetch(url.toString(), {
|
9
|
+
const url = `${apiUrl}/v1/keys/use?clientId=${clientId}&scope=${serviceScope}`;
|
10
|
+
const response = await fetch(url, {
|
13
11
|
method: "GET",
|
14
12
|
headers: {
|
15
13
|
"x-service-api-key": serviceApiKey,
|
@@ -159,8 +157,24 @@ function authorizeService(apiKeyMetadata, serviceConfig, authorizationPayload) {
|
|
159
157
|
}
|
160
158
|
|
161
159
|
async function authorize(authData, serviceConfig, cacheOptions) {
|
160
|
+
const {
|
161
|
+
clientId,
|
162
|
+
targetAddress,
|
163
|
+
enforceAuth,
|
164
|
+
secretKeyHash
|
165
|
+
} = authData;
|
166
|
+
|
167
|
+
// BACKWARDS COMPAT: if auth not enforced and
|
168
|
+
// we don't have auth credentials bypass
|
169
|
+
if (!enforceAuth && !clientId && !secretKeyHash) {
|
170
|
+
return {
|
171
|
+
authorized: true,
|
172
|
+
apiKeyMeta: null
|
173
|
+
};
|
174
|
+
}
|
175
|
+
|
162
176
|
// if we don't have a client id at this point we can't authorize
|
163
|
-
if (!
|
177
|
+
if (!clientId) {
|
164
178
|
return {
|
165
179
|
authorized: false,
|
166
180
|
status: 401,
|
@@ -172,7 +186,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
172
186
|
// if we have cache options we want to check the cache first
|
173
187
|
if (cacheOptions) {
|
174
188
|
try {
|
175
|
-
const cachedKey = await cacheOptions.get(
|
189
|
+
const cachedKey = await cacheOptions.get(clientId);
|
176
190
|
if (cachedKey) {
|
177
191
|
const parsed = JSON.parse(cachedKey);
|
178
192
|
if ("updatedAt" in parsed) {
|
@@ -200,7 +214,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
200
214
|
const {
|
201
215
|
data,
|
202
216
|
error
|
203
|
-
} = await fetchKeyMetadataFromApi(
|
217
|
+
} = await fetchKeyMetadataFromApi(clientId, serviceConfig);
|
204
218
|
if (error) {
|
205
219
|
return {
|
206
220
|
authorized: false,
|
@@ -222,7 +236,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
222
236
|
// cache the retrieved key if we have cache options
|
223
237
|
if (cacheOptions) {
|
224
238
|
// we await this always because it can be a promise or not
|
225
|
-
await cacheOptions.put(
|
239
|
+
await cacheOptions.put(clientId, data);
|
226
240
|
}
|
227
241
|
} catch (err) {
|
228
242
|
console.warn("failed to fetch key metadata from api", err);
|
@@ -255,7 +269,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
255
269
|
|
256
270
|
// if we've made it this far we need to check service specific authorization
|
257
271
|
const serviceAuth = authorizeService(apiKeyMeta, serviceConfig, {
|
258
|
-
targetAddress
|
272
|
+
targetAddress
|
259
273
|
});
|
260
274
|
if (!serviceAuth.authorized) {
|
261
275
|
return {
|
@@ -6,10 +6,8 @@ async function fetchKeyMetadataFromApi(clientId, config) {
|
|
6
6
|
serviceScope,
|
7
7
|
serviceApiKey
|
8
8
|
} = config;
|
9
|
-
const url =
|
10
|
-
url
|
11
|
-
url.searchParams.set("scope", serviceScope);
|
12
|
-
const response = await fetch(url.toString(), {
|
9
|
+
const url = `${apiUrl}/v1/keys/use?clientId=${clientId}&scope=${serviceScope}`;
|
10
|
+
const response = await fetch(url, {
|
13
11
|
method: "GET",
|
14
12
|
headers: {
|
15
13
|
"x-service-api-key": serviceApiKey,
|
@@ -159,8 +157,24 @@ function authorizeService(apiKeyMetadata, serviceConfig, authorizationPayload) {
|
|
159
157
|
}
|
160
158
|
|
161
159
|
async function authorize(authData, serviceConfig, cacheOptions) {
|
160
|
+
const {
|
161
|
+
clientId,
|
162
|
+
targetAddress,
|
163
|
+
enforceAuth,
|
164
|
+
secretKeyHash
|
165
|
+
} = authData;
|
166
|
+
|
167
|
+
// BACKWARDS COMPAT: if auth not enforced and
|
168
|
+
// we don't have auth credentials bypass
|
169
|
+
if (!enforceAuth && !clientId && !secretKeyHash) {
|
170
|
+
return {
|
171
|
+
authorized: true,
|
172
|
+
apiKeyMeta: null
|
173
|
+
};
|
174
|
+
}
|
175
|
+
|
162
176
|
// if we don't have a client id at this point we can't authorize
|
163
|
-
if (!
|
177
|
+
if (!clientId) {
|
164
178
|
return {
|
165
179
|
authorized: false,
|
166
180
|
status: 401,
|
@@ -172,7 +186,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
172
186
|
// if we have cache options we want to check the cache first
|
173
187
|
if (cacheOptions) {
|
174
188
|
try {
|
175
|
-
const cachedKey = await cacheOptions.get(
|
189
|
+
const cachedKey = await cacheOptions.get(clientId);
|
176
190
|
if (cachedKey) {
|
177
191
|
const parsed = JSON.parse(cachedKey);
|
178
192
|
if ("updatedAt" in parsed) {
|
@@ -200,7 +214,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
200
214
|
const {
|
201
215
|
data,
|
202
216
|
error
|
203
|
-
} = await fetchKeyMetadataFromApi(
|
217
|
+
} = await fetchKeyMetadataFromApi(clientId, serviceConfig);
|
204
218
|
if (error) {
|
205
219
|
return {
|
206
220
|
authorized: false,
|
@@ -222,7 +236,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
222
236
|
// cache the retrieved key if we have cache options
|
223
237
|
if (cacheOptions) {
|
224
238
|
// we await this always because it can be a promise or not
|
225
|
-
await cacheOptions.put(
|
239
|
+
await cacheOptions.put(clientId, data);
|
226
240
|
}
|
227
241
|
} catch (err) {
|
228
242
|
console.warn("failed to fetch key metadata from api", err);
|
@@ -255,7 +269,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
255
269
|
|
256
270
|
// if we've made it this far we need to check service specific authorization
|
257
271
|
const serviceAuth = authorizeService(apiKeyMeta, serviceConfig, {
|
258
|
-
targetAddress
|
272
|
+
targetAddress
|
259
273
|
});
|
260
274
|
if (!serviceAuth.authorized) {
|
261
275
|
return {
|
@@ -4,10 +4,8 @@ async function fetchKeyMetadataFromApi(clientId, config) {
|
|
4
4
|
serviceScope,
|
5
5
|
serviceApiKey
|
6
6
|
} = config;
|
7
|
-
const url =
|
8
|
-
url
|
9
|
-
url.searchParams.set("scope", serviceScope);
|
10
|
-
const response = await fetch(url.toString(), {
|
7
|
+
const url = `${apiUrl}/v1/keys/use?clientId=${clientId}&scope=${serviceScope}`;
|
8
|
+
const response = await fetch(url, {
|
11
9
|
method: "GET",
|
12
10
|
headers: {
|
13
11
|
"x-service-api-key": serviceApiKey,
|
@@ -157,8 +155,24 @@ function authorizeService(apiKeyMetadata, serviceConfig, authorizationPayload) {
|
|
157
155
|
}
|
158
156
|
|
159
157
|
async function authorize(authData, serviceConfig, cacheOptions) {
|
158
|
+
const {
|
159
|
+
clientId,
|
160
|
+
targetAddress,
|
161
|
+
enforceAuth,
|
162
|
+
secretKeyHash
|
163
|
+
} = authData;
|
164
|
+
|
165
|
+
// BACKWARDS COMPAT: if auth not enforced and
|
166
|
+
// we don't have auth credentials bypass
|
167
|
+
if (!enforceAuth && !clientId && !secretKeyHash) {
|
168
|
+
return {
|
169
|
+
authorized: true,
|
170
|
+
apiKeyMeta: null
|
171
|
+
};
|
172
|
+
}
|
173
|
+
|
160
174
|
// if we don't have a client id at this point we can't authorize
|
161
|
-
if (!
|
175
|
+
if (!clientId) {
|
162
176
|
return {
|
163
177
|
authorized: false,
|
164
178
|
status: 401,
|
@@ -170,7 +184,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
170
184
|
// if we have cache options we want to check the cache first
|
171
185
|
if (cacheOptions) {
|
172
186
|
try {
|
173
|
-
const cachedKey = await cacheOptions.get(
|
187
|
+
const cachedKey = await cacheOptions.get(clientId);
|
174
188
|
if (cachedKey) {
|
175
189
|
const parsed = JSON.parse(cachedKey);
|
176
190
|
if ("updatedAt" in parsed) {
|
@@ -198,7 +212,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
198
212
|
const {
|
199
213
|
data,
|
200
214
|
error
|
201
|
-
} = await fetchKeyMetadataFromApi(
|
215
|
+
} = await fetchKeyMetadataFromApi(clientId, serviceConfig);
|
202
216
|
if (error) {
|
203
217
|
return {
|
204
218
|
authorized: false,
|
@@ -220,7 +234,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
220
234
|
// cache the retrieved key if we have cache options
|
221
235
|
if (cacheOptions) {
|
222
236
|
// we await this always because it can be a promise or not
|
223
|
-
await cacheOptions.put(
|
237
|
+
await cacheOptions.put(clientId, data);
|
224
238
|
}
|
225
239
|
} catch (err) {
|
226
240
|
console.warn("failed to fetch key metadata from api", err);
|
@@ -253,7 +267,7 @@ async function authorize(authData, serviceConfig, cacheOptions) {
|
|
253
267
|
|
254
268
|
// if we've made it this far we need to check service specific authorization
|
255
269
|
const serviceAuth = authorizeService(apiKeyMeta, serviceConfig, {
|
256
|
-
targetAddress
|
270
|
+
targetAddress
|
257
271
|
});
|
258
272
|
if (!serviceAuth.authorized) {
|
259
273
|
return {
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
5
|
var node_crypto = require('node:crypto');
|
6
|
-
var index = require('../../dist/index-
|
6
|
+
var index = require('../../dist/index-03e2bf97.cjs.dev.js');
|
7
7
|
var services = require('../../dist/services-a3f36057.cjs.dev.js');
|
8
8
|
|
9
9
|
async function authorizeNode(authInput, serviceConfig) {
|
@@ -36,10 +36,13 @@ function getHeader(headers, headerName) {
|
|
36
36
|
return header ?? null;
|
37
37
|
}
|
38
38
|
function extractAuthorizationData(authInput) {
|
39
|
-
|
40
|
-
|
39
|
+
let requestUrl;
|
40
|
+
try {
|
41
|
+
requestUrl = new URL(authInput.req.url || "", `http://${authInput.req.headers.host}`);
|
42
|
+
} catch (error) {
|
43
|
+
console.log("** Node URL Error **", error);
|
44
|
+
throw error;
|
41
45
|
}
|
42
|
-
const requestUrl = new URL(authInput.req.url, authInput.req.headers.host);
|
43
46
|
const headers = authInput.req.headers;
|
44
47
|
const secretKey = getHeader(headers, "x-secret-key");
|
45
48
|
// prefer clientId that is explicitly passed in
|
@@ -94,7 +97,8 @@ function extractAuthorizationData(authInput) {
|
|
94
97
|
clientId,
|
95
98
|
origin,
|
96
99
|
bundleId,
|
97
|
-
targetAddress: authInput.targetAddress
|
100
|
+
targetAddress: authInput.targetAddress,
|
101
|
+
enforceAuth: authInput.enforcedAuth
|
98
102
|
};
|
99
103
|
}
|
100
104
|
function hashSecretKey(secretKey) {
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
5
|
var node_crypto = require('node:crypto');
|
6
|
-
var index = require('../../dist/index-
|
6
|
+
var index = require('../../dist/index-2facafef.cjs.prod.js');
|
7
7
|
var services = require('../../dist/services-9e185105.cjs.prod.js');
|
8
8
|
|
9
9
|
async function authorizeNode(authInput, serviceConfig) {
|
@@ -36,10 +36,13 @@ function getHeader(headers, headerName) {
|
|
36
36
|
return header ?? null;
|
37
37
|
}
|
38
38
|
function extractAuthorizationData(authInput) {
|
39
|
-
|
40
|
-
|
39
|
+
let requestUrl;
|
40
|
+
try {
|
41
|
+
requestUrl = new URL(authInput.req.url || "", `http://${authInput.req.headers.host}`);
|
42
|
+
} catch (error) {
|
43
|
+
console.log("** Node URL Error **", error);
|
44
|
+
throw error;
|
41
45
|
}
|
42
|
-
const requestUrl = new URL(authInput.req.url, authInput.req.headers.host);
|
43
46
|
const headers = authInput.req.headers;
|
44
47
|
const secretKey = getHeader(headers, "x-secret-key");
|
45
48
|
// prefer clientId that is explicitly passed in
|
@@ -94,7 +97,8 @@ function extractAuthorizationData(authInput) {
|
|
94
97
|
clientId,
|
95
98
|
origin,
|
96
99
|
bundleId,
|
97
|
-
targetAddress: authInput.targetAddress
|
100
|
+
targetAddress: authInput.targetAddress,
|
101
|
+
enforceAuth: authInput.enforcedAuth
|
98
102
|
};
|
99
103
|
}
|
100
104
|
function hashSecretKey(secretKey) {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { createHash } from 'node:crypto';
|
2
|
-
import { a as authorize } from '../../dist/index-
|
2
|
+
import { a as authorize } from '../../dist/index-e7c3b3be.esm.js';
|
3
3
|
export { b as SERVICES, S as SERVICE_DEFINITIONS, a as SERVICE_NAMES, g as getServiceByName } from '../../dist/services-86283509.esm.js';
|
4
4
|
|
5
5
|
async function authorizeNode(authInput, serviceConfig) {
|
@@ -32,10 +32,13 @@ function getHeader(headers, headerName) {
|
|
32
32
|
return header ?? null;
|
33
33
|
}
|
34
34
|
function extractAuthorizationData(authInput) {
|
35
|
-
|
36
|
-
|
35
|
+
let requestUrl;
|
36
|
+
try {
|
37
|
+
requestUrl = new URL(authInput.req.url || "", `http://${authInput.req.headers.host}`);
|
38
|
+
} catch (error) {
|
39
|
+
console.log("** Node URL Error **", error);
|
40
|
+
throw error;
|
37
41
|
}
|
38
|
-
const requestUrl = new URL(authInput.req.url, authInput.req.headers.host);
|
39
42
|
const headers = authInput.req.headers;
|
40
43
|
const secretKey = getHeader(headers, "x-secret-key");
|
41
44
|
// prefer clientId that is explicitly passed in
|
@@ -90,7 +93,8 @@ function extractAuthorizationData(authInput) {
|
|
90
93
|
clientId,
|
91
94
|
origin,
|
92
95
|
bundleId,
|
93
|
-
targetAddress: authInput.targetAddress
|
96
|
+
targetAddress: authInput.targetAddress,
|
97
|
+
enforceAuth: authInput.enforcedAuth
|
94
98
|
};
|
95
99
|
}
|
96
100
|
function hashSecretKey(secretKey) {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@thirdweb-dev/service-utils",
|
3
|
-
"version": "0.2.0-nightly-
|
3
|
+
"version": "0.2.0-nightly-42d9ab68-20230714223422",
|
4
4
|
"main": "dist/thirdweb-dev-service-utils.cjs.js",
|
5
5
|
"module": "dist/thirdweb-dev-service-utils.esm.js",
|
6
6
|
"exports": {
|