initial commit

This commit is contained in:
2026-03-11 17:12:28 +08:00
commit 5d1e1cb7cb
61 changed files with 2971 additions and 0 deletions

16
apps/users/utils.py Normal file
View File

@@ -0,0 +1,16 @@
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),
)