Skip to content

Commit 578148b

Browse files
authored
Support PII Config in logStreams (#1130)
1 parent 87bcb42 commit 578148b

File tree

2 files changed

+58
-17
lines changed

2 files changed

+58
-17
lines changed

src/tools/auth0/handlers/logStreams.ts

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,29 @@ export const schema = {
1717
type: 'object',
1818
},
1919
},
20+
pii_config: {
21+
type: 'object',
22+
required: ['log_fields'],
23+
properties: {
24+
log_fields: {
25+
type: 'array',
26+
items: {
27+
type: 'string',
28+
enum: ['first_name', 'last_name', 'username', 'email', 'phone', 'address'],
29+
},
30+
},
31+
method: {
32+
type: 'string',
33+
enum: ['mask', 'hash'],
34+
default: 'hash',
35+
},
36+
algorithm: {
37+
type: 'string',
38+
enum: ['xxhash'],
39+
default: 'xxhash',
40+
},
41+
},
42+
},
2043
},
2144
required: ['name'],
2245
},
@@ -75,23 +98,21 @@ export default class LogStreamsHandler extends DefaultAPIHandler {
7598

7699
if (!logStreams) return;
77100

78-
const changes = await this.calcChanges(assets).then((changes) => {
79-
return {
80-
...changes,
81-
update: changes.update.map((update: LogStream) => {
82-
if (update.type === 'eventbridge' || update.type === 'eventgrid') {
83-
delete update.sink;
84-
}
85-
if (update.status === 'suspended') {
86-
// @ts-ignore because while status is usually expected for update payloads, it is ok to be omitted
87-
// for suspended log streams. Setting as `active` in these instances would probably be ok
88-
// but bit presumptuous, let suspended log streams remain suspended.
89-
delete update.status;
90-
}
91-
return update;
92-
}),
93-
};
94-
});
101+
const changes = await this.calcChanges(assets).then((changes) => ({
102+
...changes,
103+
update: changes.update.map((update: LogStream) => {
104+
if (update.type === 'eventbridge' || update.type === 'eventgrid') {
105+
delete update.sink;
106+
}
107+
if (update.status === 'suspended') {
108+
// @ts-ignore because while status is usually expected for update payloads, it is ok to be omitted
109+
// for suspended log streams. Setting as `active` in these instances would probably be ok
110+
// but bit presumptuous, let suspended log streams remain suspended.
111+
delete update.status;
112+
}
113+
return update;
114+
}),
115+
}));
95116

96117
await super.processChanges(assets, changes);
97118
}

test/tools/auth0/handlers/logStreams.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ const mockLogStreams = [
1414
splunkToken: '7b838bd0-028e-4d78-a82c-3564a2007770',
1515
splunkSecure: false,
1616
},
17+
pii_config: {
18+
log_fields: ['first_name', 'last_name', 'phone'],
19+
method: 'mask',
20+
algorithm: 'xxhash',
21+
},
1722
},
1823
{
1924
id: 'log-stream-2',
@@ -26,6 +31,11 @@ const mockLogStreams = [
2631
httpContentType: 'application/json',
2732
httpEndpoint: 'https://example.com/test',
2833
},
34+
pii_config: {
35+
log_fields: ['username', 'email', 'address'],
36+
method: 'hash',
37+
algorithm: 'xxhash',
38+
},
2939
},
3040
{
3141
id: 'log-stream-3',
@@ -107,6 +117,11 @@ describe('#logStreams handler', () => {
107117
splunkToken: '_VALUE_NOT_SHOWN_', // secret obfuscated
108118
splunkSecure: false,
109119
},
120+
pii_config: {
121+
log_fields: ['first_name', 'last_name', 'phone'],
122+
method: 'mask',
123+
algorithm: 'xxhash',
124+
},
110125
},
111126
{
112127
id: 'log-stream-2',
@@ -119,6 +134,11 @@ describe('#logStreams handler', () => {
119134
httpContentType: 'application/json',
120135
httpEndpoint: 'https://example.com/test',
121136
},
137+
pii_config: {
138+
log_fields: ['username', 'email', 'address'],
139+
method: 'hash',
140+
algorithm: 'xxhash',
141+
},
122142
},
123143
{
124144
id: 'log-stream-3',

0 commit comments

Comments
 (0)