require('dotenv').config(); // โหลดค่าตัวแปรจากไฟล์ .env const express = require('express'); const mysql = require('mysql2/promise'); const bcrypt = require('bcryptjs'); const session = require('express-session'); const cookieParser = require('cookie-parser'); const app = express(); // ต้องมีการสร้าง express app // Middleware สำหรับ parse cookie และ JSON app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(cookieParser()); // Session configuration app.use(session({ secret: process.env.DB_SESSION || 'melon', resave: false, saveUninitialized: true, cookie: { secure: process.env.NODE_ENV === 'production', // secure เมื่อเป็น production mode httpOnly: true, // ป้องกันการเข้าถึงผ่าน JavaScript maxAge: 1000 * 60 * 60 * 24 // อายุของ session (1 วัน) } })); // Database configuration const pool = mysql.createPool({ host: process.env.DB_HOST || "10.104.20.74", port: process.env.DB_PORT || "3306", user: process.env.DB_USER || "root", password: process.env.DB_PASSWORD || "TNSypb73606", database: process.env.DB_NAME || "project", waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); // ทดสอบการเชื่อมต่อกับฐานข้อมูล pool.getConnection() .then(connection => { console.log('✅ Database connected successfully!'); connection.release(); }) .catch(err => { console.error('❌ Database connection failed:', err); process.exit(1); // หยุดโปรแกรมหากเชื่อมต่อไม่สำเร็จ }); // ตัวอย่าง route ทดสอบ app.get('/', (req, res) => { if (req.session.user) { res.sendFile(path.join(__dirname, 'public', 'index.ejs')); } else { } }); // Start the server const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`🚀 Server started on port ${port}`); });