From 01318dc92c904689928d6a1d3bbccc17c378e5a1 Mon Sep 17 00:00:00 2001
From: Atiwit Pattanapukdee <65160394@go.buu.ac.th>
Date: Sun, 16 Mar 2025 13:51:42 +0700
Subject: [PATCH] Project Round 2

---
 .env                          |  1 -
 controllers/authController.js | 20 ++++++++++----------
 routes/authRoutes.js          |  3 ++-
 server.js                     | 21 ++++++++++++++-------
 4 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/.env b/.env
index 7199f33..c344340 100644
--- a/.env
+++ b/.env
@@ -3,4 +3,3 @@ DB_PORT=3306
 DB_USER=root
 DB_PASSWORD=DCRmgr02120
 DB_NAME=tourdb
-JWT_SECRET=bankkhabb
\ No newline at end of file
diff --git a/controllers/authController.js b/controllers/authController.js
index 29e6e6b..9827ace 100644
--- a/controllers/authController.js
+++ b/controllers/authController.js
@@ -1,21 +1,16 @@
 const db = require('../config/database');
 const bcrypt = require('bcrypt');
-const jwt = require('jsonwebtoken');
 
 exports.register = async (req, res) => {
   const { name, email, password } = req.body;
 
   try {
-    // ตรวจสอบว่ามีอีเมลนี้อยู่แล้วหรือไม่
     const [existingUser] = await db.query('SELECT * FROM users WHERE email = ?', [email]);
     if (existingUser.length > 0) {
       return res.status(400).json({ message: 'Email นี้ถูกใช้ไปแล้ว' });
     }
 
-    // เข้ารหัสรหัสผ่าน
     const hashedPassword = await bcrypt.hash(password, 10);
-
-    // บันทึกข้อมูลลงฐานข้อมูล
     await db.query('INSERT INTO users (name, email, password) VALUES (?, ?, ?)', [name, email, hashedPassword]);
 
     res.status(201).json({ message: 'ลงทะเบียนสำเร็จ' });
@@ -28,23 +23,28 @@ exports.login = async (req, res) => {
   const { email, password } = req.body;
 
   try {
-    // ค้นหาผู้ใช้จากอีเมล
     const [user] = await db.query('SELECT * FROM users WHERE email = ?', [email]);
     if (user.length === 0) {
       return res.status(400).json({ message: 'อีเมลหรือรหัสผ่านไม่ถูกต้อง' });
     }
 
-    // ตรวจสอบรหัสผ่าน
     const isMatch = await bcrypt.compare(password, user[0].password);
     if (!isMatch) {
       return res.status(400).json({ message: 'อีเมลหรือรหัสผ่านไม่ถูกต้อง' });
     }
 
-    // สร้าง JWT Token
-    const token = jwt.sign({ id: user[0].id, email: user[0].email }, process.env.JWT_SECRET, { expiresIn: '1h' });
+    // เก็บ session หลังจากล็อกอิน
+    req.session.userId = user[0].id;
+    req.session.userEmail = user[0].email;
 
-    res.status(200).json({ message: 'เข้าสู่ระบบสำเร็จ', token });
+    res.status(200).json({ message: 'เข้าสู่ระบบสำเร็จ' });
   } catch (error) {
     res.status(500).json({ message: 'เกิดข้อผิดพลาด', error });
   }
 };
+
+exports.logout = (req, res) => {
+  req.session.destroy(() => {
+    res.json({ message: 'ออกจากระบบสำเร็จ' });
+  });
+};
diff --git a/routes/authRoutes.js b/routes/authRoutes.js
index a0495a7..355dbf4 100644
--- a/routes/authRoutes.js
+++ b/routes/authRoutes.js
@@ -1,9 +1,10 @@
 const express = require('express');
-const { register, login } = require('../controllers/authController');
+const { register, login, logout } = require('../controllers/authController');
 
 const router = express.Router();
 
 router.post('/register', register);
 router.post('/login', login);
+router.get('/logout', logout);
 
 module.exports = router;
diff --git a/server.js b/server.js
index 48dd3a7..97061e7 100644
--- a/server.js
+++ b/server.js
@@ -1,24 +1,31 @@
 const express = require('express');
 const bodyParser = require('body-parser');
 const dotenv = require('dotenv');
-const tourRoutes = require('./routes/tourRoutes');
+const session = require('express-session');
 const authRoutes = require('./routes/authRoutes');
+const tourRoutes = require('./routes/tourRoutes');
 
 
 dotenv.config();
 const app = express();
 
-app.set('view engine', 'ejs');
-app.use(express.static('public'));
+app.use(bodyParser.json());
 app.use(bodyParser.urlencoded({ extended: false }));
-app.use(bodyParser.json()); // รองรับ JSON requests
+
+// ใช้ session สำหรับการล็อกอิน
+app.use(session({
+  secret: 'bankkhabb', // เปลี่ยนเป็นค่า secret ของคุณ
+  resave: false,
+  saveUninitialized: true,
+  cookie: { secure: true } // ถ้าใช้ HTTPS เปลี่ยนเป็น true
+}));
 
 // Routes
-app.use('/auth', authRoutes); // เส้นทางสำหรับ Register / Login
-app.use('/', tourRoutes); // เส้นทางสำหรับการแสดงทัวร์
+app.use('/auth', authRoutes);
+app.use('/', tourRoutes);
 
 
 const PORT = process.env.PORT || 3000;
 app.listen(PORT, () => {
-  console.log(`🚀 Server is running on port ${PORT}`);
+  console.log(`Server is running on port ${PORT}`);
 });
-- 
GitLab