1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-22 06:19:38 +02:00

Add DisableCSRFForMobileLoginSignup middleware to handle CSRF checks for mobile login/signup requests

This commit is contained in:
Sean Morley 2025-05-12 10:42:26 -04:00
parent b0e8c025fc
commit 7c3c139e61
2 changed files with 17 additions and 1 deletions

View file

@ -29,4 +29,19 @@ class XSessionTokenMiddleware(MiddlewareMixin):
class DisableCSRFForSessionTokenMiddleware(MiddlewareMixin): class DisableCSRFForSessionTokenMiddleware(MiddlewareMixin):
def process_request(self, request): def process_request(self, request):
if 'X-Session-Token' in request.headers: if 'X-Session-Token' in request.headers:
setattr(request, '_dont_enforce_csrf_checks', True) setattr(request, '_dont_enforce_csrf_checks', True)
class DisableCSRFForMobileLoginSignup(MiddlewareMixin):
def process_request(self, request):
is_mobile = request.headers.get('X-Is-Mobile', '').lower() == 'true'
is_login_or_signup = request.path in ['/auth/browser/v1/auth/login', '/auth/browser/v1/auth/signup']
print(f"Request path: {request.path}")
print(f"Is mobile: {is_mobile}")
print(f"Is login/signup: {is_login_or_signup}")
print(f"Request headers: {request.headers}")
if is_mobile and is_login_or_signup:
print("✅ Disabling CSRF for mobile login/signup")
setattr(request, '_dont_enforce_csrf_checks', True)
else:
print("🔒 CSRF not disabled for this request")

View file

@ -71,6 +71,7 @@ MIDDLEWARE = (
'whitenoise.middleware.WhiteNoiseMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware',
'adventures.middleware.XSessionTokenMiddleware', 'adventures.middleware.XSessionTokenMiddleware',
'adventures.middleware.DisableCSRFForSessionTokenMiddleware', 'adventures.middleware.DisableCSRFForSessionTokenMiddleware',
'adventures.middleware.DisableCSRFForMobileLoginSignup',
'corsheaders.middleware.CorsMiddleware', 'corsheaders.middleware.CorsMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',