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

---
 controllers/tourController.js | 32 ++++++++++++++++++++------------
 models/tourModel.js           | 16 ++++++++++------
 2 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/controllers/tourController.js b/controllers/tourController.js
index ff57193..d1ef75d 100644
--- a/controllers/tourController.js
+++ b/controllers/tourController.js
@@ -30,30 +30,38 @@ exports.getRegister = (req, res) => {
 };
 
 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('/');
-    });
+  const { email, password } = req.body;
+  User.comparePassword(req.db, email, password, (err, isMatch) => {
+      if (err || !isMatch) {
+          return res.render('login', { message: 'Invalid email or password' });
+      }
+      req.session.userId = email; // เก็บอีเมลของผู้ใช้ไว้ใน session
+      res.redirect('/');
+  });
 };
 
 exports.postRegister = (req, res) => {
   const { name, email, password, confirmPassword } = req.body;
-  console.log(password, confirmPassword); // ดูค่าที่ส่งเข้ามา
 
   if (password !== confirmPassword) {
       return res.render('register', { message: 'Passwords do not match' });
   }
 
-  User.findOne(email, (err, user) => {
+  // ส่ง db เป็นพารามิเตอร์ให้กับ User.findOne
+  User.findOne(req.db, email, (err, user) => {
+      if (err) {
+          return res.render('register', { message: 'Error checking email' });
+      }
+
       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' });
+
+      // ถ้าไม่มีผู้ใช้ ก็ทำการสร้างผู้ใช้ใหม่
+      User.create(req.db, name, email, password, (err, userId) => {
+          if (err) {
+              return res.render('register', { message: 'Error creating user' });
+          }
           req.session.userId = userId;
           res.redirect('/login');
       });
diff --git a/models/tourModel.js b/models/tourModel.js
index d9c0da9..3ceabd6 100644
--- a/models/tourModel.js
+++ b/models/tourModel.js
@@ -15,27 +15,30 @@ class Tour {
 const bcrypt = require('bcryptjs');
 
 class User {
-    static findOne(email, callback) {
+    // รับ db จากพารามิเตอร์
+    static findOne(db, email, callback) {
         const query = 'SELECT * FROM users WHERE email = ?';
-        req.db.query(query, [email], (err, results) => {
+        db.query(query, [email], (err, results) => {
             if (err) return callback(err);
             callback(null, results[0]);
         });
     }
 
-    static create(name, email, password, callback) {
+    // รับ db จากพารามิเตอร์
+    static create(db, 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) => {
+            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) => {
+    // รับ db จากพารามิเตอร์
+    static comparePassword(db, email, password, callback) {
+        User.findOne(db, email, (err, user) => {
             if (err || !user) return callback(err || 'User not found');
             bcrypt.compare(password, user.password, (err, isMatch) => {
                 if (err) return callback(err);
@@ -46,4 +49,5 @@ class User {
 }
 
 module.exports = User;
+
 module.exports = Tour;
-- 
GitLab