Select Git revision
server.js 5.85 KiB
const express = require("express");
const path = require("path");
const session = require("express-session");
const bcrypt = require("bcrypt");
const pool = require("./config/database");
require("dotenv").config();
const app = express(); // ประกาศ app ที่นี่
const MySQLStore = require('express-mysql-session')(session);
const sessionStore = new MySQLStore({
clearExpired: true,
checkExpirationInterval: 900000, // 15 นาที
expiration: 86400000 // 24 ชั่วโมง
}, pool);
// Middleware isLoggedIn
const isLoggedIn = (req, res, next) => {
if (req.session.user) {
next();
} else {
res.redirect('/login');
}
};
const userRoutes = require("./routes/user"); // เพิ่มการเรียกใช้งาน
app.use("/user", userRoutes); // เพิ่มการใช้งาน user routes
// Session Configuration
app.use(session({
secret: process.env.SESSION_SECRET || "mysecret",
resave: false,
saveUninitialized: false,
store: sessionStore, // ใช้ MySQL Store
cookie: {
maxAge: 24 * 60 * 60 * 1000, // 24 hours
secure: false, // true ถ้าใช้ HTTPS
httpOnly: true,
},
}));
// Middleware
app.use(express.static(path.join(__dirname, "public")));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
// Middleware เช็ค Session
app.use((req, res, next) => {
console.log("Session Middleware Checked");
console.log("🔹 Session ID:", req.sessionID);
console.log("🔹 Session Data:", req.session);
next();
});
// View Engine
app.set("view engine", "ejs");
app.set("views", path.join(__dirname, "views"));
// Routes
const orderRoutes = require("./shop-routes/order");
const cartRoutes = require("./shop-routes/cart");
const indexRoutes = require("./shop-routes/index");
app.use((req, res, next) => {
res.locals.session = req.session;
next();
});
app.use("/", indexRoutes);
app.use("/cart", cartRoutes);
app.use("/order", orderRoutes);