Merge pull request #11 from luisfarzati/typed-errors

Throws typed error when token is expired
This commit is contained in:
Matias Woloski
2014-08-05 11:24:31 -03:00
2 changed files with 20 additions and 1 deletions
+18 -1
View File
@@ -57,7 +57,7 @@ module.exports.verify = function(jwtString, secretOrPublicKey, options, callback
if (payload.exp) {
if (Math.round(Date.now()) / 1000 >= payload.exp)
return callback(new Error('jwt expired'));
return callback(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));
}
if (options.audience) {
@@ -72,3 +72,20 @@ module.exports.verify = function(jwtString, secretOrPublicKey, options, callback
callback(null, payload);
};
function JsonWebTokenError(message, error) {
Error.call(this, message);
this.name = 'JsonWebTokenError';
this.message = message;
if (error) this.inner = error;
}
JsonWebTokenError.prototype = Object.create(Error.prototype);
JsonWebTokenError.prototype.constructor = JsonWebTokenError;
var TokenExpiredError = module.exports.TokenExpiredError = function (message, expiredAt) {
JsonWebTokenError.call(this, message);
this.name = 'TokenExpiredError';
this.expiredAt = expiredAt;
}
TokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);
TokenExpiredError.prototype.constructor = TokenExpiredError;
+2
View File
@@ -56,6 +56,8 @@ describe('RS256', function() {
jwt.verify(token, pub, function(err, decoded) {
assert.isUndefined(decoded);
assert.isNotNull(err);
assert.instanceOf(err, jwt.TokenExpiredError);
assert.instanceOf(err.expiredAt, Date);
done();
});
});