#!/usr/bin/env python3 """ Debug login issue - check Redis. """ import re import httpx BASE_URL = "http://localhost:8000" def main(): print("Debugging login issue - detailed...") with httpx.Client(base_url=BASE_URL, timeout=30.0) as client: # Get login page response = client.get("/admin/login") print(f"Login page status: {response.status_code}") # Extract CSRF token match = re.search(r'name="csrf_token" value="([^"]+)"', response.text) csrf_token = match.group(1) if match else "" print(f"CSRF token: {csrf_token}") # Print ALL cookies print(f"\nCookies before login: {dict(client.cookies)}") # Submit login response = client.post( "/admin/login", data={ "username": "admin", "password": "admin123", "csrf_token": csrf_token, }, follow_redirects=False, # Don't follow redirect to see the response ) print(f"\nLogin response status: {response.status_code}") print(f"Login response headers: {dict(response.headers)}") print(f"Cookies after login: {dict(client.cookies)}") # Check if response has any content print(f"\nLogin response content (first 1000 chars):") print(response.text[:1000]) # Now try with a redirect follow print("\n\n=== Trying with redirect follow ===") client2 = httpx.Client(base_url=BASE_URL, timeout=30.0) response = client2.get("/admin/login") match = re.search(r'name="csrf_token" value="([^"]+)"', response.text) csrf_token = match.group(1) if match else "" response = client2.post( "/admin/login", data={ "username": "admin", "password": "admin123", "csrf_token": csrf_token, }, follow_redirects=True, ) print(f"Final status after redirect: {response.status_code}") print(f"Final URL: {response.url}") print(f"Final cookies: {dict(client2.cookies)}") print(f"Final content (first 500 chars): {response.text[:500]}") if __name__ == "__main__": main()