91 lines
2.5 KiB
JavaScript
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();
|