88from rest_framework .views import APIView
99
1010from .models import EmailVerificationToken , PasswordResetToken
11+
12+
13+ def get_client_ip (request ):
14+ """Extract client IP address from request, handling proxy headers."""
15+ x_forwarded_for = request .META .get ("HTTP_X_FORWARDED_FOR" )
16+ if x_forwarded_for :
17+ return x_forwarded_for .split ("," )[0 ].strip ()
18+ return request .META .get ("REMOTE_ADDR" )
19+
20+
1121from .serializers import (
1222 ChangePasswordSerializer ,
1323 DeleteAccountSerializer ,
@@ -34,8 +44,8 @@ def post(self, request):
3444 password = serializer .validated_data ["password" ],
3545 )
3646
37- # Send verification email asynchronously
38- send_verification_email .delay (user .id )
47+ client_ip = get_client_ip ( request )
48+ send_verification_email .delay (user .id , ip_address = client_ip )
3949
4050 # Log the user in
4151 login (request , user , backend = "django.contrib.auth.backends.ModelBackend" )
@@ -243,7 +253,8 @@ def post(self, request):
243253 status = status .HTTP_400_BAD_REQUEST ,
244254 )
245255
246- send_verification_email .delay (user .id )
256+ client_ip = get_client_ip (request )
257+ send_verification_email .delay (user .id , ip_address = client_ip )
247258
248259 return Response ({"message" : "Verification email sent." })
249260
0 commit comments