From 388b7cf6f9d5759951c6dad5d6cd258e8df51339 Mon Sep 17 00:00:00 2001
From: Atiwit Pattanapukdee <65160394@go.buu.ac.th>
Date: Sun, 16 Mar 2025 16:59:29 +0700
Subject: [PATCH] Project Round 2

---
 controllers/authController.js | 37 ----------------------------------
 controllers/tourController.js | 38 +++++++++++++++++++++++++++++++++++
 models/tourModel.js           | 34 +++++++++++++++++++++++++++++++
 models/user.js                | 34 -------------------------------
 routes/authRoutes.js          | 11 ----------
 routes/tourRoutes.js          |  4 ++++
 6 files changed, 76 insertions(+), 82 deletions(-)
 delete mode 100644 controllers/authController.js
 delete mode 100644 models/user.js
 delete mode 100644 routes/authRoutes.js

diff --git a/controllers/authController.js b/controllers/authController.js
deleted file mode 100644
index 59a2c9b..0000000
--- a/controllers/authController.js
+++ /dev/null
@@ -1,37 +0,0 @@
-const User = require('../models/user.js');
-
-exports.getLogin = (req, res) => {
-    res.render('login', { message: null });
-};
-
-exports.getRegister = (req, res) => {
-    res.render('register', { message: null });
-};
-
-exports.postLogin = (req, res) => {
-    const { email, password } = req.body;
-    User.comparePassword(email, password, (err, isMatch) => {
-        if (err || !isMatch) {
-            return res.render('login', { message: 'Invalid email or password' });
-        }
-        req.session.userId = email; // สามารถเก็บ ID หรืออีเมลของผู้ใช้ได้
-        res.redirect('/');
-    });
-};
-
-exports.postRegister = (req, res) => {
-    const { name, email, password, confirmPassword } = req.body;
-    if (password !== confirmPassword) {
-        return res.render('register', { message: 'Passwords do not match' });
-    }
-    User.findOne(email, (err, user) => {
-        if (user) {
-            return res.render('register', { message: 'Email already in use' });
-        }
-        User.create(name, email, password, (err, userId) => {
-            if (err) return res.render('register', { message: 'Error creating user' });
-            req.session.userId = userId;
-            res.redirect('/');
-        });
-    });
-};
diff --git a/controllers/tourController.js b/controllers/tourController.js
index e8f29ea..287f30d 100644
--- a/controllers/tourController.js
+++ b/controllers/tourController.js
@@ -18,3 +18,41 @@ exports.getTourDetails = async (req, res) => {
     res.status(500).send('เกิดข้อผิดพลาด');
   }
 };
+
+const User = require('../models/tourModel');
+
+exports.getLogin = (req, res) => {
+    res.render('login', { message: null });
+};
+
+exports.getRegister = (req, res) => {
+    res.render('register', { message: null });
+};
+
+exports.postLogin = (req, res) => {
+    const { email, password } = req.body;
+    User.comparePassword(email, password, (err, isMatch) => {
+        if (err || !isMatch) {
+            return res.render('login', { message: 'Invalid email or password' });
+        }
+        req.session.userId = email; // สามารถเก็บ ID หรืออีเมลของผู้ใช้ได้
+        res.redirect('/');
+    });
+};
+
+exports.postRegister = (req, res) => {
+    const { name, email, password, confirmPassword } = req.body;
+    if (password !== confirmPassword) {
+        return res.render('register', { message: 'Passwords do not match' });
+    }
+    User.findOne(email, (err, user) => {
+        if (user) {
+            return res.render('register', { message: 'Email already in use' });
+        }
+        User.create(name, email, password, (err, userId) => {
+            if (err) return res.render('register', { message: 'Error creating user' });
+            req.session.userId = userId;
+            res.redirect('/');
+        });
+    });
+};
diff --git a/models/tourModel.js b/models/tourModel.js
index fbcd15a..d9c0da9 100644
--- a/models/tourModel.js
+++ b/models/tourModel.js
@@ -12,4 +12,38 @@ class Tour {
   }
 }
 
+const bcrypt = require('bcryptjs');
+
+class User {
+    static findOne(email, callback) {
+        const query = 'SELECT * FROM users WHERE email = ?';
+        req.db.query(query, [email], (err, results) => {
+            if (err) return callback(err);
+            callback(null, results[0]);
+        });
+    }
+
+    static create(name, email, password, callback) {
+        const query = 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)';
+        bcrypt.hash(password, 10, (err, hashedPassword) => {
+            if (err) return callback(err);
+            req.db.query(query, [name, email, hashedPassword], (err, results) => {
+                if (err) return callback(err);
+                callback(null, results.insertId);
+            });
+        });
+    }
+
+    static comparePassword(email, password, callback) {
+        User.findOne(email, (err, user) => {
+            if (err || !user) return callback(err || 'User not found');
+            bcrypt.compare(password, user.password, (err, isMatch) => {
+                if (err) return callback(err);
+                callback(null, isMatch);
+            });
+        });
+    }
+}
+
+module.exports = User;
 module.exports = Tour;
diff --git a/models/user.js b/models/user.js
deleted file mode 100644
index 383e180..0000000
--- a/models/user.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const bcrypt = require('bcryptjs');
-
-class User {
-    static findOne(email, callback) {
-        const query = 'SELECT * FROM users WHERE email = ?';
-        req.db.query(query, [email], (err, results) => {
-            if (err) return callback(err);
-            callback(null, results[0]);
-        });
-    }
-
-    static create(name, email, password, callback) {
-        const query = 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)';
-        bcrypt.hash(password, 10, (err, hashedPassword) => {
-            if (err) return callback(err);
-            req.db.query(query, [name, email, hashedPassword], (err, results) => {
-                if (err) return callback(err);
-                callback(null, results.insertId);
-            });
-        });
-    }
-
-    static comparePassword(email, password, callback) {
-        User.findOne(email, (err, user) => {
-            if (err || !user) return callback(err || 'User not found');
-            bcrypt.compare(password, user.password, (err, isMatch) => {
-                if (err) return callback(err);
-                callback(null, isMatch);
-            });
-        });
-    }
-}
-
-module.exports = User;
diff --git a/routes/authRoutes.js b/routes/authRoutes.js
deleted file mode 100644
index 06d50fa..0000000
--- a/routes/authRoutes.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// routes/authRoutes.js
-const express = require('express');
-const router = express.Router();
-const authController = require('../controllers/authController');
-
-router.get('/login', authController.getLogin);
-router.get('/register', authController.getRegister);
-router.post('/login', authController.postLogin);
-router.post('/register', authController.postRegister);
-
-module.exports = router;
diff --git a/routes/tourRoutes.js b/routes/tourRoutes.js
index 08b172e..86458fd 100644
--- a/routes/tourRoutes.js
+++ b/routes/tourRoutes.js
@@ -4,5 +4,9 @@ const tourController = require('../controllers/tourController');
 
 router.get('/', tourController.getTours);
 router.get('/tour/:id', tourController.getTourDetails);
+router.get('/login', tourController.getLogin);
+router.get('/register', tourController.getRegister);
+router.post('/login', tourController.postLogin);
+router.post('/register', tourController.postRegister);
 
 module.exports = router;
-- 
GitLab