Skip to content

Commit e020edb

Browse files
Create maskData.js
1 parent 81db06f commit e020edb

File tree

1 file changed

+49
-0
lines changed
  • Server-Side Components/Business Rules/Mask Sensitive Data in Description Field

1 file changed

+49
-0
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
(function executeRule(current, previous /*null when async*/) {
2+
3+
4+
5+
// Only run if description has a value
6+
if (current.description) {
7+
var desc = current.description.toString();
8+
9+
10+
// Regex patterns for sensitive data
11+
var ccRegex = /\b\d{13,16}\b/g; // 13–16 continuous digits
12+
var ccSpaced = /\b(\d{4}[- ]?){3}\d{4}\b/g; // 4-4-4-4 with spaces/dashes
13+
var ssnRegex = /\b\d{3}-\d{2}-\d{4}\b/g; // US SSN
14+
var phoneRegex = /(\+?\d{1,2}[- ]?)?\(?\d{3}\)?[- ]?\d{3}[- ]?\d{4}/g; // phone
15+
16+
var masked = desc;
17+
18+
// Apply masking with messages
19+
if (ccRegex.test(desc)) {
20+
gs.addInfoMessage("Credit card pattern found → masking");
21+
masked = masked.replace(ccRegex, "****-****-****-****");
22+
}
23+
24+
if (ccSpaced.test(desc)) {
25+
gs.addInfoMessage("Spaced/dashed credit card pattern found → masking");
26+
masked = masked.replace(ccSpaced, "****-****-****-****");
27+
}
28+
29+
if (ssnRegex.test(desc)) {
30+
gs.addInfoMessage("SSN pattern found → masking");
31+
masked = masked.replace(ssnRegex, "***-**-****");
32+
}
33+
34+
if (phoneRegex.test(desc)) {
35+
gs.addInfoMessage("Phone number pattern found → masking");
36+
masked = masked.replace(phoneRegex, "**********");
37+
}
38+
39+
// If changes were made, update the description
40+
if (masked !== desc) {
41+
current.description = masked;
42+
gs.addInfoMessage("Final masked description: " + masked);
43+
gs.log("Masking rule triggered on record: " + current.number, "MaskingRule");
44+
} else {
45+
gs.addInfoMessage("No sensitive data detected, nothing masked.");
46+
}
47+
}
48+
49+
})(current, previous);

0 commit comments

Comments
 (0)