You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
688 B
JavaScript
37 lines
688 B
JavaScript
const jwt = require('jsonwebtoken');
|
|
const jwksClient = require('jwks-rsa');
|
|
|
|
const client = jwksClient({
|
|
jwksUri: 'https://sandrino.auth0.com/.well-known/jwks.json',
|
|
requestHeaders: {}, // Optional
|
|
timeout: 30000, // Defaults to 30s
|
|
});
|
|
|
|
module.exports = {
|
|
inputs: {
|
|
token: {
|
|
type: 'string',
|
|
required: true,
|
|
},
|
|
},
|
|
|
|
exits: {
|
|
invalidToken: {},
|
|
},
|
|
|
|
async fn(inputs) {
|
|
let payload;
|
|
const keys = await client.getSigningKeys();
|
|
try {
|
|
payload = jwt.verify(inputs.token, keys);
|
|
} catch (error) {
|
|
throw 'invalidToken';
|
|
}
|
|
|
|
return {
|
|
subject: payload.sub,
|
|
issuedAt: new Date(payload.iat * 1000),
|
|
};
|
|
},
|
|
};
|