UNPKG

@ixo/supamoto-bot-sdk

Version:

An SDK to easily interact with Supamoto bot db

98 lines (97 loc) 4.62 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.decryptCustomerData = decryptCustomerData; exports.decryptCustomerDataField = decryptCustomerDataField; exports.encryptCustomerDataField = encryptCustomerDataField; exports.extractCustomerData = extractCustomerData; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _encryption = require("./encryption"); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function extractCustomerDataFromLeadClaim(claim) { var customerId = claim['ecs:customerId']; var givenName = claim['schema:givenName']; var familyName = claim['schema:familyName']; var nationalId = claim['person:nationalId']; return { customerId: customerId, givenName: givenName, familyName: familyName, nationalId: nationalId }; } function extractCustomerDataFromScreeningClaim(claim) { var customerId = claim['ecs:customerId']; var givenName = claim['schema:givenName']; var familyName = claim['schema:familyName']; var nationalId = claim['person:nationalId']; var city = claim['schema:city']; var locality = claim['schema:addressLocality']; var country = claim['schema:addressCountry']; var region = claim['schema:addressRegion']; return { customerId: customerId, givenName: givenName, familyName: familyName, nationalId: nationalId, address: { city: city, locality: locality, country: country, region: region } }; } function extractCustomerDataFromContractClaim(claim) { var customerId = claim['ecs:customerId']; var nationalId = claim['person:nationalId']; var profileImage = claim['schema:profileImage']; return { customerId: customerId, nationalId: nationalId, profileImage: profileImage }; } function extractCustomerData(claimType, claim) { switch (claimType) { case 'lead': return extractCustomerDataFromLeadClaim(claim); case 'screening': return extractCustomerDataFromScreeningClaim(claim); case 'contract': return extractCustomerDataFromContractClaim(claim); } } function decryptCustomerDataField(field, customerId, key) { try { var res = (0, _encryption.decryptData)({ data: field, aad: (0, _encryption.aadFor)([customerId], 'customers') }, key); return res.toString('utf-8'); } catch (_unused) { return 'encrypted'; } } function encryptCustomerDataField(field, customerId, key) { if (!field) return null; return (0, _encryption.encryptData)({ data: Buffer.from(field), aad: (0, _encryption.aadFor)([customerId], 'customers') }, key); } function decryptCustomerData(customerData, encKey) { return _objectSpread(_objectSpread({}, customerData), {}, { full_name: customerData.full_name ? decryptCustomerDataField(customerData.full_name, customerData.customer_id, encKey) : undefined, email: customerData.email ? decryptCustomerDataField(customerData.email, customerData.customer_id, encKey) : undefined, encrypted_pin: customerData.encrypted_pin ? decryptCustomerDataField(customerData.encrypted_pin, customerData.customer_id, encKey) : undefined, national_id: customerData.national_id ? decryptCustomerDataField(customerData.national_id, customerData.customer_id, encKey) : undefined, address: customerData.address ? decryptCustomerDataField(customerData.address, customerData.customer_id, encKey) : undefined, given_name: customerData.given_name ? decryptCustomerDataField(customerData.given_name, customerData.customer_id, encKey) : undefined, family_name: customerData.family_name ? decryptCustomerDataField(customerData.family_name, customerData.customer_id, encKey) : undefined, profile_image: customerData.profile_image ? decryptCustomerDataField(customerData.profile_image, customerData.customer_id, encKey) : undefined }); }