17 lines
486 B
Python
17 lines
486 B
Python
from apps.users.models import LoginAttempt
|
|
|
|
|
|
def _get_ip(request) -> str | None:
|
|
if not request:
|
|
return None
|
|
x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR")
|
|
return x_forwarded_for.split(",")[0] if x_forwarded_for else request.META.get("REMOTE_ADDR")
|
|
|
|
|
|
def record_login_attempt(request, user=None, status=LoginAttempt.StatusType.FAILED):
|
|
LoginAttempt.objects.create(
|
|
user=user,
|
|
status=status,
|
|
ip_address=_get_ip(request),
|
|
)
|