UNPKG

@kernel-js/auth

Version:
159 lines (135 loc) 10.5 kB
import _regeneratorRuntime from "@babel/runtime/regenerator"; import _objectSpread from "@babel/runtime/helpers/objectSpread"; import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator"; import _classCallCheck from "@babel/runtime/helpers/classCallCheck"; import _createClass from "@babel/runtime/helpers/createClass"; import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf"; import _inherits from "@babel/runtime/helpers/inherits"; import _applyDecoratedDescriptor from "@babel/runtime/helpers/applyDecoratedDescriptor"; var _dec, _dec2, _class, _class2, _temp; // Kernel import { get } from '@kernel-js/support'; // Decorators import ValidateOAuthClass from '../decorators/ValidateOAuthClass'; import ValidateUserParams from '../decorators/ValidateUserParams'; // Classes import BaseAuthentication from './BaseAuthentication'; var OAuthAuthentication = (_dec = ValidateOAuthClass(), _dec2 = ValidateUserParams(), _dec(_class = (_class2 = (_temp = /*#__PURE__*/ function (_BaseAuthentication) { _inherits(OAuthAuthentication, _BaseAuthentication); /** * @param {object} config */ function OAuthAuthentication(config) { var _this; _classCallCheck(this, OAuthAuthentication); _this = _possibleConstructorReturn(this, _getPrototypeOf(OAuthAuthentication).call(this, config)); _this._client = void 0; _this._client = get(config, 'client', {}); return _this; } /** * @param {object} data * @returns void */ _createClass(OAuthAuthentication, [{ key: "authorizationHeaders", value: function authorizationHeaders() { var session = this._storage.get(); var tokenType = get(session, 'token_type', 'Bearer'); var accessToken = get(session, 'access_token', null); return { Authorization: "".concat(tokenType, " ").concat(accessToken) }; } /** * Gets user access tokens. * @param {object} params * @param {string} url * @returns Promise */ }, { key: "login", value: function () { var _login = _asyncToGenerator( /*#__PURE__*/ _regeneratorRuntime.mark(function _callee() { var _this2 = this; var params, url, client, data, _args = arguments; return _regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: params = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}; url = _args.length > 1 && _args[1] !== undefined ? _args[1] : '/oauth/token'; client = { 'scope': get(this._client, 'scope', ''), 'client_id': get(this._client, 'id', ''), 'client_secret': get(this._client, 'secret', '') }; data = _objectSpread({ grant_type: 'password' }, client, params); return _context.abrupt("return", this._request.post(url, data).then(function (response) { _this2._storage.store(response.data).then(function () { Object.assign(_this2._request.defaults.headers.common, _this2.authorizationHeaders()); }); })); case 5: case "end": return _context.stop(); } } }, _callee, this); })); function login() { return _login.apply(this, arguments); } return login; }() /** * Clears all user data by logging out. * @returns Promise */ }, { key: "logout", value: function () { var _logout = _asyncToGenerator( /*#__PURE__*/ _regeneratorRuntime.mark(function _callee2() { var _this3 = this; return _regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.prev = 0; this._storage.revoke().then(function () { delete _this3._request.defaults.headers.common['Authorization']; }); _context2.next = 7; break; case 4: _context2.prev = 4; _context2.t0 = _context2["catch"](0); throw new Error(_context2.t0); case 7: case "end": return _context2.stop(); } } }, _callee2, this, [[0, 4]]); })); function logout() { return _logout.apply(this, arguments); } return logout; }() }]); return OAuthAuthentication; }(BaseAuthentication), _temp), (_applyDecoratedDescriptor(_class2.prototype, "login", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "login"), _class2.prototype)), _class2)) || _class); export { OAuthAuthentication as default }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRob3JpemF0aW9uL09BdXRoQXV0aGVudGljYXRpb24udHMiXSwibmFtZXMiOlsiZ2V0IiwiVmFsaWRhdGVPQXV0aENsYXNzIiwiVmFsaWRhdGVVc2VyUGFyYW1zIiwiQmFzZUF1dGhlbnRpY2F0aW9uIiwiT0F1dGhBdXRoZW50aWNhdGlvbiIsImNvbmZpZyIsIl9jbGllbnQiLCJzZXNzaW9uIiwiX3N0b3JhZ2UiLCJ0b2tlblR5cGUiLCJhY2Nlc3NUb2tlbiIsIkF1dGhvcml6YXRpb24iLCJwYXJhbXMiLCJ1cmwiLCJjbGllbnQiLCJkYXRhIiwiZ3JhbnRfdHlwZSIsIl9yZXF1ZXN0IiwicG9zdCIsInRoZW4iLCJyZXNwb25zZSIsInN0b3JlIiwiT2JqZWN0IiwiYXNzaWduIiwiZGVmYXVsdHMiLCJoZWFkZXJzIiwiY29tbW9uIiwiYXV0aG9yaXphdGlvbkhlYWRlcnMiLCJyZXZva2UiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxHQUFULFFBQW9CLG9CQUFwQixDLENBRUE7O0FBQ0EsT0FBT0Msa0JBQVAsTUFBK0Isa0NBQS9CO0FBQ0EsT0FBT0Msa0JBQVAsTUFBK0Isa0NBQS9CLEMsQ0FFQTs7QUFDQSxPQUFPQyxrQkFBUCxNQUErQixzQkFBL0I7SUFHcUJDLG1CLFdBRHBCSCxrQkFBa0IsRSxVQW1DaEJDLGtCQUFrQixFOzs7OztBQTlCbkI7OztBQUdBLCtCQUFZRyxNQUFaLEVBQTRCO0FBQUE7O0FBQUE7O0FBQzFCLDZGQUFNQSxNQUFOO0FBRDBCLFVBTHBCQyxPQUtvQjtBQUcxQixVQUFLQSxPQUFMLEdBQWVOLEdBQUcsQ0FBQ0ssTUFBRCxFQUFTLFFBQVQsRUFBbUIsRUFBbkIsQ0FBbEI7QUFIMEI7QUFJM0I7QUFFRDs7Ozs7Ozs7MkNBSXNDO0FBRXBDLFVBQU1FLE9BQU8sR0FBRSxLQUFLQyxRQUFMLENBQWNSLEdBQWQsRUFBZjs7QUFDQSxVQUFNUyxTQUFTLEdBQUdULEdBQUcsQ0FBQ08sT0FBRCxFQUFVLFlBQVYsRUFBd0IsUUFBeEIsQ0FBckI7QUFDQSxVQUFNRyxXQUFXLEdBQUdWLEdBQUcsQ0FBQ08sT0FBRCxFQUFVLGNBQVYsRUFBMEIsSUFBMUIsQ0FBdkI7QUFFQSxhQUFPO0FBQ0xJLFFBQUFBLGFBQWEsWUFBS0YsU0FBTCxjQUFrQkMsV0FBbEI7QUFEUixPQUFQO0FBR0Q7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT21CRSxnQkFBQUEsTSwyREFBaUIsRTtBQUFJQyxnQkFBQUEsRywyREFBYyxjO0FBRTlDQyxnQkFBQUEsTSxHQUFpQjtBQUNyQiwyQkFBU2QsR0FBRyxDQUFDLEtBQUtNLE9BQU4sRUFBZSxPQUFmLEVBQXdCLEVBQXhCLENBRFM7QUFFckIsK0JBQWFOLEdBQUcsQ0FBQyxLQUFLTSxPQUFOLEVBQWUsSUFBZixFQUFxQixFQUFyQixDQUZLO0FBR3JCLG1DQUFpQk4sR0FBRyxDQUFDLEtBQUtNLE9BQU4sRUFBZSxRQUFmLEVBQXlCLEVBQXpCO0FBSEMsaUI7QUFNakJTLGdCQUFBQSxJO0FBQWlCQyxrQkFBQUEsVUFBVSxFQUFFO21CQUFlRixNLEVBQVdGLE07aURBRXRELEtBQUtLLFFBQUwsQ0FBY0MsSUFBZCxDQUFtQkwsR0FBbkIsRUFBd0JFLElBQXhCLEVBQThCSSxJQUE5QixDQUFtQyxVQUFBQyxRQUFRLEVBQUk7QUFDcEQsa0JBQUEsTUFBSSxDQUFDWixRQUFMLENBQWNhLEtBQWQsQ0FBb0JELFFBQVEsQ0FBQ0wsSUFBN0IsRUFBbUNJLElBQW5DLENBQXdDLFlBQU07QUFFNUNHLG9CQUFBQSxNQUFNLENBQUNDLE1BQVAsQ0FDRSxNQUFJLENBQUNOLFFBQUwsQ0FBY08sUUFBZCxDQUF1QkMsT0FBdkIsQ0FBK0JDLE1BRGpDLEVBRUUsTUFBSSxDQUFDQyxvQkFBTCxFQUZGO0FBSUQsbUJBTkQ7QUFPRCxpQkFSTSxDOzs7Ozs7Ozs7Ozs7Ozs7O0FBV1Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPSSxxQkFBS25CLFFBQUwsQ0FBY29CLE1BQWQsR0FBdUJULElBQXZCLENBQTRCLFlBQU07QUFFaEMseUJBQU8sTUFBSSxDQUFDRixRQUFMLENBQWNPLFFBQWQsQ0FBdUJDLE9BQXZCLENBQStCQyxNQUEvQixDQUFzQyxlQUF0QyxDQUFQO0FBQ0QsaUJBSEQ7Ozs7Ozs7O3NCQUtNLElBQUlHLEtBQUosYzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXBFcUMxQixrQjtTQUE1QkMsbUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBLZXJuZWxcbmltcG9ydCB7IGdldCB9IGZyb20gJ0BrZXJuZWwtanMvc3VwcG9ydCc7XG5cbi8vIERlY29yYXRvcnNcbmltcG9ydCBWYWxpZGF0ZU9BdXRoQ2xhc3MgZnJvbSAnLi4vZGVjb3JhdG9ycy9WYWxpZGF0ZU9BdXRoQ2xhc3MnO1xuaW1wb3J0IFZhbGlkYXRlVXNlclBhcmFtcyBmcm9tICcuLi9kZWNvcmF0b3JzL1ZhbGlkYXRlVXNlclBhcmFtcyc7XG5cbi8vIENsYXNzZXNcbmltcG9ydCBCYXNlQXV0aGVudGljYXRpb24gZnJvbSAnLi9CYXNlQXV0aGVudGljYXRpb24nO1xuXG5AVmFsaWRhdGVPQXV0aENsYXNzKClcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9BdXRoQXV0aGVudGljYXRpb24gZXh0ZW5kcyBCYXNlQXV0aGVudGljYXRpb24ge1xuXG4gIHByaXZhdGUgX2NsaWVudDogb2JqZWN0O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IGNvbmZpZ1xuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBvYmplY3QpIHtcbiAgICBzdXBlcihjb25maWcpO1xuXG4gICAgdGhpcy5fY2xpZW50ID0gZ2V0KGNvbmZpZywgJ2NsaWVudCcsIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gIHtvYmplY3R9IGRhdGFcbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgcHVibGljIGF1dGhvcml6YXRpb25IZWFkZXJzKCk6IG9iamVjdCB7XG4gICAgXG4gICAgY29uc3Qgc2Vzc2lvbiA9dGhpcy5fc3RvcmFnZS5nZXQoKTtcbiAgICBjb25zdCB0b2tlblR5cGUgPSBnZXQoc2Vzc2lvbiwgJ3Rva2VuX3R5cGUnLCAnQmVhcmVyJyk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBnZXQoc2Vzc2lvbiwgJ2FjY2Vzc190b2tlbicsIG51bGwpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIEF1dGhvcml6YXRpb246IGAke3Rva2VuVHlwZX0gJHthY2Nlc3NUb2tlbn1gLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB1c2VyIGFjY2VzcyB0b2tlbnMuXG4gICAqIEBwYXJhbSAge29iamVjdH0gcGFyYW1zXG4gICAqIEBwYXJhbSAge3N0cmluZ30gdXJsXG4gICAqIEByZXR1cm5zIFByb21pc2VcbiAgICovXG4gIEBWYWxpZGF0ZVVzZXJQYXJhbXMoKVxuICBwdWJsaWMgYXN5bmMgbG9naW4ocGFyYW1zOiBvYmplY3QgPSB7fSwgdXJsOiBzdHJpbmcgPSAnL29hdXRoL3Rva2VuJyk6IFByb21pc2UgPCBhbnkgPiB7XG5cbiAgICBjb25zdCBjbGllbnQ6IG9iamVjdCA9IHtcbiAgICAgICdzY29wZSc6IGdldCh0aGlzLl9jbGllbnQsICdzY29wZScsICcnKSxcbiAgICAgICdjbGllbnRfaWQnOiBnZXQodGhpcy5fY2xpZW50LCAnaWQnLCAnJyksXG4gICAgICAnY2xpZW50X3NlY3JldCc6IGdldCh0aGlzLl9jbGllbnQsICdzZWNyZXQnLCAnJylcbiAgICB9O1xuXG4gICAgY29uc3QgZGF0YTogb2JqZWN0ID0geyBncmFudF90eXBlOiAncGFzc3dvcmQnLCAuLi5jbGllbnQsIC4uLnBhcmFtcyB9O1xuXG4gICAgcmV0dXJuIHRoaXMuX3JlcXVlc3QucG9zdCh1cmwsIGRhdGEpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5fc3RvcmFnZS5zdG9yZShyZXNwb25zZS5kYXRhKS50aGVuKCgpID0+IHtcblxuICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHRoaXMuX3JlcXVlc3QuZGVmYXVsdHMuaGVhZGVycy5jb21tb24sXG4gICAgICAgICAgdGhpcy5hdXRob3JpemF0aW9uSGVhZGVycygpXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIHVzZXIgZGF0YSBieSBsb2dnaW5nIG91dC5cbiAgICogQHJldHVybnMgUHJvbWlzZVxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvZ291dCgpOiBQcm9taXNlIDwgYW55ID4ge1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX3N0b3JhZ2UucmV2b2tlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIFxuICAgICAgICBkZWxldGUgdGhpcy5fcmVxdWVzdC5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQXV0aG9yaXphdGlvbiddO1xuICAgICAgfSk7XG4gICAgfSBjYXRjaChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZSk7XG4gICAgfVxuICB9XG59Il19