Gitlab@Informatics

Skip to content
Snippets Groups Projects
Select Git revision
  • b59744e84ab0724eabc80983ce39431a56179963
  • main default protected
  • master
3 results

server.js

Blame
  • server.js 5.32 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();
    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');
        }
    };
    
    // Session Configuration
    app.use(session({
        secret: process.env.SESSION_SECRET || "mysecret",
        resave: false,
        saveUninitialized: false,
        store: sessionStore,
        rolling: true, // ต่ออายุ session ทุก request
        cookie: {
            maxAge: 24 * 60 * 60 * 1000, // 24 hours
            secure: process.env.NODE_ENV === "production", // ใช้ secure ถ้าเป็น production
            httpOnly: true,
            sameSite: "strict"
        },
    }));
    
    // 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);