fix(logs): redact sensitive payloads in storage and export
This commit is contained in:
@@ -364,11 +364,15 @@ async def export_logs_csv_handler(callback: types.CallbackQuery,
|
|||||||
_("admin_csv_header_telegram_username"),
|
_("admin_csv_header_telegram_username"),
|
||||||
_("admin_csv_header_telegram_first_name"),
|
_("admin_csv_header_telegram_first_name"),
|
||||||
_("admin_csv_header_event_type"),
|
_("admin_csv_header_event_type"),
|
||||||
_("admin_csv_header_content"),
|
|
||||||
_("admin_csv_header_is_admin_event"),
|
_("admin_csv_header_is_admin_event"),
|
||||||
_("admin_csv_header_target_user_id"),
|
_("admin_csv_header_target_user_id"),
|
||||||
_("admin_csv_header_raw_update_preview")
|
|
||||||
]
|
]
|
||||||
|
include_sensitive_fields = bool(settings.LOG_EXPORT_INCLUDE_SENSITIVE)
|
||||||
|
if include_sensitive_fields:
|
||||||
|
headers.extend([
|
||||||
|
_("admin_csv_header_content"),
|
||||||
|
_("admin_csv_header_raw_update_preview"),
|
||||||
|
])
|
||||||
csv_writer.writerow(headers)
|
csv_writer.writerow(headers)
|
||||||
|
|
||||||
# Write data rows
|
# Write data rows
|
||||||
@@ -387,11 +391,14 @@ async def export_logs_csv_handler(callback: types.CallbackQuery,
|
|||||||
log.telegram_username or '',
|
log.telegram_username or '',
|
||||||
log.telegram_first_name or '',
|
log.telegram_first_name or '',
|
||||||
log.event_type or '',
|
log.event_type or '',
|
||||||
content_clean,
|
|
||||||
'Yes' if log.is_admin_event else 'No',
|
'Yes' if log.is_admin_event else 'No',
|
||||||
log.target_user_id or '',
|
log.target_user_id or '',
|
||||||
raw_update_clean
|
|
||||||
]
|
]
|
||||||
|
if include_sensitive_fields:
|
||||||
|
row.extend([
|
||||||
|
content_clean,
|
||||||
|
raw_update_clean,
|
||||||
|
])
|
||||||
csv_writer.writerow(row)
|
csv_writer.writerow(row)
|
||||||
|
|
||||||
# Create file
|
# Create file
|
||||||
|
|||||||
@@ -40,13 +40,14 @@ class ActionLoggerMiddleware(BaseMiddleware):
|
|||||||
is_admin_event_flag = True
|
is_admin_event_flag = True
|
||||||
|
|
||||||
raw_update_snippet = None
|
raw_update_snippet = None
|
||||||
try:
|
if self.settings.LOG_STORE_RAW_UPDATES:
|
||||||
raw_update_snippet = event.model_dump_json(exclude_none=True,
|
try:
|
||||||
indent=None)[:1000]
|
raw_update_snippet = event.model_dump_json(exclude_none=True,
|
||||||
except AttributeError:
|
indent=None)[:1000]
|
||||||
raw_update_snippet = str(event)[:1000]
|
except AttributeError:
|
||||||
except Exception:
|
raw_update_snippet = str(event)[:1000]
|
||||||
raw_update_snippet = str(event)[:1000]
|
except Exception:
|
||||||
|
raw_update_snippet = str(event)[:1000]
|
||||||
|
|
||||||
current_event_type = event.event_type
|
current_event_type = event.event_type
|
||||||
|
|
||||||
@@ -83,7 +84,7 @@ class ActionLoggerMiddleware(BaseMiddleware):
|
|||||||
"telegram_username": telegram_username,
|
"telegram_username": telegram_username,
|
||||||
"telegram_first_name": telegram_first_name,
|
"telegram_first_name": telegram_first_name,
|
||||||
"event_type": current_event_type,
|
"event_type": current_event_type,
|
||||||
"content": content[:1000] if content else "N/A",
|
"content": (content[:1000] if content else "N/A") if self.settings.LOG_STORE_MESSAGE_CONTENT else None,
|
||||||
"raw_update_preview": raw_update_snippet,
|
"raw_update_preview": raw_update_snippet,
|
||||||
"is_admin_event": is_admin_event_flag,
|
"is_admin_event": is_admin_event_flag,
|
||||||
"target_user_id": target_user_id_for_log,
|
"target_user_id": target_user_id_for_log,
|
||||||
|
|||||||
Reference in New Issue
Block a user