async function testFrontendLogin() { console.log('🧪 測試前端登入狀態...\n'); try { // 1. 測試登入 API console.log('1. 測試登入 API...'); const loginResponse = await fetch('http://localhost:3000/api/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ email: 'admin@ai-platform.com', password: 'admin123456' }) }); if (loginResponse.ok) { const loginData = await loginResponse.json(); console.log('✅ 登入 API 成功'); console.log('用戶角色:', loginData.user?.role); // 2. 測試用戶資料 API console.log('\n2. 測試用戶資料 API...'); const profileResponse = await fetch('http://localhost:3000/api/auth/profile', { method: 'GET', headers: { 'Content-Type': 'application/json', // 注意:這裡沒有包含認證 token,因為我們沒有實現 JWT } }); console.log('用戶資料 API 狀態:', profileResponse.status); if (profileResponse.ok) { const profileData = await profileResponse.json(); console.log('✅ 用戶資料 API 成功'); console.log('用戶角色:', profileData.role); } else { console.log('❌ 用戶資料 API 失敗'); } // 3. 檢查管理員頁面 console.log('\n3. 檢查管理員頁面...'); const adminResponse = await fetch('http://localhost:3000/admin'); if (adminResponse.ok) { const pageContent = await adminResponse.text(); if (pageContent.includes('存取被拒')) { console.log('❌ 頁面顯示存取被拒'); // 檢查調試信息 const debugMatch = pageContent.match(/調試信息: 用戶=([^,]+), 角色=([^<]+)/); if (debugMatch) { console.log('📋 調試信息:', { 用戶: debugMatch[1], 角色: debugMatch[2] }); } } else if (pageContent.includes('儀表板') || pageContent.includes('管理員')) { console.log('✅ 管理員頁面正常顯示'); } else { console.log('⚠️ 頁面內容不確定'); } } } else { const errorData = await loginResponse.text(); console.log('❌ 登入 API 失敗:', loginResponse.status, errorData); } console.log('\n🎉 前端登入狀態測試完成!'); console.log('\n💡 建議:'); console.log('1. 檢查瀏覽器中的 localStorage 是否有用戶資料'); console.log('2. 確認登入後用戶狀態是否正確更新'); console.log('3. 檢查權限檢查邏輯是否正確'); } catch (error) { console.error('❌ 測試過程中發生錯誤:', error); } } testFrontendLogin();