@krowdy/kds-auth
Version:
React components that implement Google's Material Design.
436 lines (387 loc) • 14.4 kB
JavaScript
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;