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

---
 controllers/tourController.js |  2 +-
 models/userModel.js           | 46 +++++++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+), 1 deletion(-)
 create mode 100644 models/userModel.js

diff --git a/controllers/tourController.js b/controllers/tourController.js
index a6f5ca4..2ea52c1 100644
--- a/controllers/tourController.js
+++ b/controllers/tourController.js
@@ -1,5 +1,5 @@
 const Tour = require('../models/tourModel');
-const User = require('../models/tourModel');
+const User = require('../models/userModel');
 
 exports.getTours = async (req, res) => {
   try {
diff --git a/models/userModel.js b/models/userModel.js
new file mode 100644
index 0000000..42722a9
--- /dev/null
+++ b/models/userModel.js
@@ -0,0 +1,46 @@
+const db = require('../config/db'); // ดึง Database connection
+const bcrypt = require('bcryptjs');
+
+class User {
+    static async findOne(email) {
+        return new Promise((resolve, reject) => {
+            db.query('SELECT * FROM users WHERE email = ?', [email], (err, results) => {
+                if (err) return reject(err);
+                resolve(results[0]); // คืนค่า user ที่เจอ หรือ undefined
+            });
+        });
+    }
+
+    static async create(name, email, password) {
+        return new Promise(async (resolve, reject) => {
+            try {
+                const hashedPassword = await bcrypt.hash(password, 10);
+                db.query(
+                    'INSERT INTO users (name, email, password) VALUES (?, ?, ?)',
+                    [name, email, hashedPassword],
+                    (err, results) => {
+                        if (err) return reject(err);
+                        resolve(results.insertId); // คืนค่า ID ของ user ที่ถูกสร้าง
+                    }
+                );
+            } catch (err) {
+                reject(err);
+            }
+        });
+    }
+
+    static async comparePassword(email, password) {
+        return new Promise(async (resolve, reject) => {
+            try {
+                const user = await this.findOne(email);
+                if (!user) return resolve(false); // ไม่เจอผู้ใช้
+                const isMatch = await bcrypt.compare(password, user.password);
+                resolve(isMatch);
+            } catch (err) {
+                reject(err);
+            }
+        });
+    }
+}
+
+module.exports = User;
-- 
GitLab