UNPKG

@krowdy/kds-auth

Version:

React components that implement Google's Material Design.

436 lines (387 loc) 14.4 kB
import _regeneratorRuntime from "@babel/runtime/regenerator"; import _extends from "@babel/runtime/helpers/esm/extends"; import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; import _createClass from "@babel/runtime/helpers/esm/createClass"; import qs from 'query-string'; var AuthClient = /*#__PURE__*/function () { function AuthClient(baseUrl) { _classCallCheck(this, AuthClient); this.urlApi = "".concat(baseUrl, "/api"); } _createClass(AuthClient, [{ key: "buildUrlUri", value: function buildUrlUri(data) { var keys = Object.keys(data); return keys.map(function (key) { return "".concat(key, "=").concat(data[key]); }).join('&'); } }, { key: "getData", value: function getData(url) { var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return fetch(url, { headers: { Authorization: "Bearer ".concat(headers.accessToken), 'Content-type': 'application/json' }, method: 'GET' }).then(function (res) { return res.json(); }); } }, { key: "postData", value: function postData(url, body) { return fetch(url, { body: JSON.stringify(body), headers: { 'Content-type': 'application/json' }, method: 'POST' }).then(function (res) { return res.json(); }); } }, { key: "postWithCredentials", value: function postWithCredentials(url) { var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var body = arguments.length > 2 ? arguments[2] : undefined; return fetch(url, { body: JSON.stringify(body), headers: { Authorization: "Bearer ".concat(headers.accessToken), 'Content-type': 'application/json' }, method: 'POST' }).then(function (res) { return res.json(); }); } }, { key: "postDataEncoded", value: function postDataEncoded(url, body) { return fetch(url, { body: this.buildUrlUri(body), headers: { 'Content-type': 'application/x-www-form-urlencoded' }, method: 'POST' }).then(function (res) { return res.json(); }); } }, { key: "verifySession", value: function verifySession(_ref) { var accessToken, refreshToken, iduser, response; return _regeneratorRuntime.async(function verifySession$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: accessToken = _ref.accessToken, refreshToken = _ref.refreshToken, iduser = _ref.iduser; _context.prev = 1; if (accessToken) { _context.next = 4; break; } throw Error('No tiene sesión abierta.'); case 4: _context.next = 6; return _regeneratorRuntime.awrap(this.getData("".concat(this.urlApi, "/authenticate"), { accessToken: accessToken })); case 6: response = _context.sent; if (!(!response || !response.success)) { _context.next = 9; break; } throw Error('Error al verificar cuenta.'); case 9: return _context.abrupt("return", _extends({}, response, { accessToken: accessToken, iduser: iduser, refreshToken: refreshToken })); case 12: _context.prev = 12; _context.t0 = _context["catch"](1); return _context.abrupt("return", { error: _context.t0.message, success: false }); case 15: case "end": return _context.stop(); } } }, null, this, [[1, 12]], Promise); } }, { key: "validateAccount", value: function validateAccount(_ref2) { var source, recoveryPass, params, response, authMode, type, value, success; return _regeneratorRuntime.async(function validateAccount$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: source = _ref2.source, recoveryPass = _ref2.recoveryPass; _context2.prev = 1; params = qs.parse(window.location.search); _context2.next = 5; return _regeneratorRuntime.awrap(this.postData("".concat(this.urlApi, "/onetap/validate"), { jobId: params.jobId, recoveryPass: recoveryPass, source: source })); case 5: response = _context2.sent; if (!(!response || !response.success)) { _context2.next = 8; break; } return _context2.abrupt("return", { success: false }); case 8: authMode = response.authMode, type = response.type, value = response.value, success = response.success; return _context2.abrupt("return", { hasPassword: authMode === 'password', success: success, type: type, value: value }); case 12: _context2.prev = 12; _context2.t0 = _context2["catch"](1); return _context2.abrupt("return", { error: _context2.t0.message, success: false }); case 15: case "end": return _context2.stop(); } } }, null, this, [[1, 12]], Promise); } }, { key: "verifyCode", value: function verifyCode(_ref3) { var code, value, type, _ref3$clientId, clientId, _ref3$clientSecret, clientSecret, keepSession, allowAds, params, response; return _regeneratorRuntime.async(function verifyCode$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: code = _ref3.code, value = _ref3.value, type = _ref3.type, _ref3$clientId = _ref3.clientId, clientId = _ref3$clientId === void 0 ? 'candidate' : _ref3$clientId, _ref3$clientSecret = _ref3.clientSecret, clientSecret = _ref3$clientSecret === void 0 ? 'nuevo' : _ref3$clientSecret, keepSession = _ref3.keepSession, allowAds = _ref3.allowAds; _context3.prev = 1; params = qs.parse(window.location.search); _context3.next = 5; return _regeneratorRuntime.awrap(this.postDataEncoded("".concat(this.urlApi, "/onetap/verifycode"), { allowAds: allowAds, client_id: clientId, client_secret: clientSecret, code: code, grant_type: 'authorization_code', jobId: params.jobId, keepSession: keepSession, type: type, value: value })); case 5: response = _context3.sent; if (!(!response || !response.success)) { _context3.next = 8; break; } return _context3.abrupt("return", { error: response.error, success: false }); case 8: return _context3.abrupt("return", response); case 11: _context3.prev = 11; _context3.t0 = _context3["catch"](1); return _context3.abrupt("return", { error: _context3.t0.message, success: false }); case 14: case "end": return _context3.stop(); } } }, null, this, [[1, 11]], Promise); } }, { key: "loginByPassword", value: function loginByPassword(_ref4) { var email, password, _ref4$clientId, clientId, clientSecret, allowAds, keepSession, response; return _regeneratorRuntime.async(function loginByPassword$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: email = _ref4.email, password = _ref4.password, _ref4$clientId = _ref4.clientId, clientId = _ref4$clientId === void 0 ? 'candidate' : _ref4$clientId, clientSecret = _ref4.clientSecret, allowAds = _ref4.allowAds, keepSession = _ref4.keepSession; _context4.prev = 1; _context4.next = 4; return _regeneratorRuntime.awrap(this.postDataEncoded("".concat(this.urlApi, "/oauth/token"), { allowAds: allowAds, client_id: clientId, client_secret: clientSecret, grant_type: 'password', keepSession: keepSession, password: password, username: email.trim() })); case 4: response = _context4.sent; if (!(!response || !response.success)) { _context4.next = 7; break; } return _context4.abrupt("return", { success: false }); case 7: return _context4.abrupt("return", response); case 10: _context4.prev = 10; _context4.t0 = _context4["catch"](1); return _context4.abrupt("return", { error: _context4.t0.message, success: false }); case 13: case "end": return _context4.stop(); } } }, null, this, [[1, 10]], Promise); } }, { key: "updateAccount", value: function updateAccount(accessToken, body) { var response; return _regeneratorRuntime.async(function updateAccount$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: _context5.prev = 0; _context5.next = 3; return _regeneratorRuntime.awrap(this.postWithCredentials("".concat(this.urlApi, "/onetap/update/account"), { accessToken: accessToken }, body)); case 3: response = _context5.sent; if (!(!response || !response.success)) { _context5.next = 6; break; } throw Error('Error al actualizar cuenta.'); case 6: return _context5.abrupt("return", response); case 9: _context5.prev = 9; _context5.t0 = _context5["catch"](0); return _context5.abrupt("return", { error: _context5.t0.message, success: false }); case 12: case "end": return _context5.stop(); } } }, null, this, [[0, 9]], Promise); } }, { key: "updatePassword", value: function updatePassword(_ref5) { var password = _ref5.password, accessToken = _ref5.accessToken; return this.postWithCredentials("".concat(this.urlApi, "/onetap/update/password"), { accessToken: accessToken }, { password: password }); } }, { key: "logout", value: function logout(args) { return _regeneratorRuntime.async(function logout$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: _context6.prev = 0; return _context6.abrupt("return", this.getData("".concat(this.urlApi, "/logout?").concat(this.buildUrlUri(args)))); case 4: _context6.prev = 4; _context6.t0 = _context6["catch"](0); throw _context6.t0; case 7: case "end": return _context6.stop(); } } }, null, this, [[0, 4]], Promise); } }, { key: "loginSocialNetwork", value: function loginSocialNetwork(args) { var referrer, tokenId, network, _args$clientId, clientId, _args$clientSecret, clientSecret, allowAds, keepSession, response, _args7 = arguments; return _regeneratorRuntime.async(function loginSocialNetwork$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: referrer = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : 'auth'; _context7.prev = 1; tokenId = args.tokenId, network = args.network, _args$clientId = args.clientId, clientId = _args$clientId === void 0 ? 'candidate' : _args$clientId, _args$clientSecret = args.clientSecret, clientSecret = _args$clientSecret === void 0 ? 'nuevo' : _args$clientSecret, allowAds = args.allowAds, keepSession = args.keepSession; _context7.next = 5; return _regeneratorRuntime.awrap(this.postDataEncoded("".concat(this.urlApi, "/oauth/token"), { client_id: clientId, client_secret: clientSecret, code: "".concat(allowAds, "-").concat(keepSession, "-").concat(network || '', "-").concat(referrer || '', "-krowdy-").concat(tokenId), grant_type: 'authorization_code', social: network, socialId: tokenId })); case 5: response = _context7.sent; if (!(!response || !response.success)) { _context7.next = 8; break; } throw Error('Error al loguearse con redes sociales.'); case 8: return _context7.abrupt("return", response); case 11: _context7.prev = 11; _context7.t0 = _context7["catch"](1); return _context7.abrupt("return", { error: _context7.t0.message, success: false }); case 14: case "end": return _context7.stop(); } } }, null, this, [[1, 11]], Promise); } }]); return AuthClient; }(); export default AuthClient;