@kernel-js/auth
Version:
159 lines (135 loc) • 10.5 kB
JavaScript
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