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