UNPKG

@aarconada/urserver

Version:

Basic Server definitions to develope REST API with a node + express Server

215 lines (201 loc) 7.32 kB
/** * 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; } };