#!/usr/bin/env python3
"""
Test authentication and identify login issues
"""

import os
import sys
import django

# Setup Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'branch_system.settings_production')
django.setup()

from django.contrib.auth import get_user_model
from django.contrib.auth.hashers import check_password

def test_auth():
    """Test authentication system"""
    
    User = get_user_model()
    
    print("Testing authentication system...")
    
    # Check if admin user exists
    try:
        admin_user = User.objects.get(email='admin@branchbusinessadvance.com')
        print(f"✓ Admin user exists: {admin_user.email}")
        print(f"  Username: {admin_user.username}")
        print(f"  Is active: {admin_user.is_active}")
        print(f"  Is staff: {admin_user.is_staff}")
        print(f"  Is superuser: {admin_user.is_superuser}")
        print(f"  Role: {admin_user.role}")
        
        # Test password
        test_password = 'admin123'
        is_valid = check_password(test_password, admin_user.password)
        print(f"  Password valid: {is_valid}")
        
        if not is_valid:
            print("  ❌ Password is not valid!")
            print("  Setting new password...")
            admin_user.set_password(test_password)
            admin_user.save()
            print("  ✓ Password updated")
        
    except User.DoesNotExist:
        print("❌ Admin user not found")
        return
    
    # Test login with Django's authenticate
    from django.contrib.auth import authenticate
    user = authenticate(email='admin@branchbusinessadvance.com', password='admin123')
    if user:
        print("✓ Authentication successful")
    else:
        print("❌ Authentication failed")
    
    # Test with username
    user = authenticate(username='admin', password='admin123')
    if user:
        print("✓ Authentication with username successful")
    else:
        print("❌ Authentication with username failed")

if __name__ == "__main__":
    test_auth() 