express jwt error handling in nest js graphql
I use express JWT with nest js and use it in gateway graphql.
I want to return error when my token has error including expiration error or invalid error after calling any graphql api.
Here is the code that I use express JWT in main file of my gateway:
app.use(
graphqlUploadExpress(),
expressJwt({
secret: secretCallback,
algorithms: ['HS256'],
credentialsRequired: false,
}),
);
and the following code is my validation when token is invalid:
function (err, req, res, next) {
const { ip, method, originalUrl, headers } = req;
const requestMeta = { headers, ip, method, originalUrl, error: err };
if (err.message === 'jwt expired') {
Logger.error('Gateway JWT Expired', requestMeta);
res.send(401, { code: 'gateway-token-expired', message: 'Token is expired' });
} else if (err.code === 'invalid_token') {
Logger.error('Gateway JWT Invalid', requestMeta);
res.send(401, { code: 'gateway-token-invalid', message: 'Token is invalid' });
} else {
next(err);
}
};
I want that res.status(err.status).send({ message: err.message });
return the error message back to user.