UNPKG

@topgroup/diginext

Version:

A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.

134 lines (133 loc) 5.5 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.maskObject = exports.maskSensitiveInfo = exports.mask = exports.isMasked = exports.basicUserFields = void 0; const lodash_1 = __importStar(require("lodash")); exports.basicUserFields = ["_id", "id", "name", "slug", "verified", "image", "createdAt", "updatedAt"]; function isMasked(value) { return value === "***"; } exports.isMasked = isMasked; const mask = (str, leftUnmaskLength = 0, rightUnmaskLength, options = { char: "*" }) => { const { char } = options; if (rightUnmaskLength && rightUnmaskLength > str.length - leftUnmaskLength) rightUnmaskLength = str.length - leftUnmaskLength; const unmaskedFirst = leftUnmaskLength ? str.substring(0, leftUnmaskLength) : ""; const unmaskedLast = rightUnmaskLength ? str.substring(str.length - rightUnmaskLength) : ""; const toBeMaskedStr = str.substring(leftUnmaskLength, str.length - rightUnmaskLength); let maskedStr = ""; for (let i = 0; i < toBeMaskedStr.length; i++) { maskedStr += char; } return `${unmaskedFirst}${maskedStr}${unmaskedLast}`; }; exports.mask = mask; const maskSensitiveInfo = (data, user, role, route) => { // console.log("[mask-sensitive-info] typeof data :>> ", typeof data); // console.log("[mask-sensitive-info] route :>> ", route); var _a; // exclude masking data for some specific routes const skipMaskingRoutes = ["/api_key"]; if (skipMaskingRoutes.some((skipRoute) => (route === null || route === void 0 ? void 0 : route.indexOf(skipRoute)) > -1)) return data; // skip and return data as is if it's a boolean, number, or string if (typeof data === "boolean" || typeof data === "number" || typeof data === "string") return data; // console.log("[mask-sensitive-info] user :>> ", user); // console.log("[mask-sensitive-info] user.name :>> ", user.name); // console.log("[mask-sensitive-info] user.activeRole :>> ", user.activeRole); if ((_a = user === null || user === void 0 ? void 0 : user.activeRole) === null || _a === void 0 ? void 0 : _a._id) role = user.activeRole; // console.log("[mask-sensitive-info] role :>> ", role); if (!role) return; const maskedFields = (role === null || role === void 0 ? void 0 : role.maskedFields) || []; // console.log("[mask-sensitive-info] maskedFields :>> ", maskedFields); // mask fields if ((0, lodash_1.isArray)(data)) { data = data.map((item) => { /** * ONLY Mask fields for NOT-owned items */ // if (!isOwned(item, user)) { // maskedFields.map((maskedField) => { // if (_.has(item, maskedField)) item = _.set(item, maskedField, ""); // }); // } /** * Mask all fields */ maskedFields.map((maskedField) => { if (lodash_1.default.has(item, maskedField)) item = lodash_1.default.set(item, maskedField, ""); }); return item; }); } else { /** * ONLY Mask fields for NOT-owned items */ // if (!isOwned(data, user)) // maskedFields.map((maskedField) => { // if (_.has(data, maskedField)) data = _.set(data, maskedField, ""); // }); /** * Mask all fields */ maskedFields.map((maskedField) => { if (lodash_1.default.has(data, maskedField)) data = lodash_1.default.set(data, maskedField, ""); }); } return data; }; exports.maskSensitiveInfo = maskSensitiveInfo; /** * Mask fields of an object * @param data - The object to mask * @param options - The options * @returns The masked object */ const maskObject = (data, options) => { const { fields, char = "***" } = options; if ((0, lodash_1.isArray)(data)) { data = data.map((item) => { fields.map((maskedField) => { if (lodash_1.default.has(item, maskedField)) item = lodash_1.default.set(item, maskedField, char); }); return item; }); } else { fields.map((maskedField) => { if (lodash_1.default.has(data, maskedField)) data = lodash_1.default.set(data, maskedField, char); }); } return data; }; exports.maskObject = maskObject;