improved handling of some cases for expiration timestamps
This commit is contained in:
parent
ed0aca5783
commit
e49299670e
28
rest.js
28
rest.js
@ -11,11 +11,23 @@ function makeB64UrlSafe(b64) {
|
|||||||
function timespan(duration, max) {
|
function timespan(duration, max) {
|
||||||
var timestamp = Math.floor(Date.now() / 1000);
|
var timestamp = Math.floor(Date.now() / 1000);
|
||||||
|
|
||||||
|
if (!duration) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (typeof duration === 'string') {
|
if (typeof duration === 'string') {
|
||||||
duration = Math.floor(require('ms')(duration) / 1000);
|
duration = Math.floor(require('ms')(duration) / 1000) || 0;
|
||||||
}
|
}
|
||||||
if (typeof duration !== 'number') {
|
if (typeof duration !== 'number') {
|
||||||
return timestamp;
|
return 0;
|
||||||
|
}
|
||||||
|
// Handle the case where the user gave us a timestamp instead of duration for the expiration.
|
||||||
|
// Also make the maximum explicitly defined expiration as one year.
|
||||||
|
if (duration > 31557600) {
|
||||||
|
if (duration > timestamp) {
|
||||||
|
return duration - timestamp;
|
||||||
|
} else {
|
||||||
|
return 31557600;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (max && timestamp+duration > max) {
|
if (max && timestamp+duration > max) {
|
||||||
@ -461,8 +473,16 @@ module.exports.create = function (bigconf, deps, app) {
|
|||||||
kid: jwk.kid
|
kid: jwk.kid
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var accessOpts = {expiresIn: timespan(req.body.exp || '1d', token_info.exp)};
|
var accessOpts = {};
|
||||||
var refreshOpts = {expiresIn: timespan(req.body.refresh_exp, token_info.exp)};
|
// We set `expiresIn` like this to make it possible to send `null` and `exp` to have
|
||||||
|
// no expiration while still having a default of 1 day.
|
||||||
|
if (req.body.hasOwnProperty('exp')) {
|
||||||
|
accessOpts.expiresIn = timespan(req.body.exp, token_info.exp);
|
||||||
|
} else {
|
||||||
|
accessOpts.expiresIn = timespan('1d', token_info.exp);
|
||||||
|
}
|
||||||
|
var refreshOpts = {};
|
||||||
|
refreshOpts.expiresIn = timespan(req.body.refresh_exp, token_info.exp);
|
||||||
|
|
||||||
var jwt = require('jsonwebtoken');
|
var jwt = require('jsonwebtoken');
|
||||||
var result = {};
|
var result = {};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user