@lilaquadrat/studio 10.0.0-beta.46 → 10.0.0-beta.47
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.
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import ProjectModel from "../models/project.model";
|
|
2
|
+
export default async (app) => {
|
|
3
|
+
let settings = {
|
|
4
|
+
url: process.env.JWT_URL,
|
|
5
|
+
issuer: process.env.JWT_ISSUER,
|
|
6
|
+
custom: false,
|
|
7
|
+
};
|
|
8
|
+
console.log(app);
|
|
9
|
+
if (app !== 'editor-app') {
|
|
10
|
+
const splitProject = app?.split('-');
|
|
11
|
+
if (splitProject) {
|
|
12
|
+
const project = await ProjectModel.db.findOne({ company: splitProject[0], id: splitProject[1] });
|
|
13
|
+
if (project?.auth0?.domain) {
|
|
14
|
+
settings = {
|
|
15
|
+
url: `https://${project?.auth0?.domain}/.well-known/jwks.json`,
|
|
16
|
+
issuer: `https://${project?.auth0?.domain}/`,
|
|
17
|
+
custom: true,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return settings;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=auth0config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth0config.js","sourceRoot":"","sources":["../../../src/helpers/auth0config.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,yBAAyB,CAAC;AAEnD,eAAe,KAAK,EAAE,GAAW,EAAE,EAAE;IAEnC,IAAI,QAAQ,GAAG;QACb,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAiB;QAClC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAoB;QACxC,MAAM,EAAE,KAAK;KACd,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;QAEzB,MAAM,YAAY,GAAG,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAErC,IAAI,YAAY,EAAE,CAAC;YAEjB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAEjG,IAAI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBAE3B,QAAQ,GAAG;oBACT,GAAG,EAAE,WAAW,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB;oBAC9D,MAAM,EAAE,WAAW,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG;oBAC5C,MAAM,EAAE,IAAI;iBACb,CAAC;YAEJ,CAAC;QAEH,CAAC;IAEH,CAAC;IAED,OAAO,QAAQ,CAAC;AAElB,CAAC,CAAC"}
|
|
@@ -1,33 +1,40 @@
|
|
|
1
|
+
import { promisify } from 'node:util';
|
|
1
2
|
import fp from 'fastify-plugin';
|
|
2
3
|
import fastifyJwt from '@fastify/jwt';
|
|
3
4
|
import jwksRsa from 'jwks-rsa';
|
|
4
5
|
import respondCode from '../functions/respondCode.js';
|
|
6
|
+
import auth0config from './auth0config.js';
|
|
5
7
|
const authPlugin = async (fastify) => {
|
|
6
8
|
if (process.env.ENV !== 'dev') {
|
|
7
|
-
//
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
// Per-domain JWKS client cache to avoid re-creating clients on every request
|
|
10
|
+
const jwksClients = new Map();
|
|
11
|
+
const getJwksClient = (jwksUri) => {
|
|
12
|
+
if (!jwksClients.has(jwksUri)) {
|
|
13
|
+
jwksClients.set(jwksUri, jwksRsa({
|
|
14
|
+
cache: true,
|
|
15
|
+
cacheMaxEntries: 5,
|
|
16
|
+
cacheMaxAge: 600000, // 10 minutes in ms
|
|
17
|
+
rateLimit: true,
|
|
18
|
+
jwksRequestsPerMinute: 10,
|
|
19
|
+
jwksUri,
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
return jwksClients.get(jwksUri);
|
|
23
|
+
};
|
|
16
24
|
// Production: Register JWT with JWKS
|
|
17
25
|
await fastify.register(fastifyJwt, {
|
|
18
26
|
decode: { complete: true },
|
|
19
|
-
secret: (request, token
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
});
|
|
27
|
+
secret: async (request, token) => {
|
|
28
|
+
const header = 'header' in token ? token.header : token;
|
|
29
|
+
const app = request.studioApp ?? 'editor-app';
|
|
30
|
+
console.log(app);
|
|
31
|
+
const settings = await auth0config(app);
|
|
32
|
+
console.log(settings);
|
|
33
|
+
request.customApp = settings.custom;
|
|
34
|
+
const jwksUri = settings.url;
|
|
35
|
+
const client = getJwksClient(jwksUri);
|
|
36
|
+
const key = await promisify(client.getSigningKey.bind(client))(header.kid);
|
|
37
|
+
return key.getPublicKey();
|
|
31
38
|
},
|
|
32
39
|
verify: {
|
|
33
40
|
algorithms: ['RS256']
|
|
@@ -37,6 +44,7 @@ const authPlugin = async (fastify) => {
|
|
|
37
44
|
fastify.decorate('authenticate', async (request, reply) => {
|
|
38
45
|
try {
|
|
39
46
|
await request.jwtVerify();
|
|
47
|
+
console.log(request.user);
|
|
40
48
|
request.auth = request.user;
|
|
41
49
|
}
|
|
42
50
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authPlugin.js","sourceRoot":"","sources":["../../../src/helpers/authPlugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"authPlugin.js","sourceRoot":"","sources":["../../../src/helpers/authPlugin.ts"],"names":[],"mappings":"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"}
|