require('dotenv').config(); const express = require('express'); const bcrypt = require('bcryptjs'); const jwt = require('jsonwebtoken'); // const oracledb = require('oracledb'); // เอาคอมเมนต์ออกเมื่อรันจริง const app = express(); app.use(express.json()); const SECRET_KEY = process.env.JWT_SECRET; const PORT = process.env.PORT || 5000; app.post('/api/login', async (req, res) => { const { u_name, u_pass } = req.body; try { if (!u_name || !u_pass) { return res.status(400).json({ message: 'กรุณากรอก Username และ Password' }); } // ========================================================= // โค้ดดึงตัวแปรจาก .env มาต่อเชื่อม Oracle Database // ========================================================= /* const connection = await oracledb.getConnection({ user: process.env.DB_USER, password: process.env.DB_PASSWORD, // ประกอบ Host, Port และ Service Name เข้าด้วยกัน connectString: `${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_SERVICE}` }); const result = await connection.execute( `SELECT "U_Name", "U_pass", "Role_name" FROM "Member" WHERE "U_Name" = :1`, [u_name] ); const userFromDB = result.rows[0]; */ // จำลองผลลัพธ์จาก Database เพื่อให้โค้ดรันได้เบื้องต้น // (ในระบบจริง ให้ใช้ตัวแปร user จาก result ของ Database แทนนะคะ) const userFromDB = { U_Name: u_name, U_pass: '$2a$12$e8vX9YJ3p4Q9Z0L2K3M1OuN7P8Q9R0S1T2U3V4W5X6Y7Z8A9B0C1D', // รหัสผ่านคือ Somchai@2026 Role_name: 'User' // หรือ Admin, Driver ตามที่บันทึกไว้ }; // เช็คว่าค้นหาผู้ใช้งานเจอหรือไม่ if (!userFromDB) { return res.status(401).json({ message: 'ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง' }); } // 4. ตรวจสอบรหัสผ่านว่าตรงกันหรือไม่ (เทียบค่า Plaintext กับ Hash ใน DB) const isMatch = await bcrypt.compare(u_pass, userFromDB.U_pass); if (!isMatch) { return res.status(401).json({ message: 'ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง' }); } // 5. รหัสผ่านถูกต้อง -> สร้าง JWT Token โดยแนบ Role กลับไปด้วย const token = jwt.sign( { username: userFromDB.U_Name, role: userFromDB.Role_name }, SECRET_KEY, { expiresIn: '1h' } ); // 6. ส่งผลลัพธ์กลับไปให้ Client res.json({ success: true, message: 'เข้าสู่ระบบสำเร็จ', token: token, role: userFromDB.Role_name }); } catch (error) { console.error('Login Error:', error); res.status(500).json({ message: 'เกิดข้อผิดพลาดในการเชื่อมต่อฐานข้อมูล' }); } }); app.listen(5000, () => console.log('Server is running on port 5000'));