38 rader
808 B
JavaScript
38 rader
808 B
JavaScript
'use strict';
|
|
|
|
var Keypairs = require('keypairs');
|
|
|
|
module.exports.getToken = function(serviceAccount) {
|
|
var jwt = '';
|
|
var exp = 0;
|
|
|
|
if (exp - Date.now() > 0) {
|
|
return Promise.resolve(jwt);
|
|
}
|
|
|
|
return module.exports.generateToken(serviceAccount).then(function(_jwt) {
|
|
jwt = _jwt;
|
|
exp = Math.round(Date.now()) - 15 * 60 * 60 * 1000;
|
|
return jwt;
|
|
});
|
|
};
|
|
|
|
module.exports.generateToken = function(serviceAccount) {
|
|
var sa = serviceAccount;
|
|
return Keypairs.import({ pem: sa.private_key }).then(function(key) {
|
|
return Keypairs.signJwt({
|
|
jwk: key,
|
|
iss: sa.client_email,
|
|
exp: '1h',
|
|
header: {
|
|
kid: sa.private_key_id
|
|
},
|
|
claims: {
|
|
//aud: 'ndev.clouddns.readwrite',
|
|
aud: 'https://www.googleapis.com/auth/ndev.clouddns.readwrite',
|
|
sub: sa.client_email
|
|
}
|
|
});
|
|
});
|
|
};
|