實作註冊、登入功能
This commit is contained in:
40
scripts/check-passwords.js
Normal file
40
scripts/check-passwords.js
Normal file
@@ -0,0 +1,40 @@
|
||||
const mysql = require('mysql2/promise')
|
||||
|
||||
async function checkPasswords() {
|
||||
const config = {
|
||||
host: process.env.DB_HOST || 'mysql.theaken.com',
|
||||
port: parseInt(process.env.DB_PORT || '33306'),
|
||||
user: process.env.DB_USER || 'hr_assessment',
|
||||
password: process.env.DB_PASSWORD || 'QFOts8FlibiI',
|
||||
database: process.env.DB_NAME || 'db_hr_assessment',
|
||||
}
|
||||
|
||||
console.log('🔄 正在檢查用戶密碼狀態...')
|
||||
|
||||
try {
|
||||
const connection = await mysql.createConnection(config)
|
||||
|
||||
const [rows] = await connection.execute('SELECT id, name, email, password FROM users ORDER BY created_at')
|
||||
|
||||
console.log('\n📋 用戶密碼狀態:')
|
||||
console.log('=' .repeat(80))
|
||||
|
||||
rows.forEach((user, index) => {
|
||||
const isHashed = user.password.startsWith('$2b$') || user.password.startsWith('$2a$')
|
||||
const passwordStatus = isHashed ? '✅ 已雜湊' : '❌ 明文'
|
||||
const passwordPreview = isHashed ? user.password.substring(0, 20) + '...' : user.password
|
||||
|
||||
console.log(`${index + 1}. ${user.name} (${user.email})`)
|
||||
console.log(` 密碼狀態: ${passwordStatus}`)
|
||||
console.log(` 密碼內容: ${passwordPreview}`)
|
||||
console.log('')
|
||||
})
|
||||
|
||||
await connection.end()
|
||||
console.log('✅ 檢查完成')
|
||||
} catch (error) {
|
||||
console.error('❌ 檢查失敗:', error.message)
|
||||
}
|
||||
}
|
||||
|
||||
checkPasswords()
|
36
scripts/test-db.js
Normal file
36
scripts/test-db.js
Normal file
@@ -0,0 +1,36 @@
|
||||
const mysql = require('mysql2/promise')
|
||||
|
||||
async function testDatabaseConnection() {
|
||||
const config = {
|
||||
host: process.env.DB_HOST || 'mysql.theaken.com',
|
||||
port: parseInt(process.env.DB_PORT || '33306'),
|
||||
user: process.env.DB_USER || 'hr_assessment',
|
||||
password: process.env.DB_PASSWORD || 'QFOts8FlibiI',
|
||||
database: process.env.DB_NAME || 'db_hr_assessment',
|
||||
}
|
||||
|
||||
console.log('🔄 正在測試資料庫連接...')
|
||||
console.log('連接資訊:', {
|
||||
host: config.host,
|
||||
port: config.port,
|
||||
user: config.user,
|
||||
database: config.database
|
||||
})
|
||||
|
||||
try {
|
||||
const connection = await mysql.createConnection(config)
|
||||
await connection.ping()
|
||||
console.log('✅ 資料庫連接成功!')
|
||||
|
||||
// 測試查詢
|
||||
const [rows] = await connection.execute('SELECT 1 as test')
|
||||
console.log('✅ 查詢測試成功:', rows)
|
||||
|
||||
await connection.end()
|
||||
} catch (error) {
|
||||
console.error('❌ 資料庫連接失敗:', error.message)
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
testDatabaseConnection()
|
43
scripts/test-login.js
Normal file
43
scripts/test-login.js
Normal file
@@ -0,0 +1,43 @@
|
||||
const fetch = require('node-fetch')
|
||||
|
||||
async function testLogin() {
|
||||
console.log('🔄 正在測試登入功能...')
|
||||
|
||||
const testUsers = [
|
||||
{ email: 'admin@company.com', password: 'admin123' },
|
||||
{ email: 'user@company.com', password: 'user123' },
|
||||
{ email: 'manager@company.com', password: 'manager123' },
|
||||
{ email: 'test@company.com', password: 'test123' }
|
||||
]
|
||||
|
||||
for (const user of testUsers) {
|
||||
try {
|
||||
console.log(`\n測試用戶: ${user.email}`)
|
||||
|
||||
const response = await fetch('http://localhost:3000/api/auth/login', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify(user),
|
||||
})
|
||||
|
||||
const data = await response.json()
|
||||
|
||||
if (data.success) {
|
||||
console.log(`✅ 登入成功: ${data.user.name}`)
|
||||
console.log(` Role: ${data.user.role}`)
|
||||
console.log(` Token: ${data.accessToken ? '已生成' : '未生成'}`)
|
||||
} else {
|
||||
console.log(`❌ 登入失敗: ${data.error}`)
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`❌ 請求失敗: ${error.message}`)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 如果直接執行此檔案,則執行測試
|
||||
if (require.main === module) {
|
||||
testLogin().catch(console.error)
|
||||
}
|
Reference in New Issue
Block a user