Select Git revision
app.js 3.05 KiB
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)