Skip to content

Commit 396448a

Browse files
committed
add support for express-jwt@7
1 parent 7231fa0 commit 396448a

1 file changed

Lines changed: 30 additions & 8 deletions

File tree

src/integrations/express.js

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,38 @@ module.exports.expressJwtSecret = function (options) {
2222
const client = new JwksClient(options);
2323
const onError = options.handleSigningKeyError || handleSigningKeyError;
2424

25-
return function secretProvider(req, header, payload, cb) {
25+
const expressJwt7Provider = async (req, token) => {
26+
const header = token.header;
2627
if (!header || !supportedAlg.includes(header.alg)) {
27-
return cb(null, null);
28+
return;
2829
}
29-
30-
client.getSigningKey(header.kid)
31-
.then(key => {
32-
cb(null, key.publicKey || key.rsaPublicKey);
33-
}).catch(err => {
34-
onError(err, (newError) => cb(newError, null));
30+
try {
31+
const key = await client.getSigningKey(header.kid);
32+
return key.publicKey || key.rsaPublicKey;
33+
} catch (err) {
34+
return new Promise((resolve, reject) => {
35+
onError(err, (newError) => {
36+
if (!newError) { return resolve(); }
37+
reject(newError);
38+
});
3539
});
40+
}
41+
};
42+
43+
return function secretProvider(req, header, payload, cb) {
44+
//This function has 4 parameters to make it work with express-jwt@6
45+
//but it also supports express-jwt@7 which only has 2.
46+
if (arguments.length === 4) {
47+
expressJwt7Provider(req, { header })
48+
.then(key => {
49+
setImmediate(cb, null, key);
50+
}).catch(err => {
51+
setImmediate(cb, err);
52+
});
53+
54+
return;
55+
}
56+
57+
return expressJwt7Provider(req, arguments[1]);
3658
};
3759
};

0 commit comments

Comments
 (0)