strapi-typed-client 1.0.2 → 1.0.3
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,6 +6,9 @@ export interface StrapiContext {
|
|
|
6
6
|
state: {
|
|
7
7
|
user?: unknown;
|
|
8
8
|
};
|
|
9
|
+
request: {
|
|
10
|
+
header: Record<string, string | undefined>;
|
|
11
|
+
};
|
|
9
12
|
unauthorized: (message: string) => void;
|
|
10
13
|
body: unknown;
|
|
11
14
|
}
|
|
@@ -19,6 +22,7 @@ export interface StrapiInstance {
|
|
|
19
22
|
getSchemaHash: () => unknown;
|
|
20
23
|
};
|
|
21
24
|
};
|
|
25
|
+
service: (uid: string) => any;
|
|
22
26
|
log: {
|
|
23
27
|
error: (message: string, error?: unknown) => void;
|
|
24
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../src/plugin/server/src/controllers/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE;QACH,IAAI,CAAC,EAAE,OAAO,CAAA;KACjB,CAAA;IACD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,IAAI,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE;QACJ,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;KACxD,CAAA;IACD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QACtB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;YACvB,SAAS,EAAE,MAAM,OAAO,CAAA;YACxB,aAAa,EAAE,MAAM,OAAO,CAAA;SAC/B,CAAA;KACJ,CAAA;IACD,GAAG,EAAE;QACD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;KACpD,CAAA;CACJ;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../../src/plugin/server/src/controllers/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE;QACH,IAAI,CAAC,EAAE,OAAO,CAAA;KACjB,CAAA;IACD,OAAO,EAAE;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;KAC7C,CAAA;IACD,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,IAAI,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE;QACJ,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,KAAK,OAAO,CAAA;KACxD,CAAA;IACD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QACtB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;YACvB,SAAS,EAAE,MAAM,OAAO,CAAA;YACxB,aAAa,EAAE,MAAM,OAAO,CAAA;SAC/B,CAAA;KACJ,CAAA;IACD,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,GAAG,CAAA;IAC7B,GAAG,EAAE;QACD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;KACpD,CAAA;CACJ;yBA6Be,YAAY;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE;IAClD;;;OAGG;mBACkB,aAAa;IA4BlC;;;OAGG;uBACsB,aAAa;;AArC1C,wBAgEE"}
|
|
@@ -2,16 +2,42 @@
|
|
|
2
2
|
* Schema controller for Strapi Types Plugin
|
|
3
3
|
* Exposes endpoints for fetching schema and schema hash
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* Manually validate an API token since routes use auth: false
|
|
7
|
+
* (Strapi skips its auth middleware when auth: false is set)
|
|
8
|
+
*/
|
|
9
|
+
async function validateApiToken(strapi, ctx) {
|
|
10
|
+
// Already authenticated via other means
|
|
11
|
+
if (ctx.state.user)
|
|
12
|
+
return true;
|
|
13
|
+
const authorization = ctx.request.header.authorization;
|
|
14
|
+
if (!authorization)
|
|
15
|
+
return false;
|
|
16
|
+
const [scheme, token] = authorization.split(' ');
|
|
17
|
+
if (scheme !== 'Bearer' || !token)
|
|
18
|
+
return false;
|
|
19
|
+
try {
|
|
20
|
+
const apiTokenService = strapi.service('admin::api-token');
|
|
21
|
+
const accessKey = await apiTokenService.hash(token);
|
|
22
|
+
const storedToken = await apiTokenService.getBy({ accessKey });
|
|
23
|
+
return !!storedToken;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
5
29
|
export default ({ strapi }) => ({
|
|
6
30
|
/**
|
|
7
31
|
* GET /api/strapi-types/schema
|
|
8
32
|
* Returns the full schema with hash
|
|
9
33
|
*/
|
|
10
34
|
async getSchema(ctx) {
|
|
11
|
-
// Check auth based on config
|
|
12
35
|
const requireAuth = strapi.config.get('plugin::strapi-typed-client.requireAuth', process.env.NODE_ENV === 'production');
|
|
13
|
-
if (requireAuth
|
|
14
|
-
|
|
36
|
+
if (requireAuth) {
|
|
37
|
+
const isAuthenticated = await validateApiToken(strapi, ctx);
|
|
38
|
+
if (!isAuthenticated) {
|
|
39
|
+
return ctx.unauthorized('Authentication required to access schema');
|
|
40
|
+
}
|
|
15
41
|
}
|
|
16
42
|
try {
|
|
17
43
|
const schemaService = strapi
|
|
@@ -30,10 +56,12 @@ export default ({ strapi }) => ({
|
|
|
30
56
|
* Returns only the schema hash (lightweight)
|
|
31
57
|
*/
|
|
32
58
|
async getSchemaHash(ctx) {
|
|
33
|
-
// Check auth based on config
|
|
34
59
|
const requireAuth = strapi.config.get('plugin::strapi-typed-client.requireAuth', process.env.NODE_ENV === 'production');
|
|
35
|
-
if (requireAuth
|
|
36
|
-
|
|
60
|
+
if (requireAuth) {
|
|
61
|
+
const isAuthenticated = await validateApiToken(strapi, ctx);
|
|
62
|
+
if (!isAuthenticated) {
|
|
63
|
+
return ctx.unauthorized('Authentication required to access schema hash');
|
|
64
|
+
}
|
|
37
65
|
}
|
|
38
66
|
try {
|
|
39
67
|
const schemaService = strapi
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../src/plugin/server/src/controllers/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../../src/plugin/server/src/controllers/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6BH;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAC3B,MAAsB,EACtB,GAAkB;IAElB,wCAAwC;IACxC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAE/B,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAA;IACtD,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAA;IAEhC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAChD,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IAE/C,IAAI,CAAC;QACD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;QAC1D,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnD,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,CAAA;QAC9D,OAAO,CAAC,CAAC,WAAW,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAA;IAChB,CAAC;AACL,CAAC;AAED,eAAe,CAAC,EAAE,MAAM,EAA8B,EAAE,EAAE,CAAC,CAAC;IACxD;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,GAAkB;QAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CACjC,yCAAyC,EACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CACxC,CAAA;QAED,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnB,OAAO,GAAG,CAAC,YAAY,CACnB,0CAA0C,CAC7C,CAAA;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,MAAM;iBACvB,MAAM,CAAC,qBAAqB,CAAC;iBAC7B,OAAO,CAAC,QAAQ,CAAC,CAAA;YACtB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,CAAA;YAExC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;YACnD,MAAM,KAAK,CAAA;QACf,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,GAAkB;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CACjC,yCAAyC,EACzC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CACxC,CAAA;QAED,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnB,OAAO,GAAG,CAAC,YAAY,CACnB,+CAA+C,CAClD,CAAA;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACD,MAAM,aAAa,GAAG,MAAM;iBACvB,MAAM,CAAC,qBAAqB,CAAC;iBAC7B,OAAO,CAAC,QAAQ,CAAC,CAAA;YACtB,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,EAAE,CAAA;YAE5C,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAA;YACvD,MAAM,KAAK,CAAA;QACf,CAAC;IACL,CAAC;CACJ,CAAC,CAAA"}
|