@aarconada/urserver
Version:
Basic Server definitions to develope REST API with a node + express Server
215 lines (201 loc) • 7.32 kB
JavaScript
/**
* Created by ubuntu on 16/08/18.
*/
'use strict';
const _ = require('lodash');
const jsonWebToken = require('jsonwebtoken');
const response = require('./response');
const server = require('./server')();
//**** VALIDATION TOKEN METHODS ***//
module.exports.generateValidationToken = function(data) {
server.debug('Generating validation token...');
if(_.isUndefined(data) || _.isNull(data)) throw response.token_missing_data;
var validationToken = jsonWebToken.sign(
data,
server.configuration.token.secret,
{
expiresIn : server.configuration.token.expiration.validation
}
);
server.debug('Generated Token?', validationToken !== null);
return validationToken;
};
module.exports.verifyValidationToken = function(validationtoken) {
server.debug('Verifing validation token...');
try {
return jsonWebToken.verify(validationtoken, server.configuration.token.secret);
} catch(err) {
server.debug('Validation token error', err);
return false;
}
};
module.exports.verifyValidationTokenIgnoringExpiration = function(validationtoken) {
server.debug('Verifing validation token...');
try {
return jsonWebToken.verify(validationtoken, server.configuration.token.secret, {ignoreExpiration: true});
} catch(err) {
server.debug('Validation token error', err);
return false;
}
};
//**** BEARER TOKEN METHODS ***//
var fetchBearerTokenFromValue = function(value){
server.debug('Fetching bearer token...');
var bearerToken;
if(value) {
var part = value.split(' ');
if(part.length == 2) bearerToken = part[1];
}
server.debug('Bearer token fetched?', bearerToken !== null);
return bearerToken;
};
module.exports.fetchBearerTokenFromValue = fetchBearerTokenFromValue;
var fetchBearerTokenFromHeaders = function(headers){
server.debug('Fetching bearer token...');
var bearerToken;
server.debug(headers);
server.debug(server.configuration.token.header);
if(headers && headers[server.configuration.token.header]) {
server.debug(headers[server.configuration.token.header]);
var part = headers[server.configuration.token.header].split(' ');
if(part.length == 2) bearerToken = part[1];
}
server.debug('Bearer token fetched?', bearerToken !== null);
return bearerToken;
};
module.exports.getBearerToken = function(req) {
return fetchBearerTokenFromHeaders(req.headers);
};
module.exports.generateBearerToken = function(data) {
server.debug('Generating bearer token...');
if(_.isUndefined(data) || _.isNull(data)) throw response.token_missing_data;
var bearerToken = jsonWebToken.sign(
data,
server.configuration.token.secret,
{
expiresIn : server.configuration.token.expiration.bearer
}
);
server.debug('Generated Token?', bearerToken !== null);
return bearerToken;
};
module.exports.verifyBearerToken = function(bearerToken) {
server.debug('Verifing bearer token...');
try {
return jsonWebToken.verify(bearerToken, server.configuration.token.secret);
} catch(err) {
server.debug('Validation token error', err);
return false;
}
};
module.exports.verifyBearerTokenIgnoringExpiration = function(bearerToken) {
server.debug('Verifing bearer token... ');
try {
return jsonWebToken.verify(bearerToken, server.configuration.token.secret, {ignoreExpiration: true});
} catch(err) {
server.debug('Validation token error', err);
return false;
}
};
module.exports.bearerTokenCheckFromValue = function(bearerValue) {
server.debug('Start to check bearer token...');
var token = fetchBearerTokenFromValue(bearerValue);
if (token) {
if(exports.verifyBearerToken(token)) {
server.debug('Bearer token valid');
return response.success;
} else {
server.debug('Bearer token invalid');
return response.invalid_token;
}
} else {
server.debug('Bearer token missing');
return response.missing_token;
}
};
module.exports.bearerTokenCheck = function(req) {
server.debug('Start to check bearer token...');
var token = fetchBearerTokenFromHeaders(req.headers);
if (token) {
if(exports.verifyBearerToken(token)) {
req.bearerToken = token;
server.debug('Bearer token valid');
return response.success;
} else {
server.debug('Bearer token invalid');
return response.invalid_token;
}
} else {
server.debug('Bearer token missing');
return response.missing_token;
}
};
module.exports.bearerTokenCheckIgnoringExpiration = function(req) {
server.debug('Checking bearer token ignoring expiration...');
var token = fetchBearerTokenFromHeaders(req.headers);
if (token) {
if(exports.verifyBearerTokenIgnoringExpiration(token)) {
req.bearerToken = token;
return response.success;
} else {
return response.invalid_token;
}
} else {
return response.missing_token;
}
};
//**** REFRESH TOKEN METHODS ***//
module.exports.generateRefreshToken = function(data) {
server.debug('Generating refresh token for data...');
if(_.isUndefined(data) || _.isNull(data)) throw response.token_missing_data;
var refreshToken = jsonWebToken.sign(
data,
server.configuration.token.secret,
{
notBefore : server.configuration.token.expiration.bearer
}
);
server.debug('Generated Token?', refreshToken !== null);
return refreshToken;
};
module.exports.verifyRefreshToken = function(refreshToken) {
server.debug('Verifing refresh token...');
try {
return jsonWebToken.verify(refreshToken, server.configuration.token.secret);
} catch(err) {
server.debug('Validation token error', err);
return false;
}
};
module.exports.verifyRefreshTokenIgnoringExpiration = function(refreshToken) {
server.debug('Verifing refresh token...');
try {
return jsonWebToken.verify(refreshToken, server.configuration.token.secret, {ignoreExpiration: true});
} catch(err) {
server.debug('Validation token error', err);
return false;
}
};
//**** RECOVERPASSWORD TOKEN METHODS ***//
module.exports.generateRecoverPasswordToken = function(data) {
server.debug('Generating recover password token...');
if(_.isUndefined(data) || _.isNull(data)) throw response.token_missing_data;
var recoverPasswordToken = jsonWebToken.sign(
data,
server.configuration.token.secret,
{
expiresIn : server.configuration.token.expiration.recover
}
);
server.debug('Generated Token?', recoverPasswordToken !== null);
return recoverPasswordToken;
};
module.exports.verifyRecoverPasswordToken = function(refreshToken) {
server.debug('Verifing recover token...');
try {
return jsonWebToken.verify(refreshToken, server.configuration.token.secret);
} catch(err) {
server.debug('Validation token error', err);
return false;
}
};