89 lines
2.8 KiB
JavaScript
89 lines
2.8 KiB
JavaScript
var uuid = require('node-uuid'),
|
|
authCodes = {},
|
|
accessTokens = {},
|
|
tokenHeartbeats = {},
|
|
clients = {
|
|
'F8Nbz9gGUvLgdn8T': {
|
|
id: '1',
|
|
secret: 'Fesmx7hHCCMx7Cby7FhV2fAtf2NYEFzP5fCKuwEEdpf8hpnsnnQn9qYhNHt6SsDD',
|
|
grantTypes: ['client_credentials']
|
|
},
|
|
'dev52VrnSufxEyKT': {
|
|
id: '2',
|
|
secret: 'nK2jnqhdWnrmAFDw9zWVueAqUQvSxmAyjf2Sz7ZrmYVSH5GSxER4rPQCuBUewF',
|
|
grantTypes: ['client_credentials']
|
|
}
|
|
};
|
|
|
|
const services = {
|
|
flushExpiredTokens: function (maxAge) {
|
|
let oldTokens = [];
|
|
let now = new Date().getTime();
|
|
for (let token in accessTokens) {
|
|
if (tokenHeartbeats[token] && tokenHeartbeats[token] < now - 1000 * maxAge) {
|
|
oldTokens.push(token)
|
|
delete accessTokens[token]
|
|
}
|
|
}
|
|
console.log('Flush expired tokens execution completed.', oldTokens)
|
|
},
|
|
getAccessTokens: function () {
|
|
return accessTokens;
|
|
},
|
|
getClients: function () {
|
|
return clients;
|
|
},
|
|
heartbeat: {
|
|
puls: function (token) {
|
|
tokenHeartbeats[token] = new Date().getTime();
|
|
},
|
|
signal: function (authHeader) {
|
|
if (authHeader) {
|
|
let token = authHeader.split(' ').pop()
|
|
if (accessTokens[token]) {
|
|
services.heartbeat.puls(token)
|
|
return tokenHeartbeats[token];
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
},
|
|
clientService: {
|
|
getById: function (id, callback) {
|
|
return callback(null, clients[id]);
|
|
},
|
|
isValidRedirectUri: function (/*client, requestedUri*/) {
|
|
return true;
|
|
}
|
|
},
|
|
tokenService: {
|
|
generateToken: function (callback) {
|
|
callback(null, uuid.v4());
|
|
},
|
|
generateAuthorizationCode: function (callback) {
|
|
callback(null, uuid.v4());
|
|
}
|
|
},
|
|
authorizationService: {
|
|
saveAuthorizationCode: function (codeData, callback) {
|
|
authCodes[codeData.code] = codeData;
|
|
return callback(null, authCodes[codeData.code]);
|
|
},
|
|
saveAccessToken: function (tokenData, callback) {
|
|
accessTokens[tokenData.access_token] = tokenData;
|
|
return callback(null, accessTokens[tokenData.access_token]);
|
|
},
|
|
getAuthorizationCode: function (code, callback) {
|
|
return callback(null, authCodes[code]);
|
|
},
|
|
getAccessToken: function (token, callback) {
|
|
return callback(null, accessTokens[token]);
|
|
}
|
|
},
|
|
membershipService: {
|
|
areUserCredentialsValid: function (userName, password, scope, callback) {
|
|
return callback(null, true);
|
|
}
|
|
}
|
|
}
|
|
module.exports = services |