Files
ai-showcase-platform/scripts/test-auth.js

91 lines
2.5 KiB
JavaScript

const mysql = require('mysql2/promise');
const jwt = require('jsonwebtoken');
const dbConfig = {
host: process.env.DB_HOST || 'mysql.theaken.com',
port: parseInt(process.env.DB_PORT || '33306'),
user: process.env.DB_USER || 'AI_Platform',
password: process.env.DB_PASSWORD || 'Aa123456',
database: process.env.DB_NAME || 'db_AI_Platform',
charset: 'utf8mb4',
timezone: '+08:00'
};
const JWT_SECRET = process.env.JWT_SECRET || 'good777';
async function testAuth() {
let connection;
try {
console.log('🧪 測試認證過程...');
connection = await mysql.createConnection(dbConfig);
console.log('✅ 資料庫連接成功');
// 1. 檢查用戶是否存在
console.log('\n1. 檢查用戶是否存在...');
const [users] = await connection.execute(
'SELECT id, name, email, role FROM users WHERE id = ?',
['mdxxt1xt7slle4g8wz8']
);
if (users.length === 0) {
console.log('❌ 用戶不存在');
return;
}
const user = users[0];
console.log('✅ 用戶存在:', user);
// 2. 生成 Token
console.log('\n2. 生成 JWT Token...');
const token = jwt.sign({
userId: user.id,
email: user.email,
role: user.role
}, JWT_SECRET, { expiresIn: '1h' });
console.log('✅ Token 生成成功');
console.log('Token:', token.substring(0, 50) + '...');
// 3. 驗證 Token
console.log('\n3. 驗證 JWT Token...');
const payload = jwt.verify(token, JWT_SECRET);
console.log('✅ Token 驗證成功:', payload);
// 4. 模擬認證查詢
console.log('\n4. 模擬認證查詢...');
const [authUser] = await connection.execute(
'SELECT * FROM users WHERE id = ? AND email = ?',
[payload.userId, payload.email]
);
if (authUser.length === 0) {
console.log('❌ 認證查詢失敗 - 用戶不存在');
} else {
console.log('✅ 認證查詢成功:', authUser[0]);
}
// 5. 檢查用戶角色
console.log('\n5. 檢查用戶角色...');
if (authUser.length > 0) {
const userRole = authUser[0].role;
console.log('用戶角色:', userRole);
if (userRole === 'admin' || userRole === 'developer') {
console.log('✅ 用戶有權限創建應用程式');
} else {
console.log('❌ 用戶沒有權限創建應用程式');
}
}
} catch (error) {
console.error('❌ 測試失敗:', error);
} finally {
if (connection) {
await connection.end();
}
}
}
testAuth();