Gitlab@Informatics

Skip to content
Snippets Groups Projects
Commit 388b7cf6 authored by 65160394's avatar 65160394
Browse files

Project Round 2

parent 2233b76e
No related branches found
No related tags found
No related merge requests found
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('/');
});
});
};
......@@ -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('/');
});
});
};
......@@ -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;
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;
// 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;
......@@ -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;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment