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