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

---
 controllers/tourController.js | 45 ++++++++++-------------------------
 models/tourModel.js           | 17 +++++++------
 2 files changed, 23 insertions(+), 39 deletions(-)

diff --git a/controllers/tourController.js b/controllers/tourController.js
index 287f30d..e861f86 100644
--- a/controllers/tourController.js
+++ b/controllers/tourController.js
@@ -21,38 +21,19 @@ exports.getTourDetails = async (req, res) => {
 
 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('/');
-    });
-};
+  const { email, password } = req.body;
 
-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('/');
-        });
-    });
+  User.comparePassword(req.db, email, password, (err, isMatch) => {
+      if (err) {
+          return res.status(500).json({ error: 'Error checking password' });
+      }
+      if (isMatch) {
+          // รหัสผ่านถูกต้อง
+          res.send('Login successful');
+      } else {
+          // รหัสผ่านไม่ตรง
+          res.status(400).send('Invalid credentials');
+      }
+  });
 };
diff --git a/models/tourModel.js b/models/tourModel.js
index d9c0da9..b8413ae 100644
--- a/models/tourModel.js
+++ b/models/tourModel.js
@@ -15,31 +15,34 @@ class Tour {
 const bcrypt = require('bcryptjs');
 
 class User {
-    static findOne(email, callback) {
+    // ค้นหาผู้ใช้จากอีเมล
+    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) {
+    // สร้างผู้ใช้ใหม่และเก็บรหัสผ่านที่เข้ารหัส
+    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) => {
+    // เปรียบเทียบรหัสผ่านที่ผู้ใช้กรอกกับรหัสผ่านที่เก็บในฐานข้อมูล
+    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);
-                callback(null, isMatch);
+                callback(null, isMatch);  // isMatch จะเป็น true ถ้ารหัสผ่านตรงกัน
             });
         });
     }
-- 
GitLab