Gitlab@Informatics

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

index.js

Blame
  • index.js 16.16 KiB
    require("dotenv").config();
    const express = require("express");
    const mysql = require("mysql2");
    const bodyParser = require("body-parser");
    const bcrypt = require("bcryptjs");
    const session = require("express-session");
    const passport = require("passport");
    const LocalStrategy = require("passport-local").Strategy;
    const flash = require("connect-flash");
    
    const app = express();
    const port = 3000;
    
    const db = mysql.createConnection({
      host: process.env.DB_HOST,
      user: process.env.DB_USER,
      password: process.env.DB_PASSWORD,
      database: process.env.DB_NAME,
    });
    
    db.connect((err) => {
      if (err) throw err;
      console.log("Connected to MySQL Database");
    });
    
    
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(express.static("public"));
    app.set("view engine", "ejs");
    
    app.use(session({ secret: "secret", resave: false, saveUninitialized: false }));
    app.use(passport.initialize());
    app.use(passport.session());
    
    app.use(flash());
    
    // ตั้งค่า Passport สำหรับ Auth
    passport.use(
      new LocalStrategy((username, password, done) => {
        db.query(
          "SELECT * FROM users WHERE username = ?",
          [username],
          async (err, results) => {
            if (err) return done(err);
            if (results.length === 0)
              return done(null, false, { message: "ไม่พบผู้ใช้" });
    
            const user = results[0];
            const match = await bcrypt.compare(password, user.password);
            if (!match) return done(null, false, { message: "รหัสผ่านไม่ถูกต้อง" });
    
            return done(null, user); // ตรวจสอบให้แน่ใจว่าได้ข้อมูลผู้ใช้ที่ถูกต้อง
          }
        );
      })
    );
    
    
    passport.serializeUser((user, done) => done(null, user.id));
    passport.deserializeUser((id, done) => {
      db.query("SELECT * FROM users WHERE id = ?", [id], (err, results) => {
        if (err) return done(err);
        done(null, results[0]); // ควรให้ข้อมูลผู้ใช้ถูกดึงมาอย่างถูกต้อง
      });
    });
    
    
    // Middleware เช็ค Login
    const isAuthenticated = (req, res, next) => {
      if (req.isAuthenticated()) {