Skip to content

Commit cf9decf

Browse files
Update MaskData.js
1 parent 5331f0c commit cf9decf

File tree

1 file changed

+45
-5
lines changed
  • Server-Side Components/Business Rules/Mask Sensitive Data in Descript

1 file changed

+45
-5
lines changed
Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,49 @@
11
(function executeRule(current, previous /*null when async*/) {
2-
var desc = current.description + "";
3-
var ccRegex = /\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g;
42

5-
if (ccRegex.test(desc)) {
6-
current.description = desc.replace(ccRegex, "****-****-****-****");
7-
gs.addInfoMessage("Sensitive data was masked automatically.");
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+
}
847
}
48+
949
})(current, previous);

0 commit comments

Comments
 (0)