diff --git a/src/pretix/base/models/base.py b/src/pretix/base/models/base.py index 64e37088f7..f27f263f26 100644 --- a/src/pretix/base/models/base.py +++ b/src/pretix/base/models/base.py @@ -151,12 +151,30 @@ class LoggingMixin: logentry = LogEntry(content_object=self, user=user, action_type=action, event=event, organizer_id=organizer_id, **kwargs) if isinstance(data, dict): - sensitivekeys = ['password', 'secret', 'api_key'] + # sensitivekeys are matched whether contained, not exactly + sensitivekeys = [ + 'token', + 'apikey', + '_key', + 'password', + 'Password', + '_pass', + 'secret', + ] + def clean_dict_recursive(d): + data = {} + for k, v in d.items(): + print(k, v) + if not v: + pass + elif any([sensitivekey in k for sensitivekey in sensitivekeys]): + v = "********" + elif isinstance(v, dict): + v = clean_dict_recursive(v) + data[k] = v + return data - for sensitivekey in sensitivekeys: - for k, v in data.items(): - if (sensitivekey in k) and v: - data[k] = "********" + data = clean_dict_recursive(data) logentry.data = json.dumps(data, cls=CustomJSONEncoder, sort_keys=True) elif data: