From 388b7cf6f9d5759951c6dad5d6cd258e8df51339 Mon Sep 17 00:00:00 2001 From: Atiwit Pattanapukdee <65160394@go.buu.ac.th> Date: Sun, 16 Mar 2025 16:59:29 +0700 Subject: [PATCH] Project Round 2 --- controllers/authController.js | 37 ---------------------------------- controllers/tourController.js | 38 +++++++++++++++++++++++++++++++++++ models/tourModel.js | 34 +++++++++++++++++++++++++++++++ models/user.js | 34 ------------------------------- routes/authRoutes.js | 11 ---------- routes/tourRoutes.js | 4 ++++ 6 files changed, 76 insertions(+), 82 deletions(-) delete mode 100644 controllers/authController.js delete mode 100644 models/user.js delete mode 100644 routes/authRoutes.js diff --git a/controllers/authController.js b/controllers/authController.js deleted file mode 100644 index 59a2c9b..0000000 --- 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 e8f29ea..287f30d 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 fbcd15a..d9c0da9 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 383e180..0000000 --- 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 06d50fa..0000000 --- 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 08b172e..86458fd 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; -- GitLab