UNPKG

seal-middleware

Version:

secure your api endpoint by limiting access over period of time.

1 lines 1.22 kB
'use strict';var _createClass=function(){function a(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,'value'in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}();Object.defineProperty(exports,'__esModule',{value:!0});function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError('Cannot call a class as a function')}var Seal=function(){function a(){var b=0<arguments.length&&void 0!==arguments[0]?arguments[0]:'security',c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:500;_classCallCheck(this,a),this.key=b,this.expired=c}return _createClass(a,[{key:'generateSeal',value:function generateSeal(){return'undefined'==typeof window?Buffer.from(this.key+(Date.now()+'')).toString('base64'):btoa(this.key+(Date.now()+'')).replace(/=/g,'')}},{key:'getTimestampSeal',value:function getTimestampSeal(a){return'undefined'==typeof window?Buffer.from(a,'base64').toString().replace(this.key,''):atob(a+'==').replace(this.key,'')}},{key:'validate',value:function validate(a){var b=Date.now()-this.getTimestampSeal(a);return isNaN(b)||b>=this.expired?{is_valid:!1}:{is_valid:!0}}}]),a}();exports.default=Seal;