diff --git a/controllers/tourController.js b/controllers/tourController.js index ff5719350247b303f7ce7cbee55d2014ff82ce88..d1ef75db7d5e584cafb1ddd8e6d2b2c48dd5a2a2 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 d9c0da9f42baa86c0b938b5a5d84a9d111433ea7..3ceabd6ba82bf8f8302a2d0f1eb315bb75e67a21 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;