UNPKG

secure-link

Version:

Functions to generate and validate resource access tokens.

41 lines (31 loc) 937 B
const { createHash } = require('crypto'); const errors = require('../utils/errors'); /** * Generate token to validate access to a secure resource * @param {Object} options Configuration for token generation * @return {Object} Token and expiration params (if generated) */ const generateNginxAccessToken = (options = {}) => { const { secret, path, lifetime } = options; if (!secret) { throw new Error(errors.missingSecret); } if (!path) { throw new Error(errors.missingResourcePath); } // Expression based on ngx_http_secure_link_module const expires = lifetime ? lifetime : ''; const data = `${path}${expires} ${secret}`; // Match secure_link_md5 directive const hash = createHash('md5').update(data).digest(); return Buffer.from(hash) .toString('base64') .replace(/\//g, '_') .replace(/=/g, '') .replace(/\+/g, '-'); }; module.exports = generateNginxAccessToken;