require('dotenv').config(); const express = require('express'); const session = require('express-session'); const path = require('path'); const cors = require("cors"); const bodyParser = require('body-parser'); const db = require('./db'); const authRoutes = require('./routes/auth'); const postRoutes = require('./routes/posts'); // เส้นทางสำหรับบทความ const settingsRoutes = require('./routes/settings'); const app = express(); // Middleware app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(bodyParser.json()); // ตั้งค่า Session app.use(session({ secret: process.env.SESSION_SECRET || 'beaglelover', resave: false, saveUninitialized: false })); app.use((req, res, next) => { res.locals.user = req.session.user; next(); }); // เสิร์ฟไฟล์สแตติก app.use(express.static(path.join(__dirname, 'public'))); // ตั้งค่า View Engine app.set('view engine', 'ejs'); app.set('views', path.join(__dirname, 'views')); app.use('/auth', authRoutes); app.use('/settings', settingsRoutes); app.use('/posts', postRoutes); // Middleware ตรวจสอบการล็อกอิน // ---------------------- เส้นทางหลัก ---------------------- // หน้า Login app.get('/', (req, res) => { res.render('auth/login', { error: null }); }); // หน้า Index (เฉพาะผู้ที่ล็อกอิน) // ตัวอย่างใน app.js app.get('/index', async (req, res) => { if (!req.session.user) return res.redirect('/'); try { // ดึง posts จากฐานข้อมูล (หากต้องการ) const [posts] = await db.query( `SELECT p.*, u.username, c.name AS category_name FROM posts p JOIN users u ON p.user_id = u.id JOIN categories c ON p.category_id = c.id ORDER BY p.created_at DESC` ); res.render('pages/index', { posts, user: req.session.user }); } catch (error) { console.error('Error fetching posts:', error); res.render('pages/index', { posts: [], user: req.session.user }); } }); // ค้นหาบทความ (ค้นหาจาก title) app.get('/index/search', async (req, res) => { if (!req.session.user) return res.redirect('/'); const { keyword } = req.query; try { const [posts] = await db.query( `SELECT p.*, u.username, c.name AS category_name FROM posts p JOIN users u ON p.user_id = u.id JOIN categories c ON p.category_id = c.id WHERE p.title LIKE ? ORDER BY p.created_at DESC`, [`%${keyword}%`] ); res.render('pages/index', { posts, user: req.session.user, keyword }); } catch (error) { console.error('Error searching posts:', error); res.render('pages/index', { posts: [], user: req.session.user, keyword: '' }); } }); // เริ่มต้นเซิร์ฟเวอร์ const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Server is running on port ${port}`); });