| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #!/usr/bin/env python3
- import requests
- import json
- # Test the exact API call that the frontend makes
- admin_login_data = {
- 'username': 'admin',
- 'password': 'Admin123456'
- }
- try:
- # Login as admin
- login_response = requests.post('http://localhost:8000/api/v1/auth/login', json=admin_login_data)
- if login_response.status_code == 200:
- login_result = login_response.json()
- if login_result.get('code') == 0:
- token = login_result['data']['access_token']
- print('✅ Admin login successful')
-
- headers = {'Authorization': f'Bearer {token}'}
-
- # First get all menus (what frontend loads for the tree)
- print('\n=== Testing All Menus API (for tree data) ===')
- all_menus_response = requests.get('http://localhost:8000/api/v1/admin/menus?page_size=1000', headers=headers)
- if all_menus_response.status_code == 200:
- all_menus_result = all_menus_response.json()
- if all_menus_result.get('code') == 0:
- all_menus = all_menus_result['data']['items']
- print(f'✅ All menus API: {len(all_menus)} total menus')
-
- # Count menu types
- main_menus = [m for m in all_menus if m['menu_type'] == 'menu' and not m['parent_id']]
- sub_menus = [m for m in all_menus if m['menu_type'] == 'menu' and m['parent_id']]
- buttons = [m for m in all_menus if m['menu_type'] == 'button']
-
- print(f' Main menus: {len(main_menus)}')
- print(f' Sub menus: {len(sub_menus)}')
- print(f' Buttons: {len(buttons)}')
- else:
- print(f'❌ All menus API error: {all_menus_result.get("message")}')
- else:
- print(f'❌ All menus API HTTP error: {all_menus_response.status_code}')
-
- # Get user role ID
- roles_response = requests.get('http://localhost:8000/api/v1/admin/roles', headers=headers)
- if roles_response.status_code == 200:
- roles_result = roles_response.json()
- if roles_result.get('code') == 0:
- roles = roles_result['data']['items']
- user_role = next((r for r in roles if r['name'] == 'user'), None)
-
- if user_role:
- user_role_id = user_role['id']
- print(f'\n=== Testing User Role Permissions API ===')
- print(f'User role ID: {user_role_id}')
-
- # Get role permissions (what frontend uses for checked keys)
- role_perms_response = requests.get(
- f'http://localhost:8000/api/v1/admin/roles/{user_role_id}/menus',
- headers=headers
- )
-
- if role_perms_response.status_code == 200:
- role_perms_result = role_perms_response.json()
- if role_perms_result.get('code') == 0:
- data = role_perms_result['data']
- menu_ids = data.get('menu_ids', [])
-
- print(f'✅ Role permissions API successful')
- print(f'📋 Returned menu_ids: {menu_ids}')
- print(f'📊 Count: {len(menu_ids)} permissions')
-
- # Check if any problematic menu IDs are in the list
- problematic_ids = []
- if all_menus:
- for menu in all_menus:
- if menu['name'] in ['user-management', 'role-management', 'menu-management', 'permission-management', 'app-management', 'log-management']:
- if menu['id'] in menu_ids:
- problematic_ids.append(menu['name'])
-
- if problematic_ids:
- print(f'❌ PROBLEM: Found problematic menu IDs in response: {problematic_ids}')
- else:
- print('✅ No problematic menu IDs found in API response')
-
- # Show first few menu IDs for debugging
- print(f'📝 First 10 menu IDs: {menu_ids[:10]}')
-
- else:
- print(f'❌ Role permissions API error: {role_perms_result.get("message")}')
- else:
- print(f'❌ Role permissions API HTTP error: {role_perms_response.status_code}')
- print(f'Response: {role_perms_response.text}')
- else:
- print('❌ User role not found in roles list')
- else:
- print(f'❌ Roles API error: {roles_result.get("message")}')
- else:
- print(f'❌ Roles API HTTP error: {roles_response.status_code}')
- else:
- print(f'❌ Login error: {login_result.get("message")}')
- else:
- print(f'❌ Login HTTP error: {login_response.status_code}')
-
- except Exception as e:
- print(f'❌ Request error: {e}')
|