diff --git a/controllers/authController.js b/controllers/authController.js deleted file mode 100644 index 59a2c9bf35c78d46e4fc3549b2cd6793b4ae963a..0000000000000000000000000000000000000000 --- a/controllers/authController.js +++ /dev/null @@ -1,37 +0,0 @@ -const User = require('../models/user.js'); - -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('/'); - }); -}; - -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('/'); - }); - }); -}; diff --git a/controllers/tourController.js b/controllers/tourController.js index e8f29eab8efcc8f9ad44cb808cd565fffc8bdee4..287f30dfde9e9a17c0696096399627c3d60d7472 100644 --- a/controllers/tourController.js +++ b/controllers/tourController.js @@ -18,3 +18,41 @@ exports.getTourDetails = async (req, res) => { res.status(500).send('เกิดข้อผิดพลาด'); } }; + +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('/'); + }); +}; + +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('/'); + }); + }); +}; diff --git a/models/tourModel.js b/models/tourModel.js index fbcd15aff29c5a5554aace223b77c95118293cef..d9c0da9f42baa86c0b938b5a5d84a9d111433ea7 100644 --- a/models/tourModel.js +++ b/models/tourModel.js @@ -12,4 +12,38 @@ class Tour { } } +const bcrypt = require('bcryptjs'); + +class User { + static findOne(email, callback) { + const query = 'SELECT * FROM users WHERE email = ?'; + req.db.query(query, [email], (err, results) => { + if (err) return callback(err); + callback(null, results[0]); + }); + } + + static create(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) => { + if (err) return callback(err); + callback(null, results.insertId); + }); + }); + } + + static comparePassword(email, password, callback) { + User.findOne(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); + }); + }); + } +} + +module.exports = User; module.exports = Tour; diff --git a/models/user.js b/models/user.js deleted file mode 100644 index 383e18067bf60c91c71c9079167bce0201e423a2..0000000000000000000000000000000000000000 --- a/models/user.js +++ /dev/null @@ -1,34 +0,0 @@ -const bcrypt = require('bcryptjs'); - -class User { - static findOne(email, callback) { - const query = 'SELECT * FROM users WHERE email = ?'; - req.db.query(query, [email], (err, results) => { - if (err) return callback(err); - callback(null, results[0]); - }); - } - - static create(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) => { - if (err) return callback(err); - callback(null, results.insertId); - }); - }); - } - - static comparePassword(email, password, callback) { - User.findOne(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); - }); - }); - } -} - -module.exports = User; diff --git a/routes/authRoutes.js b/routes/authRoutes.js deleted file mode 100644 index 06d50fa461f8358b8e87420f4ee7cc5201ea81b5..0000000000000000000000000000000000000000 --- a/routes/authRoutes.js +++ /dev/null @@ -1,11 +0,0 @@ -// routes/authRoutes.js -const express = require('express'); -const router = express.Router(); -const authController = require('../controllers/authController'); - -router.get('/login', authController.getLogin); -router.get('/register', authController.getRegister); -router.post('/login', authController.postLogin); -router.post('/register', authController.postRegister); - -module.exports = router; diff --git a/routes/tourRoutes.js b/routes/tourRoutes.js index 08b172e30df637e9c49d07819a46a5d25731c8f8..86458fd915ce4b9eb3035c789cdf1c3016ed6848 100644 --- a/routes/tourRoutes.js +++ b/routes/tourRoutes.js @@ -4,5 +4,9 @@ const tourController = require('../controllers/tourController'); router.get('/', tourController.getTours); router.get('/tour/:id', tourController.getTourDetails); +router.get('/login', tourController.getLogin); +router.get('/register', tourController.getRegister); +router.post('/login', tourController.postLogin); +router.post('/register', tourController.postRegister); module.exports = router;