paperless-ngx/src/paperless/signals.py

33 lines
1 KiB
Python
Raw Normal View History

2022-12-31 13:13:19 -08:00
import logging
from django.conf import settings
from ipware import IpWare
2022-12-31 13:13:19 -08:00
logger = logging.getLogger("paperless.auth")
# https://docs.djangoproject.com/en/4.1/ref/contrib/auth/#django.contrib.auth.signals.user_login_failed
def handle_failed_login(sender, credentials, request, **kwargs):
ipware = IpWare(proxy_trusted_list=settings.TRUSTED_PROXIES)
client_ip, _ = ipware.get_client_ip(
meta=request.META,
2022-12-31 13:13:19 -08:00
)
2023-06-03 10:41:04 +02:00
username = credentials.get("username") or "anonymous"
2022-12-31 13:13:19 -08:00
if client_ip is None:
logger.info(
2023-06-03 10:41:04 +02:00
f"Login failed for user `{username}`. Unable to determine IP address.",
2022-12-31 13:13:19 -08:00
)
else:
if client_ip.is_global:
2022-12-31 13:13:19 -08:00
# We got the client's IP address
logger.info(
2023-06-03 10:41:04 +02:00
f"Login failed for user `{username}` from IP `{client_ip}.`",
2022-12-31 13:13:19 -08:00
)
else:
# The client's IP address is private
logger.info(
2023-06-03 10:41:04 +02:00
f"Login failed for user `{username}`"
f" from private IP `{client_ip}.`",
2022-12-31 13:13:19 -08:00
)