@ixo/supamoto-bot-sdk
Version:
An SDK to easily interact with Supamoto bot db
98 lines (97 loc) • 4.62 kB
JavaScript
;
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
});
}