UNPKG

js-web-tools

Version:
161 lines (118 loc) 5.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.JWT = exports.AUTH_SCHEMA = void 0; var _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken")); var _utils = require("./utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var AUTH_SCHEMA = 'Bearer'; exports.AUTH_SCHEMA = AUTH_SCHEMA; var DEFAULT_CONFIG = { authSchema: AUTH_SCHEMA, privateKey: '37LvDSm4XvjYOh9Y' }; var DEFAULT_OPTIONS = { algorithm: 'HS256', expiresIn: '30h' }; var JWT = function JWT() { var _this = this; var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_CONFIG; var _options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_OPTIONS; _classCallCheck(this, JWT); _defineProperty(this, "sign", function (payload) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; try { var _this$_config = _this._config, privateKey = _this$_config.privateKey, authSchema = _this$_config.authSchema; var data = (0, _utils.isString)(payload) ? JSON.parse(payload) : payload; var token = _jsonwebtoken["default"].sign(data, privateKey, _objectSpread({}, _this._options, {}, options)); return encodeURI("".concat(authSchema, " ").concat(token)); } catch (err) { /* */ } return ''; }); _defineProperty(this, "isExpire", function () { var token = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var authSchema = _this._config.authSchema; var regexp = new RegExp("^".concat(authSchema, "%20[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.?[A-Za-z0-9-_.+/=]*$")); /* istanbul ignore else */ if (token === '' || token === 'undefined' || !regexp.test(token)) { return true; } try { var privateKey = _this._config.privateKey; var jwtToken = _this._getJwtToken(token); _jsonwebtoken["default"].verify(jwtToken, privateKey, _this._options); return false; } catch (err) { /* */ } return true; }); _defineProperty(this, "verify", function (token) { return !_this.isExpire(token); }); _defineProperty(this, "_getJwtToken", function (srcToken) { var token = decodeURI(srcToken); var authSchema = _this._config.authSchema; var prefixVerifyRegexp = new RegExp("^".concat(authSchema, "\\s{1}")); // should give auth schema if (!prefixVerifyRegexp.test(token)) { return ''; } return token.replace(prefixVerifyRegexp, ''); }); _defineProperty(this, "decode", function (token, options) { var jwtToken = _this._getJwtToken(token); return _jsonwebtoken["default"].decode(jwtToken, options); }); _defineProperty(this, "get", function () { var key = '', token = ''; for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (args.length === 1) { var _args$ = args[0]; token = _args$ === void 0 ? '' : _args$; } else { var _args$2 = args[0]; key = _args$2 === void 0 ? '' : _args$2; var _args$3 = args[1]; token = _args$3 === void 0 ? '' : _args$3; } if (token === '') { return null; } try { var jwtToken = _this._getJwtToken(token); var payload = _jsonwebtoken["default"].verify(jwtToken, _this._config.privateKey); /* istanbul ignore else */ if (payload) { if (key !== '' && Object.prototype.hasOwnProperty.call(payload, key)) { return payload[key]; } return payload; } } catch (err) { /* */ } return null; }); this._config = _objectSpread({}, DEFAULT_CONFIG, {}, config); this._options = _objectSpread({}, DEFAULT_OPTIONS, {}, _options); } /* * sign payload and return token string or empty if throw an error. */ ; exports.JWT = JWT; var _default = JWT; exports["default"] = _default;